1

我想知道在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
4

2 回答 2

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]
...
于 2013-09-05T20:05:16.337 回答
0

可以使用:

x=[1:10]'*b

然后

x(1,:)

x(2,:)

ETC

于 2013-09-05T17:39:22.780 回答