How does one plot only the maximum y value for an x value with multiple y values?
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Geoff Doback
el 8 de Jul. de 2019
Comentada: Star Strider
el 9 de Jul. de 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 comentarios
Respuesta aceptada
Star Strider
el 9 de Jul. de 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 comentarios
Más respuestas (1)
Basil C.
el 9 de Jul. de 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 comentarios
Ver también
Categorías
Más información sobre Annotations en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!