shiyanxinhao_fft.m

来自「傅里叶变换在matlab中的实现过程」· M 代码 · 共 63 行

M
63
字号
clc;
clear;
cd E:\Denoise_wavelet_Mod
load d1_ys;
load d1_qyz;
x=d1_qyz;
% xxref = fft(xref) ; %对原始信号进行傅里叶变换
% xxref = abs(xxref) ;
% % clc;
% % clear;
% % cd E:\Denoise_wavelet_Mod
% % load d_qyz;
% % x=dd';
[n,p]=size(x)
xx = fft(x) ; %对含噪声进行傅里叶变换
absxx = abs(xx);
%下面画出傅里叶变换后的频谱图
figure (3)
% subplot(3,2,1) ; plot(xxref) ;
% title ('原始信号的谱图') ;
plot(absxx) ;
title ( '含噪声信号的谱图') ;
%进行低通滤波,滤波频率0~
for i=100:2400 
   xx(i)=0;
end 
% for i=2400:2500
%     xx(i)=0;
% end
    
 xifft=ifft(xx); 
 magx=real(xifft);
 figure
 plot(magx)
 title ( '傅里叶变换消噪结果') ;
%  SNR=snr(dd',magx)
%  re=sum((magx-dd').^2)
%  RMSE=sqrt(1/n*re)

 %将变量名转换为公共名称
 signal=d1_ys;
% % signal=x;
denoising=magx;
 %求信噪比
SNR=snr(signal,denoising)
re=sum((denoising-signal).^2)
RMSE=sqrt(1/n*re)

% % % % % % % % % % % % % % % % % % 
%求平滑度
for i=1:(n-1)
    sig(i)=(signal(i+1)-signal(i)).^2;         %信号差分数的方差根
    den(i)=(denoising(i+1)-denoising(i)).^2;   %噪声差分数的方差根
end
Ps=sum(sig)
Pd=sum(den)
r=Pd/Ps      %平滑度指标
%求偏差
for i=1:n
    re(i)=signal(i)-denoising(i);       %原始信号与消噪后信号差
end
BIAS=mean(re)  %原始信号与估计信号的偏差
 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?