我想知道在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
正如 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]
...
可以使用:
x=[1:10]'*b
然后
x(1,:)
x(2,:)
ETC