【问题标题】:for loop in matlab storing values (scalar times vector array)matlab中的for循环存储值(标量时间向量数组)
【发布时间】:2013-09-09 15:39:43
【问题描述】:

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

【问题讨论】:

    标签: matlab loops for-loop vector scalar


    【解决方案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]
    ...
    

    【讨论】:

      【解决方案2】:

      可以使用:

      x=[1:10]'*b

      然后

      x(1,:)

      x(2,:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-08-16
        • 2013-12-22
        • 2016-08-16
        • 2012-09-12
        • 1970-01-01
        • 1970-01-01
        • 2014-05-16
        相关资源
        最近更新 更多