【问题标题】:CDF plot doesn't start from zeroCDF 图不是从零开始
【发布时间】:2015-07-29 11:23:11
【问题描述】:

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

【问题讨论】:

  • 请发布一个最小示例,其中包含重现问题的实际值
  • 你的意思是,post vector plot_vec1?
  • 是的,但不一定是您的实际数据(从图表来看,它似乎是一个大矩阵)。只是一个带有一些导致该行为的值的最小示例
  • 0 0.0000 0.0000 0.00 0 0.0000 0.0000 0. 0 0 0 0 0.0000 0.00 0 0 0.00 0 0.0000 0 0.0000 0 0 0.0569 0.0000 0 0.0000 0.0000 0.0000 0.00 0 0.0000 0 0.0000 0 0 0.0000 0.0000 0 0 0.0000 0 0.0500 0.0000 0.0000 0.0000 0.0000 0.0261 0.0000 0.0000 0.0190 0.0158 0.0082
  • 啊,我明白了,尝试取零的对数:P。 cdf 图忽略了 -Inf。

标签: matlab plot cdf


【解决方案1】:

问题是您的数据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:

可能的解决方法:在应用对数之前删除这些零,或将生成的 -inf 替换为以 dB 为单位的非常小的值,例如 -100。

【讨论】:

    猜你喜欢
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 2022-12-25
    • 1970-01-01
    相关资源
    最近更新 更多