【问题标题】:Plot a Cumulative Distribution Function in MATLAB在 MATLAB 中绘制累积分布函数
【发布时间】:2015-07-20 00:14:13
【问题描述】:

我从我的 cdf 函数中得到了一个看起来很奇怪的图表。如果我使用 ecdf,我会得到我期望的图表。但是我得到了一个纠结的混乱,看起来它包含正确的数据,但顺序错误。

SNR = exprnd(1,1000,1); 
Cap = 1*log2(1+SNR); % unit bandwidth

[f,x] = ecdf(Cap);
figure(2);
plot( x,f);

cdf_Cap = cdf('Exponential', Cap, 1);
figure(3);
plot( Cap, cdf_Cap);

figure(4);
cdfplot(Cap);

图2显示了预期的结果:

而图 3 显示:

我确定它是正确的数据,并且只需要某种绝对函数或排序函数。我只是不知道那会是什么。任何帮助将非常感激。

【问题讨论】:

  • 仅供参考,您不必对它进行排序。您可以在不连接线(如plot( Cap, cdf_Cap,'o'))的情况下绘制函数,但对于 cdf,您可能确实希望对其进行排序并连接线。

标签: matlab plot cdf


【解决方案1】:

看起来Cap 不是单调递增的。我认为您可以在绘图之前对其进行排序。

figure(3),替换这个:

plot( Cap, cdf_Cap);

有了这个:

[~, idx] = sort(Cap);
plot( Cap(idx), cdf_Cap(idx));

现在数据将以正确的顺序绘制。

【讨论】:

  • 谢谢!这就是我所期待的。干杯 =)
猜你喜欢
  • 1970-01-01
  • 2012-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-11
  • 2014-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多