2016-09-16 13 views
0

私は、x_valuesy_valuesの2つのベクトルを持っていますが、どちらも同じ長さですが、はx_valuesから計算されます。 y_valuesの最大要素を取り、x_valuesの対応する要素を選択するにはどうすればよいですか?例えば2つのベクトルxとy。どのようにしてyの最大要素を指し、xの対応する要素を選ぶのですか?

y_valuesの最大要素が31ある場合、プログラムは5としてx_values内の対応する値を返すべきです。ここに私の努力は次のとおりです。

function maxValue = maximumValue() 
x_values = -5:5; 
y_values = []; 

for i = x_values 
    y = i^3 - 3*i^2 - 3*i - 4; 
    y_values = [y_values, y]; 
end 

for j = 1:length(y_values) 
    if max(y_values(j)) 
    maxValue = x_values(j); 
    end 
end 

エンド

答えて

3
>> x_values = -5:5; 
>> y_values = x_values.^3 - 3 * x_values.^2 - 3 * x_values - 4; 
>> [ymax, index_ymax] = max(y_values); 
>> disp(x_values(index_ymax)) 

.^は、要素ごとの累乗です。

max()は2つの値を返すことができます。最初の値は最大値で、2番目の値は対応するインデックスです。

>> help max 
max Largest component. 
    For vectors, max(X) is the largest element in X. For matrices, 
    max(X) is a row vector containing the maximum element from each 
    column. For N-D arrays, max(X) operates along the first 
    non-singleton dimension. 

    [Y,I] = max(X) returns the indices of the maximum values in vector I. 
    If the values along the first non-singleton dimension contain more 
    than one maximal element, the index of the first one is returned. 

私の提案は、MATLAB-ishです。

+0

Jeonありがとうございます。はい、私はもっとMATLAB-ishingです – user7479

関連する問題