2017-06-20 114 views
0

在MATLAB中,給定矢量AB,我想找到一個矢量化解來選擇具有最大第n個元素(即第4個)的整個矢量。如何選擇具有最大第n個元素的矢量

A = [1, 4, 8, 10]; 
B = [2, 15, 2, 11]; 

使用max我可以找到兩個向量之間最大的第4個元素,但我想完全採用它。

C = max(A(4), B(4)); 
+0

應該發生什麼,如果A(4)== B(4)? –

回答

3

您可以使用max第二返回值,即指數,如下:

X = [A; B]; 
[~, index] = max(X(:, 4)); 
C = X(index, :); 

對於人們熱愛單行方案

C = A * (A(4) > B(4)) + B * (B(4) > A(4)); 

或只是將其定義爲函數

function getVectorWithLargestNthElement (A, B, N) 
    X = [A; B]; 
    [~, index] = max(X(:, N)); 
    C = X(index, :); 
end 

,你就可以把它作爲一個單行:

C = getVectorWithLargestNthElement (A, B, 4) 
+0

任何可能將該解決方案矢量化爲一行? – AJMA

+3

@AJMA單行編碼決不是_vectorization_,它只是簡潔的書寫。最好用更清晰的方式編寫代碼,而不是最簡潔的方式。 – EBH