簡體   English   中英

使用Matlab,如何找到一定范圍內的最大值?

[英]using Matlab, how to find the maximum value over a certain range?

我想知道編碼以找到某個范圍內的最大值。 我已經編碼如下。

f=f'
ac_yyyy_f=ac_yyyy_f'
[row,col] = ind2sub(size(ac_yyyy_f),find(ac_yyyy_f==max(ac_yyyy_f)))

但是問題是,有時我的代碼選擇的Y軸最大值不是我想要的。 X軸的范圍是0到100000,我希望最大值在20000到100000之間。問題是有時最大值會顯示在0到20000的范圍內。我如何解決這個問題?

使用max()函數:

%let R be your range of values
R = [2 1 7 4];
[value, index] = max(R);

在上面的示例中, value將為7index將為3

有關更多信息: http : //fr.mathworks.com/help/matlab/ref/max.html

我使用隨機整數向量來代表您的函數輸出。

a = floor(rand(1,100000)*100);
[val, idx] = max(a(20000:100000));

您想在此處使用max函數查找最大值而不是查找。 現在,任務的另一部分是從矩陣的特定部分獲取最大值。 您可以通過使用一系列值對它進行索引來僅將向量或矩陣的子集傳遞給函數。 請注意, idx為您提供vala(20000:100000) 如果您需要中的位置a ,你需要使用idx+19999

另外,您應該看一下矩陣索引參考-有許多不同而有趣的方法來索引矩陣-因為索引是matlab最重要的功能之一。

這是max函數的參考:
http://www.mathworks.com/help/matlab/ref/max.html
以及索引的參考:
http://www.mathworks.com/help/matlab/math/matrix-indexing.html

您可以將max函數與數組的子集一起使用。 它將返回最大值以及它所在的索引。 確保更正它根據您想要的范圍返回給您的索引。 像這樣:

%//create an array of 100,000 values to play with.
f=floor(rand(100000,1).*100);

%//find the max between f(20000) and f(100000)
[myMax, I] = max( f(20000:100000) );

%//correct the index based on where we started looking
%//for the max. Subtract 1 because it's MATLAB!
myIndex = I+20000-1;

結果是:

>> myMax
myMax =
    99
>> myIndex
myIndex =
       20045
>> f(myIndex)
ans =
    99

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM