MATLAB中可变长度向量的向量

时间:2012-09-21 06:50:17

标签: matlab

我想在数组中总结几个不同大小的向量。每当其中一个向量从我的程序中删除时,我想将它附加到我的数组中。像这样:

array = [array, vector];

最后我想让这个数组成为函数的输出。但它给了我错误的结果。这可以用MATLAB吗?

谢谢和亲切的问候, 达米安

1 个答案:

答案 0 :(得分:5)

好的,鉴于我们正在处理不同大小的列向量,您不能将它们全部放在数值数组中,因为数值数组必须是矩形的。如果你真的想把它们放在数值数组中,那么数组的列长度需要是最长向量的长度,你必须用NaN填充较短的向量。

鉴于此,正如chaohuang在评论中暗示的那样,更好的解决方案是使用单元阵列,并在每个单元格中存储一个向量。问题是你事先不知道会有多少向量。我知道这个问题的常用方法如下(但如果有人有更好的想法,我很想学习!):

UpperBound = SomeLargeNumber;
Array = cell(1, UpperBound);
Counter = 0;
while SomeCondition
    Counter = Counter + 1;
    if Counter > UpperBound
        error('You did not choose a large enough upper bound!');
    end
    %#Create your vector here
    Array{1, Counter} = YourVectorHere;

end
Array = Array(1, 1:Counter);

换句话说,事先选择一些上限,确定你不会在循环中上面,然后在循环完成后将单元格数组缩小到大小。另外,如果您选择上限太小,我会设置一个错误陷阱!

哦,顺便说一下,我刚才在你的问题中注意到“总结几个载体”这几个字。这是一个比喻,还是你真的想在某个地方进行sum操作?