2017-06-20 2 views
0

In MATLAB gegeben Vektoren A und B, ich mag eine vektorisiert Lösung zu finden, den gesamten Vektor mit dem größten n-te Elemente (d 4.) auszuwählen.Wie wählen Sie Vektor mit dem größten n-te Elemente

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

max ich mit dem größten 4. Element zwischen den beiden Vektoren finden kann, aber ich möchte es ganz zu übernehmen.

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

was ist, wenn A passieren soll (4) == B (4)? –

Antwort

3

Sie können den zweiten Rückgabewert von max, dh den Index verwenden, wie folgt:

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

Für Menschen zu lieben einzelne Linie Lösungen

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

oder Definieren Sie es als eine Funktion

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

und Sie werden in der Lage es als eine einzige Zeile zu verwenden:

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

jede Möglichkeit, diese Lösung in einer einzigen Zeile zu vektorisieren? – AJMA

+3

@AJMA Single-Line-Codierung ist keineswegs _Vectorization_, es ist nur kompaktes Schreiben. Es ist besser, den Code klarer und nicht so kompakt zu schreiben. – EBH

Verwandte Themen