在数组MATLAB的某个y值处绘制垂直线

时间:2017-04-06 06:43:39

标签: arrays matlab compare axis-labels cdf

美好的一天,

我有两个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])

输出图表的一个例子:

enter image description here

因此,例如,当线的y值等于10 ^ -1时,我想在两条线向下绘制垂直线到x轴。然后,我可以使用这两个点之间的x值差来确定dB差异。

我用油漆画出来:

enter image description here

可以使用任何随机数组来完成此示例,因此我没有附加更多代码,但只是想知道我尝试做什么。

1 个答案:

答案 0 :(得分:0)

假设您有两组绘图变量["anand", "av", "books", "kanagalu", "specialty-av"x1y1x2。在你的情况下

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);

示例输出:

stem plot

您的" 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