How to find X and Y coordinates of maximum gap between curves?

7 次查看(过去 30 天)
Please see the attached figure. In this figure, I want to find the values of X and Y coordinates where the two curve has maximum separation in Y-direction. In this figure, we can see that maximum gap is somewhere around 0.7 in the x-scale.
To do so, I simply take the subtraction of red data and blue data and obtain the gap value and corresponding X-value.
The gap value is delta Y is 6.7*10^7 and X-value is 0.027451.
However, the gap is not maximum at X = 0.027451. So, is there any way I can find the X-Y values of maximum gap between curves?
The data is also attached here with. It may not be same dataset as shown in figure, but a similar data.
I attach fig file for the same data for refrence.
Here is the code to obtain this type of plot.
But how to find maximum gap between curves?
clear; close all
load('rd.mat');
load('bl.mat');
X = flux1.vapa_flx_E
plot(X,rd,'-or');
hold on;
plot(X,bl,'-ob');
set(gca,'YScale','log','YTick',[10^2 10^3 10^4 10^5 10^6 10^7 10^8 10^9 10^10 10^11],'LineWidth',1.5,'FontWeight','bold',...
'FontSize',14, 'YTicklabel',{'10^2','','10^4','','10^6','','10^8','','10^1^0',''});
dif1 = rd-bl;
[val_maxdif1, idx_maxdif1] = max(dif1);
delta_y = val_maxdif1;
x1 = X(idx_maxdif1);
Any help is greatly appriciated.

采纳的回答

Karim
Karim 2022-8-10
编辑:Karim 2022-8-11
It depends on what you mean with the gap, notice that you plot it on a logarithmic axis. As a result from a graphical point of view the gap seems larger at 0.7 however if you make the axis linear you will see that the gap is bigger at the small X values
% load mat files
load(websave('rd', "https://www.mathworks.com/matlabcentral/answers/uploaded_files/1093100/rd.mat"))
load(websave('bl', "https://www.mathworks.com/matlabcentral/answers/uploaded_files/1093105/bl.mat"))
load(websave('X' , "https://www.mathworks.com/matlabcentral/answers/uploaded_files/1093090/X.mat" ))
% create figure
figure
plot(X,rd,'-or');
hold on;
plot(X,bl,'-ob');
set(gca,'YScale','log','YTick',[10^2 10^3 10^4 10^5 10^6 10^7 10^8 10^9 10^10 10^11],...
'LineWidth',1.5,'FontWeight','bold','FontSize',14,...
'YTicklabel',{'10^2','','10^4','','10^6','','10^8','','10^1^0',''});
grid on
title('Logarithmic Y axis')
figure
plot(X,rd,'-or');
hold on;
plot(X,bl,'-ob');
set(gca,'LineWidth',1.5,'FontWeight','bold','FontSize',14);
grid on
title('Linear Y axis')
dif1 = rd-bl;
figure
plot(X,dif1)
grid on
update after extra comment of the OP
here i made an attempt to identify the 'gap' that the OP looks for
dif2 = (rd-bl)./bl;
figure
plot(X,dif2)
grid on
[maxGap, ixd] = max( dif2 );
maxGap_X = X(ixd);
disp(['max gap is found at X = ', num2str(maxGap_X)])
max gap is found at X = 0.692
  4 个评论
Star Strider
Star Strider 2022-8-12
@Karim — Your websave solution to opening .mat files with the online Run feature is brilliant!
I wish I’d thought of that!
Karim
Karim 2022-8-12
Thank you, I had some issues a while back because we are limited to the amount of files we can upload to the answers per day. Hence I looked a bit for an workaround.
For completness, I also use the matfile command to see which variables are inside the mat file.
load(websave('rd', "https://www.mathworks.com/matlabcentral/answers/uploaded_files/1093100/rd.mat"))
matfile('rd.mat')
ans =
matlab.io.MatFile Properties: Properties.Source: '/users/mss.system.KkVnZh/rd.mat' Properties.Writable: false Properties.ProtectedLoading: false rd: [64x1 double] Methods

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Specifying Target for Graphics Output 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by