请求帮助通过fft计算卷积的随机变量
6视图(30天)
显示旧的评论
灵感来自于答案的
@David Goodmanson
这个之前
问题,
我一直想了解如何在通用计算卷积的pdf的随机变量(旅游房车)使用fft算法。附加的脚本显示了两个例子,我有尝试。在fft产生一个例子卷积pdf完美,但在其他不,我希望有人可以识别的问题的方法。
第一个例子看几个相同的指数旅游房车的卷积。这里,卷积pdf通过fft计算同意完全与相应的已知伽马pdf的卷积。
第二个例子展示了两种不同的卷积正常旅游房车,但卷积pdf通过fft计算
不
同意相应的已知正常的卷积。实际上,fft卷积有正确的形状,但它是抵消(即相对于真正的卷积分布。,它有一个不同的意思)。
我也尝试了fft方法与其他示例分布,和同样的转变问题,我与法线是很常见的。在任何特定的例子我可以轻松摆脱一种特别的方式的转变,但我还没有一个通用的方法,适用于任意的旅游房车(相同或不)。
我没有与fft的之前,我可能错过一些很基本。这将是伟大的如果一个专家在这组可能让我想通了。
非常感谢任何提示。
0评论
接受的答案
大卫Goodmanson
2021年8月27日
编辑:大卫Goodmanson
2021年8月27日
嗨,杰夫,
很高兴看到我的贡献几乎从四年前,仅作为众多人对这个网站的贡献并得到引用。
除了提供很多查询的答案,网站似乎已经成为一个可搜索的信息来源。
之所以第一conv示例工作和第二并不是因为不同的x数组用于创建pdf文档。
假设fft变换y = y (x) z = z (ilam)
(ilam逆波长,它似乎没有常见的象征)。
fft将z (ilam = 0),直流值,产生的z数组中的第一个元素。
同样的fft
假设
y (x = 0)是在y数组第一个元素。
如果x = 0是别的地方,那么z ilam域中的拿起一个相移,会导致不正确的结果。
第一个例子使用了正确的x数组和方法。
第二个例子从一开始适应高斯- x的值,导致问题,正如你所看到的。
最直接的方法,允许负的x是开始一个数组在中点与x = 0(元素n / 2 + 1 n)。
定义y (x),然后使用ifftshift把直流y值y (1)。
我倾向于认为第一个数组作为策划组和移位的数组作为真正的数组。
经过fft算法,然后回来在x域的传输线,fftshift到把y (x = 0)的中心。
例如,
N = 10000;
x0 = 5;
delx = 2 * x0 / N;
delilam = 1 / (N * delx);
x = (- N / 2: N / 2 - 1) * delx;
μ= 1;
sig = 2;
m = 6;%的旋转
mp1 = m + 1;
y = (1 / (sqrt(π)* sig)) * exp (- (xμ)。^ 2 /团体^ 2);
%的结果
yconv =(1 /(√(π* mp1) * sig)) * exp (- (x-mp1 *μ)。^ 2 / (mp1 *团体^ 2));
%由fft
z = fft (ifftshift (y)) ^ mp1 * delx ^ mp1;
yconvfft = fftshift(传输线(z)) * N * delilam;
%以下情节原高斯缩减
图(1);网格在
情节(x, y / 2 x, yconvfft x(一60:结束),yconv(一60:结束),“o”)
I1 = trapz (x, y)
I2 = trapz (x, yconv)
I3 = trapz (x, yconvfft)
正常化,因为您正在使用fft(不仅资金)近似积分,有一个因素的阵列间距del_x每个变换。
回来有一个传输线有del_ilam的单一因素。
除了传输线自动划分的数量分N,所以你需要乘以N来弥补。
我有一个问题。在第二个例子中你有2 ^ 13 = 8192分,而不是说,10000。你能让我知道背后的基本原理用2 ^ n点吗?
答案(1)
保罗
2021年8月28日
这是一个选择,说明两个相隔正常pdf文档:
mu1 = 10;sigma1 = 2;
mu2 = 5;sigma2 = 1;
Zextreme = 4;
delx = 0.01;
%确定x值的范围
min1 = mu1 - Zextreme * sigma1;
min2 = mu2 - Zextreme * sigma2;
max1 = mu1 + Zextreme * sigma1;
max2 = mu2 + Zextreme * sigma2;
x1 = min1: delx: max1;
x2 = min2: delx: max2;
x = mu1 + mu2 + (-Zextreme * (sigma1 + sigma2): delx: Zextreme * (sigma1 + sigma2));
%的pdf的个体分布和和,这是
%卷积的个人
M1 = normpdf (x1, mu1, sigma1);
M2 = normpdf (x2, mu2, sigma2);
truepdf = normpdf (x, mu1 + mu2 sqrt (sigma1 ^ 2 + sigma2 ^ 2));
%检查计算到目前为止通过检查真正的分布
%的个人旅游房车和卷积
情节(x1, M1);
持有在
情节(x2, M2);
情节(x, truepdf);网格
传奇(“正常1 ',“正常2》,“卷积”);
%近似连续卷积和在时域卷积
convpdf = conv (M1, M2) * delx;
shift1 =圆(x1 (1) / delx);
shift2 =圆(x2 (1) / delx);
%近似连续卷积,卷积和通过频域计算
N =元素个数(convpdf);
fftM1 = fft (M1, N);
fftM2 = fft (M2, N);
fftpdf = fftM2。* fftM1;
fftpdf =实际(传输线(fftpdf));
%比较
次要情节(311);情节(x, truepdf);网格
次要情节(312);情节(((0:n - 1) + shift1 + shift2) * delx convpdf),网格
次要情节(313);情节(((0:n - 1) + shift1 + shift2) * delx,真实(fftpdf) * delx),网格
集(get (gcf,“孩子”),“XLim”,[x (1) x(结束)));