《测试信号分析与处理》实验报告
测试信号实验报告

测试信号实验报告实验一一实验目的1. 在理论学习的基础上,通过本次试验,加深对快速傅里叶变换的理解,熟悉FFT算法及其程序的编写。
2.应用FFT对信号进行频谱分析。
3.了解应用FFT进行信号频谱分析过程中可能出现的问题,以便今后能在实际中应用FFT。
二实验内容1.用Matlab产生正弦波,矩形波,以及白噪声信号,并显示各自时域波形图2.进行FFT变换,显示各自频谱图,其中采样率,频率、数据长度自选3.做出上述三种信号的均方根图谱,功率图谱,以及对数均方根图谱4.用IFFT傅立叶反变换恢复信号,并显示恢复的正弦信号时域波形图源程序三实验原理在各种信号序列中,有限长序列占有重要地位。
对有限长序列,可以利用离散傅里叶变换(DFT)进行分析。
DFT不但可以很好地反映序列的频谱特性,而且易于用快速算法(FFT)在计算机上实现。
有限长序列的DFT是其Z变换在单位圆上的等距采样,或者说是序列傅里叶变换的等距采样,因此可以用于序列的谱分析。
FFT是DFT的一种快速算法,它是对变换式进行一次次分解,使其成为若干小点数的组合,从而减少运算量。
常用的FFT是以2为基数的,其长度N。
它的效率高,程序简单,使用方便。
当要变换的序列长度不等于2的整数次方时,为了使用以2为基数的FFT,可以用末尾补零的方法,使其长度延长至2的整数次方。
在MATLAB中,可用函数FFT来实现,其调用格式为y=FFT(x)或y=FFT(x,N)y=FFT(x)为利用FFT算法计算矢量的离散傅里叶变换,当x为矩阵时,y为矩阵x每一列的FFT。
当x的长度为2的整数次方时,则FFT函数采用基2的算法,否则采用稍慢的混合基算法。
y=FFT(x,N)采用N点FFT。
当x的长度小于N时,FFT函数在x的尾部补零,以构成N点数据;当x 的长度大于N>时,FFT会截断序列x。
四试验程序%***************1.正弦波****************%fs=100;%设定采样频率N=128;n=0:N-1;t=n/fs;f0=10;x=sin(2*pi*f0*t);figure(1);subplot(231);xlabel('t');ylabel('y');title('正弦信号y=2*pi*10t时域波形'); grid;%进行FFT变换并做频谱图y=fft(x,N);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);figure(1);subplot(232);plot(f,mag);axis([0,100,0,80]);xlabel('频率(Hz)');ylabel('幅值');title('正弦信号y=2*pi*10t幅频谱图N=128'); grid;sq=abs(y);figure(1);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('正弦信号y=2*pi*10t均方根谱'); grid;power=sq.^2;figure(1);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('正弦信号y=2*pi*10t功率谱');grid;ln=log(sq);figure(1);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('正弦信号y=2*pi*10t对数谱');grid;xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的正弦信号波形');grid;%****************2.矩形波****************% fs=10;%设定采样频率t=-5:0.1:5;x=rectpuls(t,2);x=x(1:99);figure(2);subplot(231);plot(t(1:99),x);%作矩形波的时域波形xlabel('t');ylabel('y');title('矩形波时域波形');grid;%进行FFT变换并做频谱图y=fft(x);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(2);subplot(232);plot(f,mag);%做频谱图xlabel('频率(Hz)');ylabel('幅值');title('矩形波幅频谱图');grid;%求均方根谱sq=abs(y);figure(2);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('矩形波均方根谱');grid;%求功率谱power=sq.^2;figure(2);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('矩形波功率谱');grid;%求对数谱ln=log(sq);figure(2);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('矩形波对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(2);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的矩形波波形');grid;%****************3.白噪声****************% fs=10;%设定采样频率t=-5:0.1:5;x=zeros(1,100);x(50)=100000;figure(3);subplot(231);plot(t(1:100),x);%作白噪声的时域波形xlabel('t');ylabel('y');title('白噪声时域波形');grid;%进行FFT变换并做频谱图y=fft(x);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(3);subplot(232);plot(f,mag);%做频谱图xlabel('频率(Hz)');ylabel('幅值');title('白噪声幅频谱图');grid;%求均方根谱sq=abs(y);figure(3);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('白噪声均方根谱');grid;%求功率谱power=sq.^2;figure(3);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('白噪声功率谱');grid;%求对数谱ln=log(sq);figure(3);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('白噪声对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(3);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的白噪声波形'); grid;五实验结果图正弦信号频谱图图1正弦信号的时域波形图2正弦信号的幅频谱图图3正弦信号的均方根谱图4正弦信号的功率谱图5正弦信号的对数谱图6 用IFFT转换的正弦信号波形矩形波图1矩形波的时域波形图2矩形波的幅频谱图图3矩形波的均方根谱图4矩形波的功率谱图5矩形波的对数谱图6 用IFFT转换的矩形波波形白噪声图1白噪声的时域波形图2白噪声的幅频谱图图3白噪声的均方根谱图4白噪声的功率谱图5白噪声的对数谱图6 用IFFT转换的白噪声波形六实验感想通过这一次Matlab的实验,让我对Matlab在系统设计与处理系统中的应用有了一定的了解,使我意识到实践是非常重要的,也让我我对FFT与IFFT有了进一步的理解,并了解到正弦波,矩形波和白噪声的各种图谱。
信号分析与处理实验报告

实验一1、基本信号的表示及可视化(1)单位冲激信号 (t)程序:t=-1:0.001:1; %定义时间向量for i=1:3; %采用循环语句观察i取不同值时的图形dt=1/(i^4);X=(1/dt)*((t>=(-1/2*dt))-(t>=(1/2*dt)));%计算函数值subplot(1,3,i);%将图像分成三部分同时观察stairs(t,X);title('单位冲激信号δ(t)');end(2)单位阶跃信号程序:t=-0.5:0.001:1;%定义时间变量,间隔为0.001S=stepfun(t,0);%定义单位阶跃信号S1=stepfun(t,0.5);%定义单位阶跃延迟信号figure(1);plot(t,S);axis([-0.5 1 -0.2 1.2]);title('单位阶跃信号')%画出图形figure(2);plot(t,S1);axis([-0.5 1 -0.2 1.2]);title('单位阶跃延迟信号')(3)抽样信号f=sin(t)./t;程序:t=-10:0.6:10; %向量t时间范围t=t1:p:t2,p为时间间隔f=sin(t)./t;plot(t,f,'o'); %显示该信号的时域波形title('f(t)=Sa(t)(时间间隔为0.6s)'); %标题xlabel('t') %横坐标标题axis([-10,10,-0.4,1.1]) %横坐标和纵坐标范围(4)单位样值序列和单位阶跃序列A.单位序列δ(k)B.单位阶跃序列ε(k)程序:n1=-10;n2=10;%输入序列的起始点n=n1:n2;k=length(n);x1=zeros(1,k);x1(1,-n1+1)=1;%产生单位样值序列subplot(2,1,1);%绘图stem(n,x1,'filled');x2=ones(1,k);x2(1,1:-n1)=0;subplot(2,1,2);stem(n,x2,'filled');2、信号的频域分析已知周期方波信号0||2()0||22E t f t T t ττ⎧<⎪⎪=⎨⎪<<⎪⎩,当02T τ=, 04T τ=,08T τ=时,画出其幅度谱和相位谱,观察不同周期下,()f t 的频谱图有何区别。
(完整word版)信号分析与处理实验报告程序+报告内容(非常全)

0,11)N -的输入序列,把它按⎩⎨⎧+=)12()2(r x r x 2N W ,title('傅立叶反变换');3.2.4 实验结果图(workspace里的各数据结果在此不一一列出)由图可知,离散时间信号经过傅里叶变换和傅里叶反变换后,没有发生改变,说明了程序的正确性。
3.2.5 频谱混叠%% 验证主程序clc;clear allTs=0.005; %采样时间间隔N=64; %采样点数T0=N*Ts; %采样时间长度M=N*Ts/T0; %M*T0为采样时间,M=1表示采样为整周期采样,M不等于1会发生频谱泄露M1=N1*Ts1/T1;for n=1:N1xx1(n)=10*sin(2*pi*50*n*Ts1+pi/3); %要进行傅立叶变换的连续时间函数endyy1=fft(xx1,N1); %对时域信号做傅立叶变换deltaf1=1/(T1*M1); %书上(6-78)for n=1:N1/2+1yy2(n)=yy1(n); %书上(6-76)endsubplot(2,1,2)f1=0:deltaf1:N1/2*deltaf1; %stem(f1,abs(yy2))xlabel('f/Hz');ylabel('|X(k)|/(A)');title('傅立叶变换');得到图像:四、实验分析1、比较快速傅里叶变换与离散傅里叶变换计算效率对于N 点DFT ,需进行2N 次复数乘法及(1)N N - 次复数加法,而对于同样点数的FFT ,则只需2log 2NN 次复数乘法和 2Nlog N 次复数加法,大大加快了运算速度。
2、离散傅里叶变换与z 变换的关系:有限长序列()x n 的离散傅里叶变换也可以定义为它的z 变换在z 平面单位圆上N 等分的均匀采样,即()[()]()k Nz W X k DFT x n X z -===同时,z 变换可由离散傅里叶变换通过内插函数构造。
测试信号分析与处理案例

101测试信号分析与处理案例【案例4。
1】在采用非抑制调幅技术设计测试系统时,如果调制波信号幅值有正有负,在调制前把调制波和一个足够大直流偏置信号相加。
解调后的信号再与同样的直流偏置信号相减。
否则解调波中的部分波形相位将发生180°滞后.【案例4.2】数字式电能表检测电能的工作原理大多是通过实时检测入户电压和电流,并将电压信号和电流信号进行乘法运算得到各时刻的瞬时电功率,并按时间积分电功率后得到电能值.【案例4。
3】在汽车进行平稳性试验时,测得汽车在某处的加速度的时域波形如图4。
7(a )所示。
将此信号送入信号处理机处理,获得图4。
7(b )所示的相关函数.由相关图看出车身振动含有某一周期振动信号,从两个峰值的时间间隔为s 11.0,可算出周期振动信号的频率为()Hz T f 911.011===(a )汽车加速度的时域波形 (b )汽车加速度的自相关函数图4。
7 加速度时域波形及其自相关函数【案例4.4】在一般正常情况下,悬臂梁的振动波形为正弦波,然而由于背景噪声或瞬间干扰等因素的影响,在一些时域区间信号的周期性难以呈现,为此利用自相关分析来识别采集信号的周期性,以判断测得信号是否含有较大的干扰信号.如图4。
8(引自参考文献20)所示,其中(a )为采集到的波形。
对原采集的振动波形进行自相关处理,得到的波形如图4.8(b )所示,自相关函数在时移1ms 时趋于零,毫无疑问悬臂梁振动波形无周期性,证明测得信号具有较大干扰信号。
【案例4。
5】在对某齿轮箱进行故障检测与诊断时,由于测取的振动信号信噪比很低,特征信号频率较高,信号消噪难度大,故障特征信号难以提取。
图4.9(引自参考文献21)为振动信号及其功率谱。
对原振动信号进行自相关计算,能有效消噪,提高信噪比。
图4。
10(引自参考文献21)为振动信号的自相关时域波形及其功率谱图。
可见信号经自相关计算后,时域图呈明显周期性,功率谱图中80Hz 频率十分明显.经分析,该频率信号是模拟不平衡、未校准、机械松动引起的低频干扰。
信号分析与处理实验报告

华北电力大学实验报告||实验名称FFT的软件实现实验(Matlab)IIR数字滤波器的设计课程名称信号分析与处理||专业班级:电气化1308 学生姓名:袁拉麻加学号: 2 成绩:指导教师:杨光实验日期: 2015-12-17快速傅里叶变换实验一、实验目的及要求通过编写程序,深入理解快速傅里叶变换算法(FFT)的含义,完成FFT和IFFT算法的软件实现。
二、实验内容利用时间抽取算法,编写基2点的快速傅立叶变换(FFT)程序;并在FFT程序基础上编写快速傅里叶反变换(IFFT)的程序。
三:实验要求1、FFT和IFFT子程序相对独立、具有一般性,并加详细注释;2、验证例6-4,并能得到正确结果。
3、理解应用离散傅里叶变换(DFT)分析连续时间信号频谱的数学物理基础。
四、实验原理:a.算法原理1、程序输入序列的元素数目必须为2的整数次幂,即N=2M,整个运算需要M 级蝶形运算;2、输入序列应该按二进制的码位倒置排列,输出序列按自然序列排列;3、每个蝶形运算的输出数据军官占用其他输入数据的存储单元,实现“即位运算”;4、每一级包括N/2个基本蝶形运算,共有M*N/2个基本蝶形运算;5、第L级中有N/2L个群,群与群的间隔为2L。
6、处于同一级的各个群的系数W分布相同,第L级的群中有2L-1个系数;7、处于第L级的群的系数是(p=1,2,3,…….,2L-1)而对于第L级的蝶形运算,两个输入数据的间隔为2L-1。
b.码位倒置程序流程图开始检测A序列长度nk=0j=1x1(j)=bitget(k,j);j=j+1Yj<m?Nx1=num2str(x1);y(k+1)=bin2dec(x1);clear x1k=k+1c.蝶形运算程序流程图五、程序代码与实验结果a.FFT程序:%%clear all;close all;clc;%输入数据%A=input('输入x(n)序列','s');A=str2num(A);% A=[1,2,-1,4]; %测试数据%%%%校验序列,%n=length(A);m=log2(n);if (fix(m)~=m)disp('输入序列长度错误,请重新输入!');A=input('输入x(n)序列','s');A=str2num(A);elsedisp('输入正确,请运行下一步')end%%%码位倒置%for k=0:n-1for j=1:m %取M位的二进制数%x1(j)=bitget(k,j); %倒取出二进制数%endx1=num2str(x1); %将数字序列转化为字符串%y(k+1)=bin2dec(x1); %二进制序列转化为十进制数%clear x1endfor k=1:nB(k)=A(y(k)+1); %时间抽取序列%endclear A%%%计算%for L=1:m %分解为M级进行运算%LE=2^L; %第L级群间隔为2^L%LE1=2^(L-1); %第L级中共有2^(L-1)个Wn乘数,进行运算蝶运算的两数序号相隔LE1%W=1;W1=exp(-1i*pi/LE1);for R=1:LE1 %针对第R个Wn系数进行一轮蝶运算,共进行LE1次%for P=R:LE:n %每个蝶的大小为LE% Q=P+LE1;T=B(Q)*W;B(Q)=B(P)-T;B(P)=B(P)+T;endW=W*W1;endendB %输出X(k)%%%验证结果:例6-4b.IFFT程序:%%clear all;close all;clc;%输入数据%A=input('输入X(k)序列','s');A=str2num(A);% A=[6,2+2i,-6,2-2i]; %测试数据%%%%校验序列,%n=length(A);m=log2(n);if (fix(m)~=m)disp('输入序列长度错误,请重新输入!');A=input('输入x(n)序列','s');A=str2num(A);elsedisp('输入正确,请运行下一步')end%%%码位倒置%for k=0:n-1for j=1:m %取M位的二进制数%x1(j)=bitget(k,j); %倒取出二进制数%endx1=num2str(x1); %将数字序列转化为字符串%y(k+1)=bin2dec(x1); %二进制序列转化为十进制数%clear x1endfor k=1:nB(k)=A(y(k)+1); %时间抽取序列%endclear A%%%计算%for L=1:m %分解为M级进行运算%LE=2^L; %第L级群间隔为2^L%LE1=2^(L-1); %第L级中共有2^(L-1)个Wn乘数,进行运算蝶运算的两数序号相隔LE1%W=1;W1=exp(-1i*pi/LE1);for R=1:LE1 %针对第R个Wn系数进行一轮蝶运算,共进行LE1次%for P=R:LE:n %每个蝶的大小为LE%Q=P+LE1;T=B(Q)*W;B(Q)=B(P)-T;B(P)=B(P)+T;endW=W*W1;endendB=conj(B); %取共轭%B=B/n %输出x(n)%验证结果:六、实验心得与结论本次实验借助于Matlab软件,我避开了用C平台进行复杂的复数运算,在一定程度上简化了程序,并添加了简单的检错代码,码位倒置我通过查阅资料,使用了一些函数,涉及到十-二进制转换,数字-文本转换,二-文本转换,相对较复杂,蝶运算我参考了书上了流程图,做些许改动就能直接实现。
测试信号分析处理实验报告

《测试信号分析与处理》课程试验报告试验名称:快速傅立叶变换算法(FFT)在信号频谱分析中的应用及滤波器的设计和实现试验目的:通过本试验,基本掌握FFT算法的实现原理,同时能利用MATLAB语言编写完成FFT算法,并对给定的信号进行频谱分析。
按照给定的数字滤波器设计指标,完成相应数字滤波器的设计。
试验设备:通用计算机+MATLAB 6.0软件。
试验步骤:1、产生给定的需要分析的周期性信号,利用FFT算法对产生的周期性信号进行频谱分析。
2、按照给定的数字滤波器设计指标,设计完成相应的数字滤波器。
试验内容:1、理解FFT算法的基本原理;2、掌握MATLAB编程的基本语言;3、会利用MATLAB语言实现FFT算法。
4、利用实现的FFT算法对给定的周期性离散信号进行频谱分析,并绘出频谱图。
5、理解数字滤波器设计指标,完成数字滤波器设计。
试验的难点和要点:1、依据采样定理,对给定的信号选择合适的采样周期进行离散化。
2、熟练使用MATLAB语言中的FFT库函数对采样信号进行傅立叶变换。
3、利用MATLAB 绘图语言绘制傅立叶变换后的信号频谱图。
4、利用MATLAB 语言设计完成给定指标的数字滤波器。
试验过程记录:1、利用FFT 实现对信号频谱分析的基本原理(介绍试验内容中所涉及到的信号分析理论,注意介绍说明要规范和完整)本实验是求函数x=sin(2*pi*50*t)+sin(2*pi*25*t)的频谱曲线,实验中通过在0到1.023之间以0.001的间隔取了1024个点绘制两个正弦函数的叠加曲线,然后进行频谱分析。
由于序列的长度为1024=2^10,所以可以采用基2时析型FFT 算法。
序列长度1024=2^10,因此运算级数为10级。
第一步:先通过构造一个循环函数求出输入序列的按倒序重排的序列,然后接下来的运算是建立在这个重排序列的基础上。
第二步:通过构造一个三级嵌套循环求出该序列的傅里叶变换函数。
其中第三级循环函数中包含两个循环函数,第一个循环函数用来求出奇序列的值,第二个循环函数用来求出偶序列的值。
《测试信号分析与处理》实验报告

《测试信号分析与处理》实验一差分方程、卷积、z变换一、实验目的通过该实验熟悉 matlab软件的基本操作指令,掌握matlab软件的使用方法,掌握数字信号处理中的基本原理、方法以及matlab函数的调用。
二、实验设备1、微型计算机1台;2、matlab软件1套三、实验原理Matlab 软件是由mathworks公司于1984年推出的一套科学计算软件,分为总包和若干个工具箱,其中包含用于信号分析与处理的sptool工具箱和用于滤波器设计的fdatool工具箱。
它具有强大的矩阵计算和数据可视化能力,是广泛应用于信号分析与处理中的功能强大且使用简单方便的成熟软件。
Matlab软件中已有大量的关于数字信号处理的运算函数可供调用,本实验主要是针对数字信号处理中的差分方程、卷积、z变换等基本运算的matlab函数的熟悉和应用。
差分方程(difference equation)可用来描述线性时不变、因果数字滤波器。
用x表示滤波器的输入,用y表示滤波器的输出。
a0y[n]+a1y[n-1]+…+a N y[n-N]=b0x[n]+b1x[n-1]+…+b M x[n-M] (1)ak,bk 为权系数,称为滤波器系数。
N为所需过去输出的个数,M 为所需输入的个数卷积是滤波器另一种实现方法。
y[n]= ∑x[k] h[n-k] = x[n]*h[n] (2)等式定义了数字卷积,*是卷积运算符。
输出y[n] 取决于输入x[n] 和系统的脉冲响应h[n]。
传输函数H(z)是滤波器的第三种实现方法。
H(z)=输出/输入= Y(z)/X(z) (3)即分别对滤波器的输入和输出信号求z变换,二者的比值就是数字滤波器的传输函数。
序列x[n]的z变换定义为X (z)=∑x[n]z-n (4)把序列x[n] 的z 变换记为Z{x[n]} = X(z)。
由X(z) 计算x[n] 进行z 的逆变换x[n] = Z-1{X(z)}。
Z 变换是Z-1的幂级数,只有当此级数收敛,Z 变换才有意义,而且同一个Z 变换等式,收敛域不同,可以代表不同序列的Z 变换函数。
测试信号的分析与处理

(3) 模拟信号的输入范围; 如,5V, +/-5V,10V,+/-10V等。
(四) 信号截断、能量泄漏及窗函数 1、截断与泄漏 数字处理需要截断过长的信号时间历程,而只对有 限长信号进行处理。信号乘以有限宽的窗函数就实现了 截断。 窗函数就是在模数转换过程中或数据处理过程中对 时域信号取样时所采用的截断函数。图示为时域余弦函
数被矩形窗函数截断后其时频域变化情况。 由于信号在时域上被截断而在频域上出现附加频率
的现象称为泄漏。
2、几种常用的窗函数简介 由窗函数的频谱可见,在-2π/τ<ω< 2π/τ 之间的部分称为主瓣,其余两旁的部分,即附加频率分 量称为旁瓣。 当窗宽τ增大时,主瓣和旁瓣的宽度都变窄,主瓣 高度恒等于窗宽。 τ→∞时,G(ω) →δ(ω),那么无限
1 T Rxx ( ) lim x(t ) x(t )dt T T 0
对于周期信号,自相关函数表达为:
1 T Rxx ( ) x(t ) x(t )dt T 0
(二)相关系数
xy
自相关系数:
E [( x x )( y y )]
x y
同样地,以有限长样本作互相关函数的估计:
1 T Rxy ( ) x(t ) y (t )dt T 0
(二) 互相关函数的基本性质 1、互相关函数并非偶函数,也并非奇函数,而是: Rxy(τ)= Ryx(-τ)
1 T Rxy ( ) lim x(t ) y (t )dt T T 0 1 T 1 T lim x(t ) y (t )dt lim y (t ) x(t )dt Ryx ( ) T T 0 T T 0
需注意,满足采样定理,只保证不发生频率 混叠,而不能保证此时的采样信号能真实地反映 原信号x(t)。工程实际中采样频率通常大于信号 中最高频率成分的3到5倍。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
测控1005班齐伟0121004931725 (18号)实验一差分方程、卷积、z变换一、实验目的通过该实验熟悉 matlab软件的基本操作指令,掌握matlab软件的使用方法,掌握数字信号处理中的基本原理、方法以及matlab函数的调用。
二、实验设备1、微型计算机1台;2、matlab软件1套三、实验原理Matlab 软件是由mathworks公司于1984年推出的一套科学计算软件,分为总包和若干个工具箱,其中包含用于信号分析与处理的sptool工具箱和用于滤波器设计的fdatool工具箱。
它具有强大的矩阵计算和数据可视化能力,是广泛应用于信号分析与处理中的功能强大且使用简单方便的成熟软件。
Matlab软件中已有大量的关于数字信号处理的运算函数可供调用,本实验主要是针对数字信号处理中的差分方程、卷积、z变换等基本运算的matlab函数的熟悉和应用。
差分方程(difference equation)可用来描述线性时不变、因果数字滤波器。
用x表示滤波器的输入,用y表示滤波器的输出。
a0y[n]+a1y[n-1]+…+a N y[n-N]=b0x[n]+b1x[n-1]+…+b M x[n-M] (1)ak,bk 为权系数,称为滤波器系数。
N为所需过去输出的个数,M 为所需输入的个数卷积是滤波器另一种实现方法。
y[n]= ∑x[k] h[n-k] = x[n]*h[n] (2) 等式定义了数字卷积,*是卷积运算符。
输出y[n] 取决于输入x[n] 和系统的脉冲响应h[n]。
传输函数H(z)是滤波器的第三种实现方法。
H(z)=输出/输入= Y(z)/X(z) (3)即分别对滤波器的输入和输出信号求z变换,二者的比值就是数字滤波器的传输函数。
序列x[n]的z变换定义为X (z)=∑x[n]z-n (4) 把序列x[n] 的z 变换记为Z{x[n]} = X(z)。
由X(z) 计算x[n] 进行z 的逆变换x[n] = Z-1{X(z)}。
Z 变换是Z-1的幂级数,只有当此级数收敛,Z 变换才有意义,而且同一个Z 变换等式,收敛域不同,可以代表不同序列的Z 变换函数。
这三种数字滤波器的表示方法之间可以进行相互转换。
四、实验步骤1、熟悉matlab软件基本操作指令。
读懂下列matlab程序指令,键入程序并运行,观察运行结果。
Conv.m% 计算两个序列的线性卷积;%-----------------------------------------------------------------clear;N=5;M=6;L=N+M-1;x=[1,2,3,4,5];h=[6,2,3,6,4,2];y=conv(x,h);nx=0:N-1;nh=0:M-1;ny=0:L-1;subplot(231);stem(nx,x,'.k');xlabel('n');ylabel('x(n)');grid on;subplot(232);stem(nh,h,'.k');xlabel('n');ylabel('h(n)');grid on;subplot(233);stem(ny,y,'.k');xlabel('n');ylabel('y(n)');grid on;filter.m;%求一个离散系统的输出;clear;x=ones(100);t=1:100;b=[.001836,.007344,.011016,.007374,.001836]; a=[1,-3.0544,3.8291,-2.2925,.55075];y=filter(b,a,x);clear;impz .m% 计算滤波器的冲击响应b=[.001836,.007344,.011016,.007374,.001836]; a=[1,-3.0544,3.8291,-2.2925,.55075];[h,t]=impz(b,a,40);subplot(221)stem(t,h,'.');grid on;ylabel('h(n)')xlabel('n')filter.m% 计算滤波器的阶跃响应x=ones(100);t=1:100;y=filter(b,a,x);subplot(222)plot(t,x,'g.',t,y,'k-');grid on;ylabel('x(n) and y(n)')xlabel('n')freqz.m%用来在已知B(z),A(z)的情况下求出系统的频率响应;% 求如下三个系统的幅频响应;b1=[1/2,1/2];b2=[1/2,-1/2];b3=[1 0 1];b3=b3/2;[H1,P]=freqz(b1);subplot(331);plot(P/2/pi,abs(H1));grid on;[H2,P]=freqz(b2);subplot(332);plot(P/2/pi,abs(H2));grid on;[H3,P]=freqz(b3);subplot(333);plot(P/2/pi,abs(H3));grid on;zplane(b,a); % 求并画出所给系统的极零图b=[1 -1.7 1.53 -0.68];a=1;subplot(222);zplane(b,a); % 求并画出第二个系统的极零图、2,程求出下列问题的解1)、滤波器的差分方程为:y[n]=x[n]-0.8x[n-1]-0.5y[n-1]求出此滤波器脉冲响应和阶跃响应的前十个采样值。
b=[1,-.8,];a=[1,.5];[h,t]=impz(b,a,10);subplot(221)stem(t,h,'.');grid on;ylabel('h(n)');xlabel('n');x=ones(1,10);t=1:10;y=filter(b,a,x);subplot(222)stem(t,y);grid on;ylabel('x(n) and y(n)');xlabel('n');2)、系统的脉冲响应为h[n]=e-n(u[n]-u[n-3]),用卷积求系统的阶跃响应。
N=25;M=3;L=N+M-1;x=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];h=[1,.3679,.1353];y=conv(x,h);nx=0:N-1;nh=0:M-1;ny=0:L-1;subplot(231);stem(nx,x,'.k');xlabel('n');ylabel('x(n)');grid on;subplot(232);stem(nh,h,'.k');xlabel('n');ylabel('h(n)');grid on;subplot(233);stem(ny,y,'.k');xlabel('n');ylabel('y(n)');grid on;五、实验讨论和分析1、差分方程、卷积、z变换和傅里叶变换之间如何进行转换?答:差分方程;a0y[n]+a1y[n-1]+a2y[n-2]+`````+aNy[n-N]=b0x[n]+b1x[n-1]+……+bMx[n-M]卷积是由输入x[n]所引起的全部输出y[n]是所有这些加权脉冲相应之和。
即y{n}=x[n]*h[n]只要知道脉冲响应和输入就可以得到输出Z变换是把时域信号向频域进行转换X(z)=∑x[n]zˇ-n Y(z)=∑y[n]zˇ-n 脉冲响应是传输函数的逆z变换傅里叶变换X(Ω)=∑x[n]eˇ-jnΩ2、边界效应是如何产生的?它对信号的滤波效果有何影响?答:多数情况下,采样开始之前的输入情况是未知的,当脉冲响应与未知的的输入采样点重叠时,由于实际的输出值可能受采样开始之前输入信号的影响,所以无法准确的计算输出。
计算的开始和末尾都存在这种现象。
仅当输入序列与脉冲响应完全重叠时,计算才有意义,这种现象就是边界效应。
当一个系统开始运行或条件改变时,输出需要一些时间过渡到新的稳态。
边界效应会产生输出的暂态部分和稳态部分,会影响滤波效果,并且会导致失真现象出现。
实验二数字滤波器综合设计一、实验目的通过该设计实验掌数字滤波器设计的一般步骤,掌握利用matlab 软件设计数字滤波器的方法,熟悉sptool工具箱的使用方法。
二、实验设备1、微型计算机1台;2、matlab软件1套三、实验原理一)、滤波器的形状及重要参数理想滤波器的形状是矩形,图 1 给出非理想滤波器。
图1通带:增益高的频率范围,信号可以通过,称为滤波器的通带。
阻带:增益低的频率范围,滤波器对信号有衰减或阻塞作用,称滤波器的阻带。
滤波器截止频率:增益为最大值的0.707倍时所对应的频率为滤波器截止频率增益通常用分贝(dB)表示。
增益(dB)= 20log(增益)增益为0.707 时对应-3dB,因此截止频率常被称为-3dB。
滤波器的带宽:对于低通滤波器宽带是从0 ~ - 3dB对于高通滤波器宽带是从- 3dB~采样频率的一半对于带通滤波器带宽是截止频率之间的频率距离二)加窗低通FIR 滤波器的设计1. 在过渡带宽度的中间,选择通带边缘频率(Hz):f1=所要求的通带边缘频率+(过渡带宽度)/22. 计算Ω1=2πf1/fs,并将此值代入理想低通滤波器的脉冲响应h1[n] 中:h1[n] = sin(nΩ1)/nπ3. 从表中选择满足阻带衰减及其他滤波器要求的窗函数,用表中N 的公式计算所需要的非零项数目。
选择奇数项,这样脉冲响应可以完全对称,避免了滤波器产生相位失真,对于|n|≤(N-1)/2,计算窗函数w[n]。
4. 对于|n|≤(N-1)/2,从式h[n]=h1[n]w[n]计算(有限)脉冲响应,对于其他n 值h[n]=0,此脉冲响应是非因果的。
5. 将脉冲响应右移(N-1)/2,确保第一个非零值在n=0处,使此低通滤波器为因果的。
三)、设计低通巴特沃斯滤波器:1) 确定待求通带边缘频率fp1 Hz 、待求阻带边缘频率fs1 Hz 和待求阻带衰减- 20logδsdB(或待求阻带增益20logδsdB)。
通带边缘频率对应–3dB增益。
2) 用式Ω=2πf/fs 把由Hz 表示的待求边缘频率转成由弧度表示的数字频率,得到Ωp1 和Ωs1 。