请求帮助通过fft计算卷积的随机变量

6视图(30天)
灵感来自于答案的 @David Goodmanson 这个之前 问题, 我一直想了解如何在通用计算卷积的pdf的随机变量(旅游房车)使用fft算法。附加的脚本显示了两个例子,我有尝试。在fft产生一个例子卷积pdf完美,但在其他不,我希望有人可以识别的问题的方法。
第一个例子看几个相同的指数旅游房车的卷积。这里,卷积pdf通过fft计算同意完全与相应的已知伽马pdf的卷积。
第二个例子展示了两种不同的卷积正常旅游房车,但卷积pdf通过fft计算 同意相应的已知正常的卷积。实际上,fft卷积有正确的形状,但它是抵消(即相对于真正的卷积分布。,它有一个不同的意思)。
我也尝试了fft方法与其他示例分布,和同样的转变问题,我与法线是很常见的。在任何特定的例子我可以轻松摆脱一种特别的方式的转变,但我还没有一个通用的方法,适用于任意的旅游房车(相同或不)。
我没有与fft的之前,我可能错过一些很基本。这将是伟大的如果一个专家在这组可能让我想通了。
非常感谢任何提示。

接受的答案

大卫Goodmanson
大卫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点吗?
12个评论
杰夫•米勒
杰夫•米勒 2021年8月30日
是的,每一个pdf是评估在同一X向量增量最小值。据我所知,这是需要输入所需的fft。
是的,最后的结果将是一个分段线性近似在一个有限区间的支持。金宝app解决担心错过了尾巴,用户可以进一步扩展的范围和支付相关的计算时间的惩罚。一些试验和错误可能会清楚,结果并没有改变一旦范围扩展了“远远不够”,因此,分析师可以满足,结果是一个有用的近似。
我想象,用户总是希望选择NxPoints根据分布和计算目标,可能在尝试各种值多少就足以实现所需的分辨率。我粗略的印象是,计算时间与NxPoints似乎只有线性增加,它不一定会得到一个非常好的近似计算昂贵有限区间内检查。
就其价值而言,我实际上想怎么处理这个机械是最大似然参数估计与一些曲线玲珑,我找不到封闭pdf表达式。我以前做,通过数值积分,但这多,快得多,几乎没有任何精确度损失。

登录置评。

答案(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(结束)));
3评论
杰夫•米勒
杰夫•米勒 2021年8月28日
我绝对要处理的情况下旅游房车是独立的但有不同的分布。大卫的方法似乎是使用适当的转换(见我的回复他)。

登录置评。

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!