2014-02-10 59 views
1

我有一个有3行1000列的输入矩阵。每列代表和x,y,z变量。我想查找每列的大小并将其存储在具有1行和1000列的输出矩阵中。矩阵中每列的大小

这是我目前的尝试,但它似乎并不奏效:

output(1,:) = norm(input(3,:)); 

我输入矩阵的样子:

x1, x2,...,x1000 
y1, y2,...,y1000 
z1, z2,...,z1000 

我希望我的输出矩阵的样子:

[magnitude(x1,y1,z1), magnitude(x2,y2,z2),...,magnitude(x1000,y1000,z1000)] 

任何帮助将不胜感激。

回答

1

norm(input(3,:))会给你第三行1000个元素的标准。

简单的解决方案是运行一个for循环。

output = zeros(1,1000); %Preallocate space 
for i = 1:length(output) 
    output(i) = norm(input(:, i)); 
end 
0

MATLAB的标准函数只适用于单个向量。设A是你想要找到规范的列的矩阵的名称。那么这个命令执行任务:

norm_A = sqrt(sum(A.*A)); 

下面是一个例子:

>> A = [1:5; 1:5; 1:5] 

A = 

    1  2  3  4  5 
    1  2  3  4  5 
    1  2  3  4  5 

>> norm_A = sqrt(sum(A.*A)) 

norm_A = 

    1.7321 3.4641 5.1962 6.9282 8.6603