Matlab CDF图不';不要从零开始

Matlab CDF图不';不要从零开始,matlab,plot,cdf,Matlab,Plot,Cdf,我试图通过调用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

我试图通过调用
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曲线应始终从零开始! 谁能给我一些建议吗?我试图自己绘制黄色曲线,但它仍然是“有偏见的”。
谢谢你的帮助

问题在于您的数据
plot\u vec1
包含零。使用
10*log10()
转换为dB时,这些零将转换为
-inf
。然后
cdfplot
看到最小有限值(黄色曲线中约
-67
)下面有许多样本(值
-inf
)。这就是为什么它给出了一个非零的累计概率

例如,比较这两个数字

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

    cdfplot([1 2 3 4 5 6])
    

  • 有些值是
    -inf

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

    此处,最小有限值为
    3
    ,具有
    0.33
    累积概率,如纵轴所示。这是因为6个样本中有2个是
    -inf
    ,因此低于
    3


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

    请发布一个最小的示例,其中包含重现问题的实际值。您的意思是,发布向量图\u vec1吗?是的,但不一定是您的实际数据(从图表上看,它似乎是一个大矩阵)。这只是一个极小的示例,其中有几个值会导致该行为0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 00.0569 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0500 0.0000 0.0000 0.0000 0.0261 0.0000 0.0000 0.0000 0.0000 0.0190 0.0158 0.0082Ahh我明白了,试着取0的对数:cdf图忽略了-Inf。