ldhorz 2020-09-13 14:43 采纳率: 0%
浏览 268

matlab进行傅里叶反变换?

由输出信号频域,进行傅里叶反变换得到时域,应与输入信号相同,但结果并不是如此。感觉错误出现在
phi=N*T.^2/(2*pi*m);
h=exp(0.5i*phi*w.^2);
y2=y1.*h;
x2 =ifftshift(ifft(y2));
这几行里,求大神指导。

代码如下

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('输出信号频域');

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2020-09-13 15:08
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料