在matlab中处理矩阵而不进行循环

时间:2015-06-09 12:14:46

标签: matlab loops matrix

我在matlab中有一个矩阵Nx3维度。我想计算矩阵的每第n行的范数。但是我想在不使用for循环的情况下执行规范计算。有办法吗?我的for循环代码:

for i=1:length(accelerometer)
   magnitude(i,:) = sqrt(accelerometer(i,1)^2 + accelerometer(i,2)^2+   accelerometer(i,3)^2);
end

3 个答案:

答案 0 :(得分:3)

A成为你的矩阵。

  • 如果"每第n行"表示行1n+12*n+1,...:

    result = sqrt(sum(abs(A(1:n:end,:)).^2, 2));
    
  • 如果它只是意味着"每一行":

    result = sqrt(sum(abs(A).^2, 2));
    

在任何一种情况下,如果A是真实的,您可以删除abs

答案 1 :(得分:1)

你可以这样做:

x=[2 3 4;2 3 2;4 5 6];

magnitude=sum(x')';

ans =

     9
     7
    15

如果x在任何时候都很复杂:

x=[2 3 4;2 3 2;4 5 6+1i];

magnitude_Complex=abs(sum(x')');


ans =

    9.0000
    7.0000
   15.0333

答案 2 :(得分:1)

operator<<功能也可以帮助您。调用A输入矩阵,n行步骤:

result = sqrt(dot(A(1:n:end,:), A(1:n:end,:), 2));

但请注意,如果A很复杂,结果会很复杂,只相当于dot的真实矩阵。