Matlab傅里叶变换傅里叶逆变换-FFT-IFFT
时间:2025-02-26
时间:2025-02-26
Matlab中,对信号进行傅里叶变换而后进行傅里叶逆变换,观察信号的误差。
Matlab傅里叶变换傅里叶逆变换 %% 信号经过傅里叶变换然后进行傅里叶逆变换后信号的变化
clear all;clc;
%------Author&Date------
%Author:
%Date: 2013/07/31
%========================================================================== Fs=8e3; %采样率
t=0:1/Fs:1; %采样点
len=length(t); %采样长度
f1=10; %频率1
f2=100; %频率2
f3=1000; %频率3
A1=1; %幅度1
A2=0.8; %幅度2
A3=0.3; %幅度3
MaxS=A1+A2+A3; %信号幅度的最大值
signal=A1*sin(2*pi*f1*t)+A2*sin(2*pi*f2*t)+A3*sin(2*pi*f3*t);
X=fft(signal,len); %傅里叶变换
magX=abs(X); %信号的幅度
angX=angle(X); %信号的相位
Y=magX.*exp(1i*angX); %信号的频域表示
y=ifft(Y,len); %信号进行傅里叶逆变换
y=real(y);
er=signal-y; %原始信号和还原信号的误差
subplot(311);plot(t,signal);axis([0 1 -MaxS MaxS]);xlabel('时间');ylabel('振幅');title('原始信号');
subplot(312);plot(t,y);axis([0 1 -MaxS MaxS]);xlabel('时间');ylabel('振幅');title('还原信号');
subplot(313);plot(t,er);xlabel('时间');ylabel('振幅');title('误差');
% End Script