1

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

array = [array, vector];

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

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

4

1 回答 1

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某个地方进行手术?

于 2012-09-21T07:53:21.777 回答