1

我试图通过调用cdfplot(x)函数来绘制我的数据的 cdfcurves。这是我的代码的一部分:

    figure; 
    for i=1:length(num_curves)
        h = cdfplot(10*log10(plot_vec1(:,i)));
        set(h,'Linewidth',2,'Color',cc(i,:),'Linestyle','-');
        hold on
        %set(color, cc(i,:));
    end

不幸的是,我得到的结果非常令人困惑。 在此处输入图像描述

黄色和紫色曲线从非零值开始,但 CDF 曲线应始终从零开始!谁能给我一些建议?我试图自己绘制黄色曲线,但它仍然是“有偏见的”。谢谢你的帮助!

4

1 回答 1

1

问题是您的数据plot_vec1包含零。-inf当您使用 转换为 dB 时,这些零将转换为10*log10()。然后cdfplot看到最小有限值(大约-67在你的黄色曲线中)在它下面有许多样本(带有 value -inf)。这就是为什么它在那里给出非零累积概率的原因。

例如,比较这两个数字

  1. 正常情况下,所有值都是有限的:

    cdfplot([1 2 3 4 5 6])
    

    在此处输入图像描述

  2. 一些值是-inf

    cdfplot([-inf -inf 3 4 5 6])
    

    在此处输入图像描述

    这里的最小有限值,即,在垂直轴上显示了3一个累积概率。0.33这是因为 6 个样本中有 2 个是- inf并且因此如下3

可能的解决方法:在应用对数之前删除那些零,或者用-inf非常小的 dB 值替换结果,例如-100.

于 2015-07-29T12:17:47.217 回答