我想在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
答案 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,:)
等