【问题标题】:edit rows in a matrix, MatLab编辑矩阵中的行,MatLab
【发布时间】:2013-01-14 23:21:19
【问题描述】:

我有一个矩阵 A,我想使用 for 循环将每一行乘以 2。

A = [1 2 3; 
     4 5 6; 
     7 8 9];

所以基本上matlab应该输出:

[2  4  6; 
 8  10 12; 
 14 16 18];

我试过了:

A = [1 2 3 ; 4 5 6  ; 7 8 9];
for i=1:3
    x= A([i],:)*2;
end 

x 输出为[14 16 18]

我怎样才能得到我想要的输出?

【问题讨论】:

    标签: matlab matrix rows


    【解决方案1】:

    使用 for 循环:

    for n=1:size(A,1)
        x(n,:)=2*A(n,:);
    end
    

    但不使用 for 循环更容易获得相同的结果:

    x=2*A;
    

    【讨论】:

      【解决方案2】:

      认为每次进入 for 循环时,您的答案都会被覆盖。你也许可以这样做:

       for i=1:3
           x([i],:) = A([i],:)*2;
       end  
      

      【讨论】:

        【解决方案3】:

        在 MAtlab 中,For 循环的效率非常低。我建议您在使用 matlab 时学会解决它。对于这样的小事,您可能看不到任何不利影响,但对于任何大规模的事,都不会。

        无论如何,对于您的问题,您可以使用x = A*2。这应该会给你你的解决方案。

        【讨论】:

        • 这不再准确了。最新版本的 Matlab 中的 JIT 编译器已经改进到循环比向量化代码更快的程度。很难事先知道哪个会更快,因此最好的方法是以最自然的方式编写代码,对其进行分析,然后如果存在瓶颈,请尝试从循环切换到矢量化(或其他方式)。 ...另见matlabtips.com/matlab-is-no-longer-slow-at-for-loops
        • 啊,好的,谢谢。还有一件事,如果我只想将第 1 列乘以 2,我该怎么做?
        • @natan:不知道,这很有趣:)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多