MATLAB を使用して、一連の値 Z の累積分布関数 (CDF) をプロットしたいと考えています。次のコードを使用すると、CDF は 0 と 1 の間にありません! 助けていただければ幸いです。
function plot_cdf(Z)
numberbin=100;
[n,x] =hist(Z,numberbin);
pdf=n/sum(n(:))/diff(x(1:2));
cdf = cumsum(pdf);
plot(cdf)
end
MATLAB を使用して、一連の値 Z の累積分布関数 (CDF) をプロットしたいと考えています。次のコードを使用すると、CDF は 0 と 1 の間にありません! 助けていただければ幸いです。
function plot_cdf(Z)
numberbin=100;
[n,x] =hist(Z,numberbin);
pdf=n/sum(n(:))/diff(x(1:2));
cdf = cumsum(pdf);
plot(cdf)
end
あなたが必要
cdf = cumsum(pdf) * diff(x([1 2]));
これは、cdf が pdf の積分であるためです。積分を計算するには、リーマン和として近似します。つまり、関数値を合計し ( )、 x軸cumsum(pdf)
に沿った間隔を掛けます ( )。diff(x([1 2]))