matlab信号处理学习总结(3)

2019-03-15 12:26

二、窗函数的使用

在 MATLAB下,这些窗函数分别为:

1.矩形窗:w=boxcar(n),产生一个 n点的矩形窗函数。 2.三角窗:w=triang(n),产生一个 n点的三角窗函数。 当 n为奇数时,三角窗系数为 w(k)= 当 n为偶数时,三角窗系数为 w(k)=

3.巴特利特窗:w=Bartlett(n),产生一个 n点的巴特利特窗函数。 巴特利特窗系数为 w(k)=

巴特利特窗与三角窗非常相似。巴特利特窗在取样点1和n上总以零结束,而三角窗在这 些点上并不为零。实际上,当 n为奇数时bartlett(n)的中心n-2个点等效于 triang(n-2)。

4.汉明窗:w=hamming(n),产生一个 n点的汉明窗函数。

汉明窗系数为w(k+1)=0.54-0.46cos( ) k=0,…,n-1

5.汉宁窗:w=hanning(n),产生一个 n点的汉宁窗函数。 汉宁窗系数为w(k)=0.5[1-cos( )] k=1,…,n

6.布莱克曼窗:w=Blackman(n),产生一个 n点的布莱克曼窗函数。

布莱克曼窗系数为w(k)=0.42-0.5cos(2π )+0.8cos(4π )] k=1,…,n 与等长度的汉明窗和汉宁窗相比,布莱克曼窗的主瓣稍宽,旁瓣稍低。

7.凯泽窗:w=Kaiser(n,beta),产生一个 n点的凯泽窗数,其中 beta为影响窗函数旁瓣 的 β参数,其最小的旁瓣抑制α与β的关系为: 0.1102(α-0.87) α>50

β= 0.5842(α-21)0.4+0.07886(α-21) 21≤α≤50 0 α<21

增加 β可使主瓣变宽,旁瓣的幅度降低。

8.契比雪夫窗:w=chebwin(n,r)产生一个 n点的契比雪夫窗函数。其傅里叶变换后的旁瓣 波纹低于主瓣r个db数。

例子1.FIR低通滤波器截止频率为200Hz,采样 频率为1000Hz,输入信号

x(t)=sin(100πt)+sin(500πt)滤波,求滤波器的输出.

n=1000; fc=200; fs=1000; w=2*fc/fs;

t=(0:1000)/fs;

window=boxcar(n+1); b=fir1(n,w,window); b=freqz(b,1,512,fs);

s = sin(100*pi*t)+sin(500*pi*t);%混 和正弦波信号 subplot(2,1,1);plot(t,s);

sf = filter(b,1,s);%对信号 s进行滤波 subplot(2,1,2);plot(t,sf);

3.绘制矩形窗的幅频响应,窗长分别为:N=10;N=20;N=50;N=100 分析四个窗函数窗长增加,幅频响应怎样. wc=0.2*pi; %设一个截止频率 %窗函数

w1=boxcar(10); w2=boxcar(20); w3=boxcar(50);

w4=boxcar(100); n1=1:1:10; n2=1:1:20; n3=1:1:50; n4=1:1:100;

%求 h(d)

hd1=sin(wc*(n-5.5))./(pi*(n-5.5)); hd2=sin(wc*(n-10.5))./(pi*(n-10.5)); hd3=sin(wc*(n-24.5))./(pi*(n-24.5)); hd4=sin(wc*(n-49.5))./(pi*(n-49.5));

%加窗

h1=hd1.*w1'; h2=hd2.*w2'; h3=hd3.*w3'; h4=hd4.*w4';

%求幅频特性曲线

[mag1,rad]=freqz(h1);

[mag2,rad]=freqz(h2); [mag3,rad]=freqz(h3); [mag4,rad]=freqz(h4);

%画幅频特性曲线

subplot(4,1,1);plot(rad,20*log10(abs(mag1)));title('N=10');xlabel('频率 /rad');ylabel('幅度/dB');

subplot(4,1,2);plot(rad,20*log10(abs(mag2)));title('N=20');xlabel('频率 /rad');ylabel('幅度/dB');

subplot(4,1,3);plot(rad,20*log10(abs(mag3)));title('N=50');xlabel('频率 /rad');ylabel('幅度/dB');

subplot(4,1,4);plot(rad,20*log10(abs(mag4)));title('N=100');xlabel('频率 /rad');ylabel('幅度/dB');

例子 2

1.含有5Hz、15Hz和 30Hz的 混和正弦波信号,设计一个 FIR带通滤波器,参数要求:采 样频率fs=100Hz,通带下限截止频 率fc1=10Hz,通带上限截止频率fc2=20Hz,过渡带宽 6Hz, 通阻带波动0.01,采用凯塞窗设计。

[n,Wn,beta,ftype]=kaiserord([7 13 17 23],[0 1 0],[0.01 0.01 0.01],100);

%得出滤波器的阶数n=38,beta=3.4

fc1=10; fc2=20; fs=100;

w1=2*fc1/fs; w2=2*fc2/fs;%将模拟滤波器的技术指标转换为数字滤波器的技术指标 window=kaiser(n+1,beta);%使用 kaiser窗函数

b=fir1(n,[w1 w2],window);%使用标准频率响应的加窗设计函数 fir1 freqz(b,1,512);%数字滤波器频率响应 t = (0:100)/fs;

s = sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30);%混和正弦波信号 subplot(2,1,1);plot(t,s);title('混合信号'); sf = filter(b,1,s);%对信号 s进行滤波

subplot(2,1,2);plot(t,sf);title('滤波后信号');xlabel('时间');ylabel('幅度');

2.设计一低通滤波器,通带为 0至1kHz, 阻带从 1500Hz到4000Hz,通带允差5%,阻带波 纹允差1%, 阻带衰减40dB。 fs=4000;

dev=[0.05 0.01];

fedge=[1000 1500]; N=200;

[n,Wn,beta,ftype]=kaiserord(fedge,[1 0],dev,fs); window=kaiser(n+1,beta);

b=fir1(n,[1000 1500]/fs,window);%使 用标准频率响应的加窗设计函数 fir1 freqz(b,1,512);%数字滤波器频率响应

4 FDATool设计法

FDATool(Filter Design & Analysis Tool)是 MATLAB信号处理工具箱专用的滤波器

设计分析工具,操作简单、灵活,可以采用多种方法设计 FIR和 IIR滤波器。在 MATLAB命 令窗口输入 FDATool后回车就会弹出 FDATool界面。

4.1 带通滤波器设计

已知滤波器的阶数n=38,beta=3.4。本例中,首先在 Filter Type中选择Bandpass; 在 Design Method选项中选择FIR Window,接着在 Window选项中选取Kaiser,Beta值为

3.4;指定 Filter Order项中的 Specify order为38;采样频率Fs=100Hz,截止频率 Fc1= 10Hz,Fc2=20Hz。设置完以后点击窗口下方的Design Filter,在窗口上方就会看到所设计 滤波器的幅频响应,通过菜单选项 Analysis还可以看到滤波器的相频响应、组延迟、脉冲 响应、阶跃响应、零极点配置等。设计完成后将结果保存为 kaiser15.fda文件。 4.2 Simulink仿真

在 Simulink环境下,将滤波器文件 kaiser15.fda导入 Digital Filter Design模块, 输入信号为s(t)=sin(10πt)+sin(30πt)+sin(60πt),生成的仿真图和滤波效果如图2所 示。

(1)Simulink仿真图 (2)滤波前后的离散波形 图 2 Simulink仿真图和滤波效果图 5 SPTool设计法

SPTool是 MATLAB信号处理工具箱中自带的交互式图形用户界面工具,它包含了信号 处理工具箱中的大部分函数,可以方便快捷地完成对信号、滤波器及频谱的分析、设计和 浏览。在本例中按以下步骤完成滤波器的设计和滤波: 创建并导入信号源。

在 MATLAB命令窗口输入命令: Fs=100;t = (0:100)/Fs;

s = sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30);

此时,变量Fs、t、s将显示在 workspace列表中。在命令窗口键入Sptool,将弹出 Sptool主界面,如图 3所示;点击菜单 File/Import将信号 s导入并取名为s。

(2)单击 Filters列表下的New,按照参数要求设计出滤波器filt1,具体步骤类似 于3.2.1。

(3)将滤波器 filt1应用到 s信号序列。分别在Signals、Filters、Spectra列表中 选择s、filt1、mtlbse,单击 Filters列表下的 Apply按钮,在弹出的 Apply Filter对 话框中将输出信号命名为sin15hz。

(4)进行频谱分析。在 Signals中选择s,单击 Spectra下的 Create按钮,在弹出

的 Spectra Viewer界面中选择 Method为FFT,Nfft=512,单击 Apply按钮生成 s的频谱 spect1。同样的步骤可以生成信号 sin15hz的频谱spect2。

分别选中信号s、sin15hz、spect1、spect2,单击各自列表下方的 View按钮,即可 观察他们的波形,如图 4所示。

图 3 SPTool主界面 图4 滤波前后的时域波形和频域特性

由图 4可以看出,带通滤波器 filt1使输入信号 s中频率为 15hz的正弦波信号通过, 而将频率为 5hz和 30hz的正弦波信号大大衰减。

matlab语音信号处理

fs=22050; %语音信号采样频率为 22050

x1=wavread('Windows Critical Stop.wav'); %读取语音信号的数据,赋给变量 x1

sound(x1,22050); %播放语音信号

y1=fft(x1,1024); %对信号做 1024点 FFT变换 f=fs*(0:511)/1024; figure(1)

plot(x1) %做原始语音信号的时域图形 title('原始语音信号'); xlabel('time n'); ylabel('fuzhi n');

figure(2)

freqz(x1) %绘制原始语音信号的频率响应图 title('频率响应图') figure(3)

subplot(2,1,1);

plot(abs(y1(1:512))) %做原始语音信号的 FFT频谱图 title('原始语音信号 FFT频谱')

subplot(2,1,2);


matlab信号处理学习总结(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《天鹅的故事》课堂实录

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: