matlab中的for循环存储值(标量时间向量数组)

时间:2013-09-05 17:31:22

标签: matlab loops for-loop vector scalar

我想在matlab中了解如何完成以下任务:

如果我有一个类似于以下行的for循环:

b=[1 2 3 4];
for i=1:1:10
x=i.*b
end

代码迭代i次乘以标量乘以向量b;但是如果我放入for循环x(i)以存储每次迭代的结果向量,我就不会得到我正在寻找的东西。得到的是:

x(1)=[1 2 3 4]
x(2)=[2 4 6 8]
... and so on

2 个答案:

答案 0 :(得分:1)

与P0W的答案一样,你需要一个二维矩阵来存储“矢量矢量”。您不能使用x(n),因为它解决了一维矩阵中的单个值。

另一种解决方案,可能更接近你想要的,是使用单元格一个单元格数组,它允许创建一个包含混合类型值的矩阵(所以你也可以放置向量!)。它们与常规数组非常相似,但您需要大括号:

b=[1 2 3 4];
x = cell(1,10);   % preallocating, not necessary but always a good idea

for i = 1:10
    x{i} = i*b  % notice the curly bracket with the index
end

注意:您不需要.*运算符,因为它是标量矩阵乘法。

您可以使用

取回您的值
x{1} = [1 2 3 4]    % again curly brackets
x{2} = [2 4 6 8]
...

答案 1 :(得分:0)

可以使用:

x=[1:10]'*b

然后

x(1,:)

x(2,:)