CDF 图不是从零开始的

CDF plot doesn't start from zero

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

    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 曲线应始终从零开始! 谁能给我一些建议?我试图自己绘制黄色曲线,但它仍然是 'biased'。 谢谢你的帮助!

问题是您的数据 plot_vec1 包含零。当您使用 10*log10() 转换为 dB 时,这些零将转换为 -inf。然后 cdfplot 看到最小有限值(在你的黄色曲线中大约 -67)下面有许多样本(值为 -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:

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