2013-04-08 44 views
0

在MATLAB,如果我有:如何在矩陣w/o max函數的每一行中找到最大值?

A = [1 2 3 4; 2 3 4 5; 4 8 9 10]; 
[N M] = size(A); 
c = zeros(N,1); 
for n=1:N; 
    for m=1:M; 
     c(n) = ?; 
    end 
end 

我怎麼更換?那麼在沒有使用最大函數的情況下,它會在A的每一行中找到最大值?

+0

你知道如何找到一維數組的最大值嗎? – 2013-04-08 12:10:18

+0

,你爲什麼要這麼做? – Shai 2013-04-08 13:33:08

+0

@Eitan,不,我不知道。算法上我變得困惑。 – remarkableearth 2013-04-10 17:34:05

回答

0
A = [1 2 3 4; 2 3 4 5; 4 8 9 10]; 
[N M] = size(A); 
c = A(:,1); % modified per Eitan's suggestion 
for n=1:N; 
    % c(n) = A(n,1); % commented out per Eitan's suggestion. 
    for m=1:M; 
     c(n) = (c(n)<A(n,m))*A(n,m) + (c(n)>=A(n,m))*c(n); 
    end 
end 

只有一個邏輯語句爲真,因此最小值將被更新或保持不變。超級尷尬...但感謝Eitan T,不再需要額外的線路。一個願作內部循環開始於2,但沒有必要爲這個代碼工作(並最大限度地減少從給定的原始代碼所需要的變化。)

不知道爲什麼你會永遠使用min功能,但我想你有一個原因...

+0

爲什麼要插入附加行'c(n)= A(n,1)',而不是簡單地將'c'初始化爲'A(:, 1)'? – 2013-04-08 12:11:30

+1

@EitanT我試圖儘可能地反映OP的代碼;但同意你的調整是完全有效的,並繞過多餘的線。相應地更新了答案。 – Floris 2013-04-08 13:24:22

相關問題