【问题标题】:Prevent transposing array when using Java LinkedList in MATLAB在 MATLAB 中使用 Java LinkedList 时防止转置数组
【发布时间】:2018-02-25 19:53:24
【问题描述】:

我正在使用 MATLAB R2015a。在 MATLAB 环境中使用 Java LinkedList 时,添加行向量然后检索它们似乎会将它们转置为列向量。例如,

import java.util.LinkedList

x = [285   252   100    67]
y = [280   252   107    71;
     374   157    72    48]
z = [284   253   103    68]

LL = LinkedList();

LL.add(x);
LL.add(y);
LL.add(z);

xn = LL.remove()
yn = LL.remove()
zn = LL.remove()

xn, yn and zn 产生以下结果:

xn =

   285
   252
   100
    67


yn =

   280   252   107    71
   374   157    72    48


zn =

   284
   253
   103
    68

仅当原始向量严格为1 x n 时才会发生这种情况。有没有办法防止这种情况发生而不在每个remove() 末尾添加检查条件?

【问题讨论】:

  • x = reshape([285 252 100 67],1,1,[]) 也会发生这种情况。因此,add 方法似乎从添加的数组中删除了任何前导维度(在add 之后检查LL.toArray),并且与Matlab 不同,即使x 是一行,它也会这样做
  • LL.add({x});LL.add(@()x); 在 Octave 又名 javaMethod ("add", LL, {x}) 中工作。所以xn=LL.remove();out = xn{1}xn=LL.remove();out = xn();

标签: java arrays matlab linked-list


【解决方案1】:

如果链表恰好是 ascii,我建议只逐行读取文件,并使用“strsplit()”之类的东西来分隔每一行的值,并将它们附加到带有指定的列。我使用这种方法来获取 Linux/UNIX 环境变量值等。

这也可以用二进制数据来完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    相关资源
    最近更新 更多