## How does one plot only the maximum y value for an x value with multiple y values?

Geoff Doback

### Geoff Doback (view profile)

さんによって質問されました 2019 年 7 月 8 日

### Star Strider (view profile)

さんによって コメントされました 2019 年 7 月 9 日
Star Strider

### Star Strider (view profile)

さんの 回答が採用されました
I have two vectors (y4 and T4) and need to plot y4 on the x-axis and T4 on the y-axis. The only problem is that there exists multiple values of T4 for each value of y4, so how can I only plot the highest of the T4 values for each y4? I have attached my two vectors for reference.

#### 0 件のコメント

サインイン to comment.

## 2 件の回答

### Star Strider (view profile)

Answer by Star Strider

### Star Strider (view profile)

on 9 Jul 2019

The accumarray function is perfect for this:
T4 = D.T4; % Define ‘T4’
y4 = D.y4; % Given ‘y4’
[Uy4,~,Ix] = unique(y4); % Unique Values Of ‘y4’
T4Max = accumarray(Ix, T4, [], @max); % Maximum Values Of ‘T4’
y4T4 = [Uy4, T4Max]; % Matrix OF Unique & Corresponding Maximum Values
figure
plot(Uy4, T4Max)
grid
xlabel('y4')
ylabel('T4')
ylim([min(ylim) 850])
Other options are possible, including the mean, median, standard deviation, and others, just by changing the function call in accumarray.

Geoff Doback

### Geoff Doback (view profile)

on 9 Jul 2019
Worked perfectly - thanks!
Star Strider

### Star Strider (view profile)

on 9 Jul 2019
As always, my pleasure!

サインイン to comment.

### Be Matlabi (view profile)

Answer by Be Matlabi

### Be Matlabi (view profile)

on 9 Jul 2019

Hi Geoff,
After seeing the data you provided im assuming the data set it something like
y4=[5 5 4 4 3 3 2 2 2];
t4=[1 2 3 4 5 6 7 8 9]; % this is not the actual data but only for better...
% understanding of how I see your problem
And the solution you are searching for is like
y4= [ 5 4 3 2]
answer= [ 2 4 6 9] % the maximum value of each t4 for a unique y4 value
Then the below solution should help you
N = diff([0 find(diff(y4)) numel(y4)]) %NOTE y4 should be a horizontal vector
for i=1:numel(N)
s=sum(N(1:i));
k=T4(s-N(i)+1:s);