美好的一天,
我有两个CDF阵列,我正在绘图以相互比较。我想绘制一条线,当y值对于两个绘制的数组都处于某个值时,我可以在视觉上比较两者之间的x值方差。
以下是代码片段:
[q, r] = ecdf(ray1_f);
[w, z] = ecdf(mrc);
plot(20*log10(r), q, 20*log10(z), w);
set(gca, 'YScale', 'log');
xlabel('dB Relative to Mean');
ylabel('Cumulative Property');
title({'Cumulative Probability Distribution Rayleigh and 2 Branch'; 'Max Ratio Combining (filtered)'});
legend('Rayleigh', '2 Branch Max Ratio');
xlim([-50 0])
输出图表的一个例子:
因此,例如,当线的y值等于10 ^ -1时,我想在两条线向下绘制垂直线到x轴。然后,我可以使用这两个点之间的x值差来确定dB差异。
我用油漆画出来:
可以使用任何随机数组来完成此示例,因此我没有附加更多代码,但只是想知道我尝试做什么。
答案 0 :(得分:0)
假设您有两组绘图变量["anand", "av", "books", "kanagalu", "specialty-av"
,x1
,y1
,x2
。在你的情况下
y2
给出
plot(20*log10(r), q, 20*log10(z), w);
主要任务是找到给定x1 = 20*log10(r); y1 = q;
x2 = 20*log10(z); y2 = w;
值的x
值,最简单的方法是使用y
进行插值。
在您的示例中,interp1
ypoint = 10^(-1)
这是一个简单的线性插值,还有其他可能适合你的选项,可以在documentation中找到。
当然,你需要对x1point = interp1(y1, x1, ypoint);
,
x2
现在使用stem
绘制垂直线最简单。
x2point = interp1(y2, x2, ypoint);
示例输出:
您的" dB差异"显然只是figure; hold on;
plot(x1, y1, x2, y2);
stem(x1point, ypoint, 'marker', 'none');
stem(x2point, ypoint, 'marker', 'none');
或x2 - x1
。
编辑:
值得注意的是,为了进一步简化,abs(x2 - x1)
可以采用向量输入,因此整个代码可以是:
stem