当前位置:编程学习 > Matlab >>

matlab代码 谁能帮忙解释一下的。前面的输入信号不用解释。就是设计低通滤波器的那些代码

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'); 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)|')
追问:
        	
				
还有我想问一下,上面的代码里面有2种滤波器的,一个是传统的,还有一个是改进的,出来的波形是有相位上面的差别的,难道只是通带截止频率不一样才使出来的波形不一样的?
还有我想问一下,上面的代码里面有2种滤波器的,一个是传统的,还有一个是改进的,出来的波形是有相位上面的差别的,难道只是通带截止频率不一样才使出来的波形不一样的?
答案:Wp = 100/fs; %设计滤波器的通带截止频率
Ws = 600/fs;%设计滤波器的阻带截止频率   
[n,Wn] = buttord(Wp,Ws,1,80);  %采用Butterworth型低通滤波器设计所需低通滤波器,n为BW
%型滤波器阶数,Wn为滤波器的3dB截频,1是和80分别是滤波器通带和阻带衰减
[a,b]=butter(n,Wn);    %这句借助MATLAB的help功能可以看到具体解释的,大概就是求出滤波器的系统函数的分子在多项式a和分母多项式b
[h,f]=freqz(a,b,'whole',fs);    %求出滤波器的频率特性
f=(0:length(f)-1)'*fs/length(f);   %设计频率范围
putong=filter(a,b,y); %对信号进行滤波
看你后面已经有注释了,应该是只要这段的吧
其他:给我分好不 没人会的话 %设计低通滤波器:
Wp = 100/fs; 
Ws = 600/fs;   
[n,Wn] = buttord(Wp,Ws,1,80);%WP是通带截止频率,WS是阻带截止频率。需要除以采样率的一半进行归一化,即变为(0-1)。
%通带最大衰减为1dB,阻带最小衰减为80dB
%返回值为巴特沃斯滤波器的阶数和3dB截止频率,是butter函数的调用参数
[a,b]=butter(n,Wn);%计算巴特沃斯滤波器函数分子分母的多项式向量,a、b,系数按z的-1次幂的升幂排列
[h,f]=freqz(a,b,'whole',fs);%求滤波器的频率响应    
f=(0:length(f)-1)'*fs/length(f);%进行对应的频率转换   
putong=filter(a,b,y); %通过滤波器后的值 

上一个:matlab神经网络30个案例分析第4个案例分析扩展代码。 就是神经网络遗传算法函数极值寻优那个案例的扩展!
下一个:100元跪求 基于matlab的车辆违规检测源代码

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,