所以最近几天我有一些关于使用 MatLab 执行卷积的帖子(见这里)。但我遇到了问题,只想尝试使用傅里叶变换的卷积属性。我有下面的代码:width = 83.66;
x = linspace(-400,400,1000);
a2 = 1.205e+004 ;
al = 1.778e+005 ;
b1 = 94.88 ;
c1 = 224.3 ;
d = 4.077 ;
measured = al*exp(-((abs((x-b1)./c1).^d)))+a2;
%slit
rect = @(x) 0.5*(sign(x+0.5) - sign(x-0.5));
rt = rect(x/width);
subplot(5,1,1);plot(x,measured);title('imported data-super gaussian')
subplot(5,1,2);plot(x,(real(fftshift(fft(rt)))));title('transformed slit')
subplot(5,1,3);plot(x,rt);title('slit')
u = (fftshift(fft(measured)));
l = u./(real(fftshift(fft(rt))));
response = (fftshift(ifft(l)));
subplot(5,1,4);plot(x,real(response));title('response')
%Data Check
check = conv(rt,response,'full');
z = linspace(min(x),max(x),length(check));
subplot(5,1,5);plot(z,real(check));title('check')
我的目标是接受我的案例,即 $measured = rt \ast signal$ 并找到信号。一旦我找到我的信号,我将它与矩形进行卷积并且应该返回measured
,但我不明白。
我的 matlab 经验很少,信号处理经验几乎为零(使用 DFT)。因此,任何有关如何执行此操作的建议将不胜感激!