2014-02-10 84 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