【发布时间】:2013-11-21 10:00:46
【问题描述】:
(免责声明:我曾考虑在 math.statsexchange 上发布此内容,但在那里发现类似的问题已移至 SO,所以我在这里)
上下文:
我正在使用 fft/ifft 来确定随机变量总和的概率分布。 所以例如我有两个均匀的概率分布 - 在最简单的情况下,区间 [0,1] 上有两个均匀分布。
因此,要获得从这两个分布中采样的两个随机变量之和的概率分布,可以计算每个概率密度的傅里叶变换的乘积。 对这个产品做逆 fft,你会得到总和的概率密度。
一个例子:
function usumdist_example()
x = linspace(-1, 2, 1e5);
dx = diff(x(1:2));
NFFT = 2^nextpow2(numel(x));
% take two uniform distributions on [0,0.5]
intervals = [0, 0.5;
0, 0.5];
figure();
hold all;
for i=1:size(intervals,1)
% construct the prob. dens. function
P_x = x >= intervals(i,1) & x <= intervals(i,2);
plot(x, P_x);
% for each pdf, get the characteristic function fft(pdf,NFFT)
% and form the product of all char. functions in Y
if i==1
Y = fft(P_x,NFFT) / NFFT;
else
Y = Y .* fft(P_x,NFFT) / NFFT;
end
end
y = ifft(Y, NFFT);
x_plot = x(1) + (0:dx:(NFFT-1)*dx);
plot(x_plot, y / max(y), '.');
end
我的问题是产生的概率的形状。窝点。功能完善。
但是,x 轴不适合我在开始时创建的x,而是移动了。
在示例中,峰值在 1.5,而应该是 0.5。
如果我换班,例如添加第三个随机变量,或者如果我修改x 的范围。
但我不知道怎么做。
恐怕这可能与我的 x 值为负数有关,而傅立叶变换通常在时间/频率域中工作,而 frequencies < 0 没有意义。
我知道我可以找到例如峰值并将其转移到适当的位置,但看起来很讨厌且容易出错......
很高兴有任何想法!
【问题讨论】: