Fs = 1000;
T = 1/Fs;
L = 1000;
t = (0:L-1)*T;
x= 70*sin(2*pi*20*t) + 10*sin(2*pi*75*t); %加入20HZ和75HZ的信号
y =x+ 10*randn(size(t)); % 混入噪声信号
fs=Fs;%10000
N=1/fs;%1200;
plot(y); %画出输入信号
title('输入信号'); %标题
xlabel('t/y');
ylabel('幅度');
%设计低通滤波器:
Wp = 100/fs;
Ws = 600/fs;
[n,Wn] = buttord(Wp,Ws,1,80);
[a,b]=butter(n,Wn);
[h,f]=freqz(a,b,'whole',fs);
f=(0:length(f)-1)'*fs/length(f);
putong=filter(a,b,y);
%
NFFT = 2^nextpow2(L); % 求得最接近总采样点的 2^n,这里应该是 2^10=1024
Y = fft(y,NFFT)/L; %进行 fft 变换(除以总采样点数,是为了后面精确看出
%原始信号幅值)
f = Fs/2*linspace(0,1,NFFT/2+1);%频率轴(只画到 Fs/2 即可,由于 y 为实数,
%后面一半是对称的)
figure
% 画出频率幅度图形,可以看出 50Hz 幅值大概 0.7,120Hz 幅值大概为 1.
plot(f,2*abs(Y(1:NFFT/2+1))) %画出频幅图
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')
%
figure
plot(putong,'k'); %画出传统的巴特沃斯滤波器,黑色
hold on
Wp = 40/fs;
Ws = 600/fs;
[n,Wn] = buttord(Wp,Ws,1,80);
[a,b]=butter(n,Wn);
[h,f]=freqz(a,b,'whole',fs);
f=(0:length(f)-1)'*fs/length(f);
plot(y) %在对比图上面画出输入信号
sF=filter(a,b,y);
hold on
plot(x,'r'); %画出改进的巴特沃斯滤波器,并用红色(画出sf)等同于%plot sf
title('巴特沃斯滤波滤波效果对比');
legend(' 输入信号','','');
y=x;
NFFT = 2^nextpow2(L); % 求得最接近总采样点的 2^n,这里应该是 2^10=1024
Y = fft(y,NFFT)/L; %进行 fft 变换(除以总采样点数,是为了后面精确看出
%原始信号幅值)
f = Fs/2*linspace(0,1,NFFT/2+1);%频率轴(只画到 Fs/2 即可,由于 y 为实数,
%后面一半是对称的)
figure
% 画出频率幅度图形,可以看出 50Hz 幅值大概 0.7,120Hz 幅值大概为 1.
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')
小弟刚学matlab,对于前面的输入信号还能看懂,到后面就不太懂了,求大神们帮忙解读一下。