我想在Matlab中计算卷积,其中我在脚本文件中声明函数。MWE是
a = 0.9; b = 0.5;
X = @(t) exp(-(b*t).^2);
Y = @(t) exp(-a*b*t.^2);
Z = convnfft(X,Y,'same'); % this is how you usually do convolution when t=linspace(-20,20,1000)
my_integral = integral(Z,-Inf,Inf)
我正在使用这个从MathWorks网站上获取的卷积例程。
是否有任何有效的Matlab卷积例程/程序可以对X
和Y
函数进行卷积?如果我使用符号数学显式计算卷积积分,那么这些MWEX
和Y
需要很长时间,计算我的实际函数需要更长的时间。
我的目标是将卷积的结果从-Inf
积分到Inf
。
也许你可以试试下面的代码
a = 0.9; b = 0.5;
X = @(t) exp(-(b*t).^2);
Y = @(t) exp(-a*b*t.^2);
% convolution is formulated as `integral(@(u) X(z-u).*Y(u),-Inf,Inf)` at any given value `z`, and we can vectorize the convolution by `arrayfun`
fconv = @(t) arrayfun(@(z) integral(@(u) X(z-u).*Y(u),-Inf,Inf), t);
你可以像下面的一样调用函数fconv
>> fconv(1:5)
ans =
1.803967 1.113875 0.498712 0.161908 0.038115