在matlab中无需for循环处理矩阵
我在matlab中得到了一个矩阵Nx3维。我想计算矩阵第n行的范数。但是,我希望在不使用for循环的情况下执行范数计算。有没有办法做到这一点?我的for循环代码:在matlab中无需for循环处理矩阵,matlab,loops,matrix,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 您可以这样做: x=[2 3 4;2 3 2;4 5 6]; magnit
for i=1:length(accelerometer)
magnitude(i,:) = sqrt(accelerometer(i,1)^2 + accelerometer(i,2)^2+ accelerometer(i,3)^2);
end
您可以这样做:
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
您可以这样做:
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
让
A
成为您的矩阵
- 如果“每第n行”是指行
,1
,n+1
,…:2*n+1
result = sqrt(sum(abs(A(1:n:end,:)).^2, 2));
- 如果它只是指“每一行”:
在任何一种情况下,如果
A
是真实的,您可以删除abs
让A
成为您的矩阵
- 如果“每第n行”是指行
,1
,n+1
,…:2*n+1
result = sqrt(sum(abs(A(1:n:end,:)).^2, 2));
- 如果它只是指“每一行”:
A
是真实的,您可以删除abs
,该功能也可以帮助您。调用输入矩阵的A
和n
行步骤:
result = sqrt(dot(A(1:n:end,:), A(1:n:end,:), 2));
但是请注意,如果A
是复杂的,那么结果将是复杂的,它只相当于一个实矩阵。该函数也可能对您有所帮助。调用输入矩阵的A
和n
行步骤:
result = sqrt(dot(A(1:n:end,:), A(1:n:end,:), 2));
但是请注意,如果
A
是复杂的,那么结果将是复杂的,它只相当于一个实矩阵。如何定义一行的大小?你的意思是那一行中每个数字的大小吗?向量每个dim的平方和的根。仅供参考:你如何定义一行的大小?你的意思是那一行中每个数字的大小吗?向量每个dim的平方和的根。仅供参考:现在我想要的是不。我不明白。我的解决方案是你想要的吗?对不起,我的错误,你的解决方案没有返回与我发布的结果相同的结果。好的,现在我明白你的意思了,一开始这个代码不存在。路易斯密码似乎是这个案子的正确答案。不,现在是我想要的。我不明白。我的解决方案是你想要的吗?对不起,我的错误,你的解决方案没有返回与我发布的结果相同的结果。好的,现在我明白你的意思了,一开始这个代码不存在。在这种情况下,Luis代码似乎是正确的。步骤n是不必要的。@JoseRamon从您问题中的措辞来看,它似乎是正确的。我已经编辑了答案步骤n是不必要的。@JoseRamon从你问题的措辞来看,似乎是这样。我已经编辑了答案