一、原始信号模拟
现实中,由于得到的信号都是实数序列。设有实数序列x(n),如下图所示
对应Matlab如下:
%% 矩形波
N=33; % 设置N长
x=zeros(1,N); % 构成矩形波形
x(7:27)=1;
figure,plot(x,'r')
xlabel('样点'); ylabel('幅值');
二、傅里叶变换
把x(n)经FFT转到频域中为X(k),该信号频域分布如下图所示:
对应Matlab如下:
%% 傅里叶变换
X=fft(x); % FFT
figure,plot(real(X),'r');title('信号频谱')
三、频域滤波/频域处理
然后在频域中进行处理滤波处理,频域处理后如下图所示:
对应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,即可恢复实数序列。
对应Matlab如下:
%% 信号恢复
y=ifft(Y); % FFT逆变换
n=1:N;
figure, plot(n,y,'b');
五、Matlab程序获取与验证
完整代码链接如下:
矩形波的FFT逆傅里叶变换恢复原始信号
可开展针对性验证实验,请私信博主。