How does one plot only the maximum y value for an x value with multiple y values?
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Geoff Doback
le 8 Juil 2019
Commenté : Star Strider
le 9 Juil 2019
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 commentaires
Réponse acceptée
Star Strider
le 9 Juil 2019
D = load('y4-T4.mat');
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.
2 commentaires
Plus de réponses (1)
Basil C.
le 9 Juil 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
answer=[];
for i=1:numel(N)
s=sum(N(1:i));
k=T4(s-N(i)+1:s);
answer=[answer,max(k)];
end
Y4=unique(y4)
answer
0 commentaires
Voir également
Catégories
En savoir plus sur Annotations dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!