《MATLAB语言与滤波器设计》实验指导书实验一、MATLAB语言环境与基本运算一、实验目的及要求1.学习了解MATLAB语言环境2.练习MATLAB命令的基本操作3.练习MATLAB数值运算相关内容4.练习MATLAB符号运算相关内容5.撰写实验报告二、实验内容1.熟悉Matlab语言环境1).学习了解MATLAB语言环境操作窗口:Command/Workplace/History……编辑窗口:M-File/Figure/Gui/ModelMATLAB语言操作界面(主界面的各个窗口)变量查询命令who,whos结构查询表示A、B和C为双精度数值变量,而D为字符变量。目录与目录结构搜索路径在命令窗口中键入:path联机帮助2).MATLAB基本操作命令demos,clc,clf,clear,contro-c(^c),diarydemos:系统文件的演示clc:清除窗口里的所有命令clf:清除图形框clear:清除contro-c(^c):中断diary:日志文件2.Matlab数值运算与符号运算1).MATLAB数值运算相关内容MATLAB变量及变量赋值\symsxyfabcdeff=100*((y-x^2))^2+(1-x)^2;%给定的原始多项式a=diff(f,x);%求x一阶导数b=diff(a,x);%求x二阶导数c=diff(f,y);%求y一阶导数d=diff(d,y);%求y二阶导数%这一行应当是对c求导e=diff(a,y);%求x,y二阶偏导数f=diff(c,x);%求y,x二阶偏导数S=[a;c];%求一阶导数矩阵Q=[be;fd];%求二阶导数矩阵P=inv(Q);%求二阶导数逆矩阵H=[x;y];%给定初始的x(0)K=H-P*S;%求x(1)初等矩阵函数ones,zeros,eye,rand,randn,sizeones::生成全一矩阵zeros:生成全零矩阵eye::生成对角矩阵rand:生成零到一之间的随机矩阵randn:产生正态分布的随机数size:返回各维最大元素的个数矩阵的基本运算MATLAB的基本算术运算有:+(加)、-(减)、*(乘)、/(右除)\(左除)、^(乘方)。注意,运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。(1)矩阵加减运算假定有两个矩阵A和B,则可以由A+B和A-B实现矩阵的加减运算。运算规则是:若A和B矩阵的维数相同,则可以执行矩阵的加减运算,A和B矩阵的相应元素相加减。如果A与B的维数不相同,则MATLAB将给出错误信息,提示用户两个矩阵的维数不匹配。(2)矩阵乘法假定有两个矩阵A和B,若A为m×n矩阵,B为n×p矩阵,则C=A*B为m×p矩阵。(3)矩阵除法在MATLAB中,有两种矩阵除法运算:\和/,分别表示左除和右除。如果A矩阵是非奇异方阵,则A\B和B/A运算可以实现。A\B等效于A的逆左乘B矩阵,也就是inv(A)*B,而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。对于含有标量的运算,两种除法运算的结果相同,如3/4和4\3有相同的值,都等于0.75。又如,设a=[10.5,25],则a/5=5\a=[2.10005.0000]。对于矩阵来说,左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。对于矩阵运算,一般A\B≠B/A。(4)矩阵的乘方一个矩阵的乘方运算可以表示成A^x,要求A为方阵,x为标量。矩阵的特征运算det,eig,rank,svddet:求矩阵的特征值eig:特征值分解rank;求矩阵的秩svd:奇异值分解矩阵的分解运算1、Cholesky分解函数chol格式R=chol(X)%如果X为n阶对称正定矩阵,则存在一个实的非奇异上三角阵R,满足R'*R=X;若X非正定,则产生错误信息。[R,p]=chol(X)%不产生任何错误信息,若X为正定阵,则p=0,R与上相同;若X非正定,则p为正整数,R是有序的上三角阵。2、LU分解矩阵的三角分解又称LU分解,它的目的是将一个矩阵分解成一个下三角矩阵L和一个上三角矩阵U的乘积,即A=LU。函数lu格式[L,U]=lu(X)%U为上三角阵,L为下三角阵或其变换形式,满足LU=X。[L,U,P]=lu(X)%U为上三角阵,L为下三角阵,P为单位矩阵的行变换矩阵,满足LU=PX。3、QR分解将矩阵A分解成一个正交矩阵与一个上三角矩阵的乘积。函数qr格式[Q,R]=qr(A)%求得正交矩阵Q和上三角阵R,Q和R满足A=QR。[Q,R,E]=qr(A)%求得正交矩阵Q和上三角阵R,E为单位矩阵的变换形式,R的对角线元素按大小降序排列,满足AE=QR。[Q,R]=qr(A,0)%产生矩阵A的“经济大小”分解[Q,R,E]=qr(A,0)%E的作用是使得R的对角线元素降序,且Q*R=A(:,E)。R=qr(A)%稀疏矩阵A的分解,只产生一个上三角阵R,满足R'*R=A'*A,这种方法计算A'*A时减少了内在数字信息的损耗。[C,R]=qr(A,b)%用于稀疏最小二乘问题:minimize||Ax-b||的两步解:[C,R]=qr(A,b),x=R\c。R=qr(A,0)%针对稀疏矩阵A的经济型分解[C,R]=qr(A,b,0)%针对稀疏最小二乘问题的经济型分解函数qrdelete格式[Q,R]=qrdelete(Q,R,j)%返回将矩阵A的第j列移去后的新矩阵的qr分解函数qrinsert格式[Q,R]=qrinsert(Q,R,j,x)%在矩阵A中第j列插入向量x后的新矩阵进行qr分解。若j大于A的列数,表示在A的最后插入列x。4、特征值分解函数eig格式d=eig(A)%求矩阵A的特征值d,以向量形式存放d。d=eig(A,B)%A、B为方阵,求广义特征值d,以向量形式存放d。[V,D]=eig(A)%计算A的特征值对角阵D和特征向量V,使AV=VD成立。[V,D]=eig(A,'nobalance')%当矩阵A中有与截断误差数量级相差不远的值时,该指令可能更精确。'nobalance'起误差调节作用。[V,D]=eig(A,B)%计算广义特征值向量阵V和广义特征值阵D,满足AV=BVD。[V,D]=eig(A,B,flag)%由flag指定算法计算特征值D和特征向量V,flag的可能值为:'chol'表示对B使用Cholesky分解算法,这里A为对称Hermitian矩阵,B为正定阵。'qz'表示使用QZ算法,这里A、B为非对称或非Hermitian矩阵。说明一般特征值问题是求解方程:解的问题。广义特征值问题是求方程:解的问题。5、奇异值分解函数svd格式s=svd(X)%返回矩阵X的奇异值向量[U,S,V]=svd(X)%返回一个与X同大小的对角矩阵S,两个酉矩阵U和V,且满足=U*S*V'。若A为m×n阵,则U为m×m阵,V为n×n阵。奇异值在S的对角线上,非负且按降序排列。[U,S,V]=svd(X,0)%得到一个“有效大小”的分解,只计算出矩阵U的前n列,矩阵S的大小为n×n。基本数学函数1、矩阵的运算与点运算在MATLAB中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,所以叫点运算。点运算符有.*、./、.\和.^。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。多项式的运算1、直接输入2、用命令ploy创建2).MATLAB符号运算相关内容符号变量的定义符号表达式HelpSearch:SymbolicMathToolbox基本符号运算“+”、“—”、“*”、“/”、“\”、“^”符号运算的扩展扩展的符号数学工具箱扩展的符号数学工具箱允许访问所有的非图形化Maple包、Maple编程特性和Maple程序。Maple编程特性包含了循环和条件表达。也可以通过扩展符号数学工具箱使用特别的程序库或者程序包。实验二、MATLAB编程与绘图一、实验目的及要求1.练习MATLAB编程2.练习MATLAB二维绘图与三维绘图3.撰写实验报告二、实验内容1.MATLAB编程MATLAB关系运算MATLAB逻辑运算switch分支选择语句if条件语句for循环语句while循环语句2.MATLAB二维绘图与三维绘图MATLAB二维绘图plot,subplot,figurMATLAB三维绘图plot3,mesh,surf实验三、滤波器设计一、实验目的及要求1.数字信号变换技术2.双线性变换法设计IIR数字滤波器3.用窗函数法设计FIR数字滤波器4.撰写实验报告二、实验内容1.数字信号变换技术基本波形产生的方法信号的各种运算信号采样率的各种转换离散时间系统模型的表示方法与转换2.双线性变换法设计IIR数字滤波器1).用双线性变换法设计一个巴特沃斯低通滤波器。设计指标参数为:在通带内频率低于0.2π,最大衰落小于一1dB;在阻带内[0.3π,π]频率区间上,最小衰减大于15dB。2).以0.02π为采样间隔,打印出数字滤波器在频率区间[0,π/2]上的幅频响应特性曲线。3).用所设计的滤波器对实际心电图信号采样序列进行仿真滤波处理,并分别打印出滤波前后的心电图信号波形图,观察总结滤波作用与效果。3.窗函数法设计FIR数字滤波器1).用升余弦窗设计以线性低通FIR数字滤波器,截至频率为cw=π/4rad。窗长度为N=15,33。要求在两种长度情况下,分别打印出h(n),打印出响应的幅频特性和相频特性曲线。总结窗口长度N对滤波特性的影响。2).n=33,cw=π/4,用两种窗函数设计线性相位低通滤波器。绘制响应的幅频特性,观察3dB和20dB带宽以及阻带最小衰减,比较四种窗函数对滤波器特性的影响。