2015-07-20 373 views
2

我从我的cdf函数中看到一个奇怪的图形。如果我使用ecdf,我会得到我期望的图表。但是我看起来像是包含正确的数据,但是顺序错误。在MATLAB中绘制累积分布函数

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

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

+0

仅供参考,您不需要对其进行分类。你可以绘制这个函数而不需要连接像plot(Cap,cdf_Cap,'o')'这样的线,尽管对于cdf你可能想要对它进行排序并连接线。 – Justin

回答

3

看起来像Cap没有单调递增。我想你可以在绘图之前对其进行分类。

figure(3),替换此:

plot(Cap, cdf_Cap); 

有了这个:

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

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

+1

谢谢!这就是我的期望。干杯=) –