逆傅里叶变IFFT原始信号恢复方法研究-附Matlab代码

一、原始信号模拟

现实中,由于得到的信号都是实数序列。设有实数序列x(n),如下图所示

在这里插入图片描述

图1 原始信号

对应Matlab如下:

%% 矩形波
N=33;                           % 设置N长
x=zeros(1,N);                   % 构成矩形波形
x(7:27)=1;
figure,plot(x,'r')
xlabel('样点'); ylabel('幅值'); 

二、傅里叶变换

把x(n)经FFT转到频域中为X(k),该信号频域分布如下图所示:

在这里插入图片描述

图2 原始信号频域分布(频谱)

对应Matlab如下:

%% 傅里叶变换
X=fft(x);                       % FFT
figure,plot(real(X),'r');title('信号频谱')

三、频域滤波/频域处理

然后在频域中进行处理滤波处理,频域处理后如下图所示:

在这里插入图片描述

图3频谱滤波

对应Matlab如下:

%%  频域滤波
Y=zeros(1,33);                  % 初始化Y
Y(1:7)=X(1:7);                  % 设定只取1-6条谱线
Y(28:33)=X(28:33);              % 构成相应对称的谱线
figure,plot(real(Y),'r');title('频域滤波处理')

四、原始信号恢复

将频域滤波后的频谱进行IFFT,即可恢复实数序列。

在这里插入图片描述

图4 原信号恢复

对应Matlab如下:

%% 信号恢复
y=ifft(Y);                      % FFT逆变换
n=1:N;
figure, plot(n,y,'b');

五、Matlab程序获取与验证

完整代码链接如下:

矩形波的FFT逆傅里叶变换恢复原始信号

可开展针对性验证实验,请私信博主。

猜你喜欢

转载自blog.csdn.net/m0_70745318/article/details/128211586