2015-07-20 458 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

謝謝!這就是我的期望。乾杯=) –