在MATLAB中绘制累积分布函数

时间:2015-07-20 00:14:14

标签: matlab plot cdf

我从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显示了预期结果:enter image description here

和图3显示: enter image description here

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

1 个答案:

答案 0 :(得分:4)

看起来Cap并非单调增加。我想你可以在绘图之前对它进行排序。

figure(3)上,将其替换为:

plot( Cap, cdf_Cap);

有了这个:

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

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