2017-06-20 91 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