Find the highest value of y for each x value

3 次查看(过去 30 天)
Can anyone please help me with this quesiton. I have a big matrix where I’m only interested to plot the highest value of y for each x value. My x-axis ranges between 0 and 45 and I want the highest values for each one. So, I created the following code but I’m not happy with it. I also attached my data. Thank you for your time.
x = MaT_All(:,18);
y = MaT_All(:,17)
edges = 200; % I used a number as 200 since I could not find the indexs of 0:45 in the original data (x)
Group = discretizediscretize(x ,edges); %
Result_y = accumarray(Group, y , [], @max); % I got the highest values (y) but not sure how to find the corresponding value in x
scatter(Result_x ,Result_y) % how can i find Result_x
I also tried this code
[G,TID] = findgroups(x);
Max_NPV = splitapply(@max,y),G);
scatter(TID,Max_NPV);

回答(1 个)

Image Analyst
Image Analyst 2019-4-27
How about (untested):
ux = unique(x)
hold on;
for k = 1 : length(ux) % For each unique x...
% Find the max y for this x value.
maxY = max(y == ux(k));
% Plot that point.
plot(ux(k), maxY, 'b.', 'MarkerSize', 10);
end
grid on;
  1 个评论
Yaser Khojah
Yaser Khojah 2019-4-29
编辑:Yaser Khojah 2019-4-29
thanks fo your help but that does not give me what i'm looking for. I have this code but i still do not know how to find the index of the ymax?
x = round(MaT_All(:,18),0);
y = MaT_All(:,17);
[uv,~,idx] = unique(x);
ymax = accumarray(idx,y,[],@max); %build matrix
[uv ymax];
figure
scatter(uv,ymax)
line(uv,ymax)

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Numeric Types 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by