【问题标题】:Looking for a vectorized replacement of for loop for vector/matrix manipulations寻找用于向量/矩阵操作的 for 循环的向量化替换
【发布时间】:2016-10-17 23:07:50
【问题描述】:

我有一个 nx2 矩阵 M,我想从它的每一行中减去一个向量 p。喜欢:

M(1,1)=M(1,1)-p(1); M(1,2)=M(1,2)-p(2);
M(2,1)=M(2,1)-p(1); M(2,2)=M(2,2)-p(2);

等等

然后我想将修改后的M 折叠成一个向量N 之类的规范

N(1)=norm(M(1,:));
N(2)=norm(M(2,:));

等等

我可以轻松地编写一个for 循环来执行此操作。有没有一种矢量化的方式可以立即做到这一点?

【问题讨论】:

    标签: matlab vectorization


    【解决方案1】:

    您可以使用bsxfun 并手动计算范数:

    % Subtract P
    M = bsxfun(@minus, M, p);
    
    % Calculate the norm
    N = sum(M .^ 2, 2) .^ 0.5;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 2018-05-10
      • 1970-01-01
      • 2013-07-10
      • 2020-10-25
      • 2021-09-18
      • 1970-01-01
      相关资源
      最近更新 更多