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

Просто FYI, вам не нужно обязательно сортировать его. Вы можете построить функцию без связывания линий, таких как '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

Спасибо! Это то, чего я ожидал. Приветствия =) –

Смежные вопросы