在 MATLAB 中绘制累积分布函数
Plot a Cumulative Distribution Function in MATLAB
我的 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 显示:
我确定它是正确的数据,只需要某种绝对函数或排序函数。我只是不知道那会是什么。任何帮助将非常感激。
看起来 Cap
不是单调递增的。我想你可以在绘图之前对其进行排序。
在 figure(3)
上,替换为:
plot( Cap, cdf_Cap);
有了这个:
[~, idx] = sort(Cap);
plot( Cap(idx), cdf_Cap(idx));
现在数据将以正确的顺序绘制。
我的 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 显示:
我确定它是正确的数据,只需要某种绝对函数或排序函数。我只是不知道那会是什么。任何帮助将非常感激。
看起来 Cap
不是单调递增的。我想你可以在绘图之前对其进行排序。
在 figure(3)
上,替换为:
plot( Cap, cdf_Cap);
有了这个:
[~, idx] = sort(Cap);
plot( Cap(idx), cdf_Cap(idx));
现在数据将以正确的顺序绘制。