查看: 108|回复: 1|关注: 0

[已答复] matlab进行傅里叶反变换

[复制链接]

新手

5 麦片

财富积分


050


1

主题

2

帖子

0

最佳答案
发表于 6 天前 | 显示全部楼层 |阅读模式
nt = 1024; Tmax = 32;%FFT点数和最大抽样间隔
t = (-nt/2:nt/2-1)*(2*Tmax)/nt;
w = (pi./Tmax).* [(0:nt/2-1) (-nt/2:-1)];
t0=0.6;T=6;%输入高斯信号的半宽度和周期
x1 = exp(-0.5*(t/t0).^2)+exp(-0.5*(t/t0-T/t0).^2)+exp(-0.5*(t/t0+T/t0).^2)+exp(-0.5*(t/t0-2*T/t0).^2)+exp(-0.5*(t/t0+2*T/t0).^2);
y1 = fftshift(fft(x1)).*(2*Tmax)/sqrt(2*pi);
figure; subplot(4,1,1);
plot (t, abs(x1).^2, 'r');  
axis([-15 15 0 1.2]);
xlabel('时间(s)');
ylabel('平均功率(A.U.)');
title('输入信号时域');
subplot(4,1,2);
plot (fftshift(w)/(2*pi), abs(y1).^2, 'r');
axis([-1 1 0 inf]);
xlabel('频率(Hz)');
ylabel('平均功率(A.U.)');
title('输入信号频域');
N=3;m=1;%Talbot阶数和倍频因子
phi=N*T.^2/(2*pi*m);
h=exp(0.5i*phi*w.^2);
y2=y1.*h;
x2 =ifftshift(ifft(y2));
subplot(4,1,3);
plot (t, abs(x2).^2, 'r');
axis([-50 50 0 inf]);
xlabel('时间(s)');
ylabel('平均功率(A.U.)');
title('输出信号时域');
subplot(4,1,4);
plot(fftshift(w)./(2*pi), abs(y2).^2, 'r');
axis([-1 1 0 inf]);
xlabel('频率(Hz)');
ylabel('平均功率(A.U.)');
title('输出信号频域');

回复主题 已获打赏: 0 积分

举报

新手

5 麦片

财富积分


050


1

主题

2

帖子

0

最佳答案
 楼主| 发表于 6 天前 | 显示全部楼层
由输出信号频域,进行傅里叶反变换得到时域,应与输入信号相同,但结果并不是如此。感觉错误出现在
phi=N*T.^2/(2*pi*m);
h=exp(0.5i*phi*w.^2);
y2=y1.*h;
x2 =ifftshift(ifft(y2));
这几行里,求大神指导。
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表