在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的每一行中找到最大值?
在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的每一行中找到最大值?
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
功能,但我想你有一個原因...
爲什麼要插入附加行'c(n)= A(n,1)',而不是簡單地將'c'初始化爲'A(:, 1)'? – 2013-04-08 12:11:30
@EitanT我試圖儘可能地反映OP的代碼;但同意你的調整是完全有效的,並繞過多餘的線。相應地更新了答案。 – Floris 2013-04-08 13:24:22
你知道如何找到一維數組的最大值嗎? – 2013-04-08 12:10:18
,你爲什麼要這麼做? – Shai 2013-04-08 13:33:08
@Eitan,不,我不知道。算法上我變得困惑。 – remarkableearth 2013-04-10 17:34:05