《MATLAB基础与应用》课件_第1页
《MATLAB基础与应用》课件_第2页
《MATLAB基础与应用》课件_第3页
《MATLAB基础与应用》课件_第4页
《MATLAB基础与应用》课件_第5页
已阅读5页,还剩164页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1.2 MATLAB的特点 1、解释执行 2、变量单一 3、语法限制不严格 4、一流的数值计算功能 5、图形功能强大 6、强劲的工具箱 是一个强大的功能演算性草稿纸1.3 MATLAB的组成 MATLAB 软件由四部分组成: 1、基本部分(核心): 程序主体和基本函数(约700多个)。 2、专业扩展部分(工具箱) : 由大量专业函数组成(上千个函数)。 已有30多个工具箱。 1.3 MATLAB的组成 MATLAB 软件由四部分组成: 3、符号数学工具箱 : 基于Maple软件的符号数学引擎。 4、仿真工具箱(Simulink): 用于建立系统的数学模型和仿真分析等。 1.4 MATLAB界面

2、 命令窗口(command window) 历史命令窗口(command history) 当前目录窗口(current directory) 工作区窗口(workspace) 已安装部件窗口(launch pad) 菜单(Menu) 窗口(Windows) 1.4 MATLAB界面 菜单(Menu)命令窗口历史窗口和当前目录窗口工作区窗口和安装部件窗口当前路径1.5 MATLAB通用命令 1、help (帮助)help (显示已安装的函数库和工具箱 )help 子目录名/库名/工具箱 如:help general help comm help 函数名 如:help sin 1.5 MATLA

3、B通用命令 2、lookfor 关键字 (查找) 如:lookfor sound 3、clc (清除命令窗 )4、who (列出工作区中的内存变量) whos (列出工作区中的内存变量详情) 5、clear (清除工作区中的变量和函数 )1.5 MATLAB通用命令 6、edit (调用编辑器,编写程序) 7、! (运行外部程序) 如:!dir ;!calc(计算器) 8、demo ( MATLAB演示程序) 9、quit (退出MATLAB )10、上下箭头 (调出历史命令) 第 2 章 MATLAB基本语法 2.1 变量 1、标识符:表示变量名,常量名,函数名和文件名的字符串 (1)由字母

4、、数字、下划线等符号组成,第一个字母必须是英文字母 。(2)最长不要超过19个字符,多余截取。 (3)文件名还必须符合操作系统的要求。 (4)变量名大小写敏感。2.1 变量 (5)MATLAB中的特殊变量名,应避免使用。 例如: ans -默认临时变量 pi - eps -计算机中的最小数 inf -无穷大 NaN-非数或不定数(如:0/0) i或j -虚数单位2.1 变量 2、变量类型 :(2)字符(串):用单引号表示。 如:a=abc 实际上是一个由个字符的ASCII码组成的行向量。2.1 变量 3、矩阵 MATLAB中的变量或常量都代表一个矩阵, 所有的变量运算其实都是矩阵运算。 单个值

5、实际上是1*1阶矩阵。 矩阵元素可以是数值(实数或复数)或字符串。 一个由矩阵表示的变量可以是一个数、一组数、一个文件(如语音)、一幅图象等。 2.1 变量 3、矩阵 矩阵(Matrix)与数组(Array)的关系 : 矩阵运算有着严格理论 数组运算一般指元素运算2.1 变量 4、变量的查看: who/whos5、变量的保存和恢复: save 文件名 (缺省后缀为.mat)例如:save myvarload 文件名 例如:load myvar2.2 矩阵的赋值 1、矩阵的直接赋值 (1)基本赋值 1)使用 2)同一行元素用空格或,隔开 3)不同行用;隔开 例如:a=1 2 3;4 5 6 (2

6、)复数的赋值: 例如:z=1+2i或1+2j z=1+2i 3+4i z=1 3+2 4*i 2.2 矩阵的赋值 注意: 赋值结尾为“;” 则不显示结果。 一行不够时,可用“”换行。 矩阵的阶数也可通过下列函数获得: 对于一维,m=length(a) 为矩阵a的长度。 例如: a=1 2 3 length(a)为32.2 矩阵的赋值 注意: 矩阵的阶数也可通过下列函数获得: 对于二维,m,n=size(a), m为行数,n为列数 例如: a=1 2 3; 4 5 6 size(a)为2 32.2 矩阵的赋值 2、矩阵元素的赋值 (1)元素用(m,n)的形式表示第m行n列的元素值,可直接引用和赋

7、值。 例如,a(2,1)=4, 若将其改为9, 则可用a(2,1)=9。注意:如果元素下标超出原矩阵的维数,矩阵将自动扩大,多出的元素自动为0 。 2.2 矩阵的赋值 2、矩阵元素的赋值 (2) 给全行或全列赋值 : 用“:”代替行或列。 如:a(4,:)=11 12 13 14; a(:,5)=5;8;10;12 注意:行数或列数必须与原矩阵相同。 2.2 矩阵的赋值 3、矩阵的变换 (1)抽取:由原矩阵中的部分元素 构成新矩阵。 如:b=a(2,4,1,3) 表示第2,4行与第1、3列交叉元素组成新矩阵。 2.2 矩阵的赋值 3、矩阵的变换 (2)抽去:使用空矩阵(无元素),将矩阵整行/列

8、删除。 如:a(2,4,:)= 将2、4行删除 a(:,2)= 将第2列删除2.2 矩阵的赋值 3、矩阵的变换 (3) 组合:由多个矩阵组成一个新矩阵,但行列应正好。 如:a=1 2 3;4 5 6,b=7 8 9;10 11 12, c=a b,d=a;b。 (4)转置:b=a (行变列) 例如:a=1 2 3;4 5 6 ,则 a=1 4;2 5;3 62.2 矩阵的赋值 (5) 排列:b=a(:) 将所有列排成一列。 例如:a=1 2 3;4 5 6, a(:)=1;4;2;5;3;6 若先转置再排列,即实现按行排列。 (6) 变换函数: fliplr(a) (矩阵左右翻转) (flip

9、翻left right) flipud(a) (矩阵上下翻转) 。 。3、矩阵的变换 2.2 矩阵的赋值 4、间隔赋值(适合批量数据) (1) 变量=(first:increment:last)形式 如:t=(0:0.1:1) 则 t=0,0.1,0.2,1 (2) 线性间隔函数 linspace(first,last,num) 从first开始到last结束共num个元素, 间隔为(last-first)/(num-1) 如:t= linspace (0,1,11),t=0,0.1,1 2.2 矩阵的赋值 4、间隔赋值(适合批量数据) (3)对数间隔函数 logspace(first,las

10、t,num) 从10first开始到10last结束共num个元素 如:t= logspace (0,1,11),t=100,100.1,101 2.2 矩阵的赋值 5、基本矩阵 (1)空阵: (当操作无结果时,返回空阵) (2)全0矩阵:zeros(m,n) 例如:zeros(2,3)=0 0 0;0 0 0(3)全1矩阵:ones(m,n) (4)单位矩阵:eye(n) (对角线为1的方阵) (4)随机矩阵:rand(m,n) 2.3 矩阵的初等运算 1、加减法: 矩阵的加减就是对应元素的加减 。如:a=1 2 3;b=4 5 6,则a+b=5 7 8 , 如果矩阵与一常数(标量)相加减,

11、则把该常数看成是同阶的矩阵。例如:a+5=6 7 8 2.3 矩阵的初等运算 2、乘法 (1)矩阵相乘:mp阶矩阵A与pn阶矩阵B的乘积是一个m*n阶矩阵。例如: a=1 2 3;b=4 5 6 则:a*b=20. (2)矩阵与常数相乘等于每个元素乘以该常数,例:2*a。 2.3 矩阵的初等运算 2、乘法 (3)矩阵元素相乘(数组相乘):使用“.*” 相乘的两个矩阵阶数应相同 。例如:a=1 2 3;b=4 5 6 则:a.*b=4 10 18. 2.3 矩阵的初等运算 3、除法 (1)矩阵的除法 右除,“/” :A/B=A*B-1 (B的逆矩阵inv(B), B必须是方阵,A与B列应相等。左

12、除,“” :AB=A-1*B , A必须是方阵,A与B行应相等。 (2)矩阵除以常数,等于每个元素除以常数,使用普通除法/ 。2.3 矩阵的初等运算 3、除法 (3)矩阵元素的除法(数组相除):“./” :A./B为A各元素除以B中各元素。“.” :A.B=B./A 2.3 矩阵的初等运算 4、乘方 (1)矩阵乘方 :(乘方是乘法的扩充,为保证合法性,要求矩阵为方阵) a) A标量 :例 A2,A0.2 b) 标量A :例 A=1 2;3 4,2A= 10.4827 14.1519; 21.2278 31.71062.3 矩阵的初等运算 4、乘方 (2)元素的乘方: a) A.标量 : 例 A

13、=1 2 ,A.2=1 4 b) 标量.A :例 3.A =3 9 c) A.B :A、B同阶 例 A=1 2 ,B=3 4 ,则A.B=1 162. 4 矩阵的基本运算函数 1、矩阵的运算函数 指数函数 :expm() 对数函数 :logm() 开方函数 :sqrtm() 注意:变量必须是方阵 2. 4 矩阵的基本运算函数 2、矩阵元素的运算三角函数(25个):例如:t=1 2 3,y=sin(t) 指数/对数函数(7个): 例如:exp() 复数函数(8个):例如:abs() 取模 取整函数(7个):例:round() 四舍五入 2. 5 矩阵的逻辑运算 1、关系运算: 共6种 : (大于

14、) (小于) = (大于等于)= (小于等于) = = (等于) = (不等于)比较是在元素间进行的。 矩阵必须同阶 比较结果仍为矩阵,且元素值为0(假) 或1(真) 例如:a=1 2,b=2 1, 则ab=0 1,a=b=0 0 2. 5 矩阵的逻辑运算 2、逻辑运算 : 共有四种运算符号: & (与)、|(或)、 (非)、xor(异或) 矩阵元素值必须为逻辑值(0、1) 运算是在元素间进行的。比较结果仍为矩阵 例如:a=1 0,b=0 1,则:a&b=0 0 第 3 章 MATLAB基本绘图3.1 基本二维绘图 一、plot-基本二维绘图函数 1、格式1: plot(y) 功能:y是一向量

15、, 以y中元素的下标为横坐标, 元素值作为纵坐标,各点以直线相连。例如:y=1 2 3 2 1; plot(y) 3.1 基本二维绘图 如果格式1中的y为复数矩阵, 则相当于plot(real(y),imag(y)。 如果y为多行或多列矩阵,则绘制多条曲线。例如:y2=sin(2*pi*t) ;cos(2*pi*t);plot(t,y2); 2、格式2: plot(x,y) 功能:x,y具有相同的长度,绘图时以x元素值为横坐标,y元素值作为纵坐标,各点以直线相连。 例如:t=(0:0.05:1);y=sin(2*pi*t); plot(t,y); 3.1 基本二维绘图 3、格式3: plot(

16、x1, y1,x2,y2,) 功能:相当于,plot(x1,y1),plot(x2,y2),绘制多条曲线在一个图中。例如:t1=(0.5:0.05:1.5); y1=2*sin(2*pi*2*t1); plot(t,y,t1,y1); 3.1 基本二维绘图 4、格式4: plot(y,s) plot(x,y,s) plot(x1,y1,s1,x2,y2,s2) s为一字符串,用于设置绘图颜色和线型(见P32) 例如;plot(t,y,*b); plot(t, y,xr,t1,y1,:k) 3.1 基本二维绘图 二、多曲线绘图控制 1、图形保持 格式:hold on(off)功能:用于保持当前绘

17、图,以便在同一坐标上再绘制另外图形 。例如:plot(t,y); hold on; plot(t1,y1) 3.1 基本二维绘图 2、子图控制格式:subplot(m,n,p) 功能:将窗口分成m(行)*n(列)个子图, 并指定在第p个子图中绘图 例如:subplot(3,2,2); plot(t,y); subplot(3,2,3); plot(t1,y1); 3.1 基本二维绘图 3、窗口控制 格式:figure(n)功能:打开一个新窗口用于当前绘图,n为该窗口的句柄(唯一标识),用于在多个窗口中绘图。 例如:figure(1); plot(t,y); figure(2); plot(t1

18、,y1); 3.1 基本二维绘图 1、 title(s) 给图形加标题 例如: plot(t,y); title(sine wave) 2、 xlabel (s) 给x轴加标注 例如:xlabel(t(s) 3、 ylabel (s) 给y轴加标注 例如:ylabel(V(mv) 六、图形控制 3.1 基本二维绘图 4、 text (x,y,s)在图形指定位置(x,y)加标注 例如:text(0.5,0.8,t=0.5s v=0.8) 5、 legend (s1,s2,) 添加图例 例如:plot(t,y,t1,y1);legend(sine,cosine) 6、 grid on(off) 打

19、开、关闭坐标网格线 例如:grid off 7、zoom on(off) -允许放大/缩小 3.1 基本二维绘图 8、 axis 控制坐标轴的刻度 axis(xmin,xmax,ymin,ymax) 设定坐标轴的最大最小值 例如:plot(t,y);axis(-1 2 2 2) axis(equal)将两轴设为相等。 axis on(off) 显示或关闭坐标轴 3.2 特殊二维绘图例如:stem(t,y) 2、bar 绘制直方图 例如:bar(t,y)特殊图形库(specgraph)1、stem 绘制火柴杆图3、stairs 绘制阶梯图 例如:stairs (t,y,r) 3.2 特殊二维绘图

20、 4、area 区域图例如:x=ones(1,5);area(x) 注意同 bar 的区别5、 pie 饼图 例如:x=1 2 3 2 1 1 ; y=0 0 1 0 0 0; pie(x,y) 还有其它特殊函数。第4章 MATLAB 数值计算 数据分析和傅立叶变换 一、数据的基本分析 (按列分析)1、求最大最小值:max(data) / min(data) 例如:a=1 2 3;2 3 4;4 5 6 ;max(a)=4 5 62、求平均值:mean(data) 例如: mean(a)=2.33 3.33 4.33 3、求和:sum(data) 例如:sum(a)=7 10 134、差分:d

21、iff(data) (后面元素-前面元素值) 例如: diff(a) =1 1 1;2 2 2数据分析和傅立叶变换 二、相关与卷积 对两组数据(或两个信号),可求其相关、协方差和卷积等 1、求协方差: cov(x) 求x 的协方差阵 cov(x,y) 求x ,y的协方差2、求相关系数 corrcoef(x) 求x的自相关阵 corrcoef(x,y) 求x,y的互相关系数数据分析和傅立叶变换 二、相关与卷积 3、求卷积 conv(x,y)数据分析和傅立叶变换 三、傅立叶变换 可对数据(离散信号)求傅立叶变换 1、离散傅立叶变换: fft(x) 对序列x求DFT fft(x,N) 对序列x求FF

22、T例如:x=1 2 3 4 y=fft(x)=10 -2+ 2i -2 -2- 2i 2、离散傅立叶反变换: ifft( )同上。第5章 MATLAB基本程序设计 MATLAB程序设计方式: 草稿纸方式 (命令行方式)基本程序设计 (结构程序设计) 图形界面程序设计 (面向对象)5.1 M文件 一、主程序 1、一个主程序的例子 编写一个双音频程序,显示某个键的波形:(Hz)120913361477697123770456852789941*0#5.1 M文件 设主程序文件名为 mydt.m function mydt()% 函数MYDT()产生一个双音频 % By DTD 2003-3-20f

23、s=8000;t=(0:1/fs:0.2);f1=697;f2=1209; %键1对应的两个频率y=sin(2*pi*f1*t)+sin(2*pi*f2*t);plot(t,y);wavplay(y, fs) 5.1 M文件 5.1 M文件 2、主程序的组成 程序名(第一行) 帮助段(第2行开始带注释符%的行) 程序段(帮助段空一行以后开始) 如果有第一行(function ), 则主程序为函数文件形式 ,变量不保存到工作区中,为局部变量 . 如果没有第一行,则主程序为命令文件形式,相当于各命令行的集合。变量保存到工作区中 . 5.1 M文件 3、几点说明 文件名不能为汉字或数字开头 注释符%

24、后面的文字不执行 程序的每一行的执行相当于在命令行执行 一行可以写多条语句,以,或;隔开; 一行写不下时,以续行 对于命令文件形式,建议在程序段开始用 clear,close all等命令清除以前的变量 对于函数文件形式,程序中的所有变量 均为局部变量。 5.1 M文件 二、函数 函数是用用来定义子程序的。主程序实际上也是一个函数(由MATLAB调用)。1、函数头的形式: function 函数名( ) (无变量传递)function 函数名(var1,var2,) (无返回值)function y1,y2,= 函数名(var1,var2,) 5.1 M文件 2、函数的位置 函数可以是一个单独

25、的文件 (文件名和函数名应相同)函数也可以放在主程序的后面。 5.1 M文件 3、举例根据t,f1,f2生成双音频的函数function fy= mydtones(t,f1,f2)fy=sin(2*pi*f1*t)+sin(2*pi*f2*t); 该函数可以是单独文件或在主程序后面。例如: mydt1.m5.1 M文件 5.1 M文件 5.1 M文件 4、全局变量: 如果在主程序和函数中使用同一变量,应定义全局变量。global val1 val2 例: 编写函数文件求半径为r的圆的面积和周长。 函数文件如下: function s,p=fcircle(r)%CIRCLE calculate

26、the area and perimeter of a circle of radii r%r 圆半径%s 圆面积%p 圆周长%2004年7月30日编s=pi*r*r;p=2*pi*r;函数调用的一般格式是: 输出实参表=函数名(输入实参表) 要注意的是,函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个数一致,否则会出错。函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。例: 函数文件examp.m:function fout=charray(a,b,c)if nargin=1 fout=a;elseif nargin=2 fout=a+b;elsei

27、f nargin=3 fout=(a*b*c)/2;end 命令文件mydemo.m:x=1:3;y=1;2;3;examp(x)examp(x,y)examp(x,y,3)5.2 输入输出语句(人机交互) 1、屏幕输入 格式:x=input(提示符) - 等待输入数据 x=input(提示符,s) - 等待输入字符串 xm=input(Whats your name?,s); 5.3 程序控制语句 任何计算机语言都有三种基本结构,即:顺序结构:无控制语句分支结构:if , switch循环结构:for, while 5.3 程序控制语句 1、if 语句(适合分支少) 格式1:if 表达式 语

28、句 end格式2:if 表达式 语句1 else 语句2 end 5.3 程序控制语句 格式3: if 表达式1 语句1 elseif 表达式2 语句2 else 语句3 end例如:判断输入数的奇偶性n=input(n=);if rem(n,2)=0 display(n是偶数)else display(n是奇数)end 5.3 程序控制语句 2、switch语句(适合分支多) 格式: switch 表达式 case 值1 语句1 case 值2 语句2 otherwise 语句n end5.3 程序控制语句 例如:根据菜单选择显示不同的函数x=menu(波形,正弦,余弦,正切,余切);swi

29、tch xcase 1 ezplot(sin)case 2 ezplot(cos)case 3 ezplot(tan)case 4 ezplot(cot)end *try语句语句格式为:try 语句组1catch 语句组2Endtry语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。5.3 程序控制语句 3、for语句 格式:for 变量=初值:增量:终值 语句 end 例如:求100! x=1; for k=1:1:100 x=x*k; end x 5.3 程序控制语句 4、while 语句 格式:while 表达式 语

30、句 end例如:计算1, ,1000的和x=1;while x=0)u(t)= 0 (t=0); 然后再利用ezplot绘制,例如:ezplot(heaviside(t),-10 10) 3、常用连续信号举例 8.1 信号的时域表示 (2)单位冲激信号 (t)= 0 (t0); 用符号工具很难表示,一般是在0附近取一个很小的,幅度为1/。(见教材) (3)符号函数 可用函数 sign(t) ezplot(sign(t),-5,5) 1(t0)sgn(t)= - 1(t=0)u(n)= 0 (n0) 1 (n=0) (n)= 0 (n0)8.2 信号的时域运算与变换 一、连续信号的时域运算 利用

31、符号数学的函数可对连续信号进行运算。 1、加减 例如:syms t; y=sin(2*pi*t)+sin(4*pi*t) ezplot(y) 8.2 信号的时域运算与变换 一、连续信号的时域运算 2、相乘 例如:syms t; y= sin(2*pi*t)*sin(4*pi*t); ezplot(y) y1=sym(sin(2*pi*t)*heaviside(t); ezplot(y1,-5,5) 8.2 信号的时域运算与变换 二、连续信号的时域变换 在符号工具箱中有一个函数:subs(S,old,new) 将符号函数S中的old变量替换为new 例如:syms a b;subs( a+b,a

32、,4)=4+b 1、移位 例如:y= sym(heaviside(t); y1=subs(y,t,t-2); ezplot(y1,-5, 5); 8.2 信号的时域运算与变换 2、反折 例如:y1= subs(y,t,-t); ezplot(y1,-5, 5); 3、尺度变换 例如:y1= subs(y,t, t/2); ezplot(y1,-5, 5); 8.2 信号的时域运算与变换 例如:已知y(t)=(1+t/2)*u(t+2)-u(t-2) 画出y(t-2),y(-t),y(2t)的波形 syms ty=sym(1+t/2)*( heaviside(t+2)- heaviside(t-

33、2)y1=subs(y,t,t-2);ezplot(y1,-5,5)y2=subs(y,t,-t);ezplot(y2,-5,5)y3=subs(y,t,2*t);ezplot(y3,-2,2) 8.2 信号的时域运算与变换 三、离散信号的时域运算和变换 离散信号运算和变换只能用向量表示,而不能用符号表示。 参与运算的序列长度应相同,否则应补0。 例如:f1=-2 1 0 1 2,(n1=-2 1 0 1 2) f2=1,1,1 (n2=-1 0 1) f1+f2=-2 0 1 2 2对于序列长度不同或下标不同,需编程解决。 8.3 连续系统的时域分析 一、卷积积分 f1(t)和f2(t)卷积

34、为可用符号工具箱中的积分函数:int(S) 例如:syms tao tf1=sym(Heaviside(t)-Heaviside(t-1);f2=t*exp(-t);f=int(subs(f1,t,tao)*subs(f2,t,t-tao),tao,-inf,inf); 卷积积分也可用离散卷积的方法求的,离散间隔越小越接近。 8.3 连续系统的时域分析 二、连续系统的响应 设连续系统的微分方程为:利用控制工具箱(Control)中的有关函数可以分析连续系统的响应 用向量来描述系数:8.3 连续系统的时域分析 1、冲激响应 当输入为冲激信号时产生的零状态响应称为系统的冲激响应。 求连续系统冲激响

35、应的函数为:impulse() 8.3 连续系统的时域分析 1、冲激响应 (1)格式1:impulse(b,a) 以默认方式绘出向量a,b定义的连续系统的冲激响应的时域波形。 例如:连续系统的微分方程为: y(t)+5y(t)+6y(t)=3f(t)+2f(t) a=1 5 6; b=3 2; impulse(b,a)8.3 连续系统的时域分析 (2)格式2:impulse(b,a,t) 绘出连续系统在0-t时间范围内的冲激响应的时域波形 例如:impulse(b,a,10) (3)格式3:impulse(b,a,t1:p:t2) 绘出连续系统在t1-t2时间的冲激响应的时域波形 例如:imp

36、ulse(b,a,1:0.1:10) 8.3 连续系统的时域分析 (4)格式4:y=impulse(b,a,t1:p:t2) 返回在t1-t2时间内的冲激响应的数值,不绘图。 8.3 连续系统的时域分析 2、阶跃响应 求系统冲激响应的函数为:step()格式和用法同impulse 完全相同。 8.3 连续系统的时域分析 3、系统响应 求连续系统响应的函数为:lsim() (1)格式1:lsim(b,a,x,t) b,a是描述系统的微分方程的系数。x,t 是输入信号的行向量。绘出系统响应。 例如:a=1 2 1;b=1 2; t=0:0.1:10; x=sin(2*pi*t); lsim(b,a

37、,x,t)8.3 连续系统的时域分析 3、系统响应 (2)格式2:y=lsim(b,a,x,t) 返回响应值,不绘图 8.4 离散系统的时域分析 一、卷积和 f1(k)和f2(k)卷积为 可用数值计算中的求卷积函数:conv() 格式:f=conv(f1,f2) f1,f2为离散序列(向量) f为卷积和, f的长度为f1、f2长度和减1 8.4 离散系统的时域分析 例如:f1=1 1 1 1 1; f2=1 1 1; f=conv(f1,f2)= 1 2 3 3 3 2 1 subplot(3,1,1);stem(f1);xlim( 0,10); subplot(3,1,2);stem(f2)

38、; subplot(3,1,3);stem(f); 8.4 离散系统的时域分析二、离散系统的响应 设离散系统的差分方程为:利用信号处理工具箱(Signal)中的有关函数可以分析离散系统的响应。 用向量来描述系数:8.4 离散系统的时域分析1、冲激响应 求离散系统冲激响应的函数为:impz() (1)格式1:impz(b,a) 以默认方式绘出向量a,b定义的离散系统的冲激响应的时域波形 例如:对于离散系统 y(k)-y(k-1)+0.9y(k-3)=f(k) a=1 1 0 0.9; b=1; impz(b,a)8.4 离散系统的时域分析 (2)格式2:impz(b,a,n) 绘出离散系统在0-

39、n范围内冲激响应的时域波形 例如:impz(b,a,50) (3) 格式3:impz(b,a,n1:n2) 绘出离散系统在n1-n2范围内的冲激响应的时域波形 例如:impz(b,a,10:80) 8.4 离散系统的时域分析 (4) 格式4:y=impz(b,a,n1:n2) 返回在n1-n2时间内的冲激响应的数值,不绘图。 例如:y=impz(b,a,10:80)8.4 离散系统的时域分析2、系统响应 对于给定系统(差分方程)和输入序列,可以求出系统的响应 利用函数:filter() 格式:y=filter(b,a,x) b,a 离散系统差分方程的系数向量。 x为输入序列。 该函数返回输出(

40、响应)序列 (长度与x相同) 8.4 离散系统的时域分析2、系统响应 例如:n=0:20; x=sin(0.1*pi*n); y=filter(b,a,x); plot(y) 第 9 章 MATLAB在数字信号处理中的应用 信号处理工具箱(Signal Processing Toolbox): Waveform generationTransforms Filter design Filter analysis and implementationStatistical signal processing 9.1 离散时间信号一 、离散时间信号的表示 1、用序列向量表示 y=f(n)=,f(-

41、1),f(0),f(1),. 需要注意的是: 向量下标是从1开始的,不能为负数,在绘 图时必须指定n的范围,且 n必须为整数。 绘图时应使用stem 绘图命令 例如:y=1 2 3 2 1; n=(-2:2),stem(n,y) 9.1 离散时间信号一 、离散时间信号的表示 2、由连续信号抽样得到 对连续信号y=f(t) ,令t=nTs,y(n)=f(nTs) 例如:n=(0:10); y=sin(2*pi*n*0.1); stem(n,y) 9.1 离散时间信号 二、常见的波形生成函数 (除sin等通用函数外,还提供其它一些函数)(1)方波 y=square(t) 产生周期为2的方波。 例如

42、:t=(0:0.01:1); y=square(2*pi*10*t); plot(t,y)9.1 离散时间信号 二、常见的波形生成函数 (2)三角波(锯齿波) y=sawtooth(t)产生周期为2的三角波。(3)抽样函数 y=sinc(x) 即:y=sin(x)/(x) 还有其它函数,help signal。9.1 离散时间信号 三、序列的运算 (序列的运算就是矩阵元素的运算)(1)加减运算 (2)乘除运算(.* ;./)(3)移位(改变下标位置)(4)折叠(翻转)(5)周期延拓(6)卷积(conv)(7)相关(xcorr)(8)能量(共轭相乘再求和)9.2 离散傅立叶变换一 、常用的变换

43、MATLAB信号处理工具箱提供以下变换: 1、线性调频Z变换 :czt( )2、离散余弦变换:dct( )3、离散傅立叶变换:fft( )4、Hilbert变换: hilbert()还有一些其它变换和逆变换。9.2 离散傅立叶变换二、离散傅立叶变换格式:y=fft(x) y=fft(x,N)当N为2的幂次时,采用基2的快速算法, 否则采用混合基算法。当N大于x点数时,补零。当N小于于x点数时,截断。9.2 离散傅立叶变换二、离散傅立叶变换格式:y=fft(x) y=fft(x,N)例如:x=1 2 3 fft(x)= 6.0000 -1.5000 + 0.8660i -1.5000 - 0.8

44、660i9.2 离散傅立叶变换三、离散傅立叶变换用于频谱分析9.2 离散傅立叶变换三、离散傅立叶变换用于频谱分析例如:设有一个被噪声污染的双音频信号,利用fft分析其频谱。9.2 离散傅立叶变换fs=8000; t=(0:1/fs:1);y=sin(2*pi*697 *t)+sin(2*pi*1209*t);y=awgn(y, -10, measured);plot(t,y); wavplay(y, fs)N=1024; % 以下可编一函数drawfft(y,N,fs)fy=fft(y,N); fy=abs(fy);f=(0:N/2-1)*fs/N;plot(f,fy(1:N/2)9.3 滤波

45、器分析和实现一 、数字滤波器的描述 Z变换: (系统的传递函数) 反映系统的复频特性。9.3 滤波器分析和实现一 、数字滤波器的描述 (序列)付氏变换: (系统的频率响应) 反映系统的频率特性。9.3 滤波器分析和实现一 、数字滤波器的描述 9.3 滤波器分析和实现差分方程表示:对于FIR(有限冲击响应),分母为19.3 滤波器分析和实现二 、数字滤波器的分析 1、数字滤波器的频率响应格式:freqz(b,a)绘制幅频和相频曲线 为滤波器系数向量。 其它格式参考:help freqz9.3 滤波器分析和实现二 、数字滤波器的分析 1、数字滤波器的频率响应例如:9.3 滤波器分析和实现2、数字滤

46、波器的冲激响应格式:impz(b,a) 绘制冲激响应图 h,t=impz(b,a) 返回冲激响应值例如:9.3 滤波器分析和实现3、零极点图格式:zplane(b,a) 画出零极点图例如:9.3 滤波器分析和实现4、群时延 滤波器的群时延是滤波器平均延迟相对于频率的函数,是相位响应的负一阶导数。 即:群时延格式:grpdelay(b,a) 绘制群时延曲线9.3 滤波器分析和实现三、数字滤波的实现 根据输入序列和滤波器参数计算输出序列。 格式:y=filter(b,a,x) b,a 为滤波器系数向量。 x 为输入序列 9.3 滤波器分析和实现三、数字滤波的实现 例如: 9.4 FIR滤波器的设计

47、一 、基于窗函数的FIR滤波器设计 格式:b=fir1(N,Wn,ftype,window) N:滤波器阶数 Wn:归一化频率参数(向量) 取值(01)对应频率(0fs/2) ftype:滤波器类型(缺省为低通) low (低通), high (高通) band(带通),stop(阻带) window:窗函数类型(缺省为Hamming) rectwin;triang;hann;blackman b为滤波器的系数向量,长度为N19.4 FIR滤波器的设计例1:设计一个低通滤波器将由697Hz和 1209Hz组成的双音频信号中的 1209Hz滤掉。分析:利用fir1设计一低通滤波器:设fs8000Hz,截止频率为1000Hz,取N63Wn=1000/4000=0.259.4 FIR滤波器的设计例1:9.4 FIR滤波器的设计例2:设计一个高通滤波器将上例中的 697Hz 滤掉。分析:设截止频率为1000Hz,取N63Wn=1000/4000=0.259.4 FIR滤波器的设计例2:9.4 FIR滤波器的设计例3:设计一个带通滤波器将上例中的双音频 信号的带外噪声进行滤波。分析:设通带的两个截止频率为600Hz和1300Hz,对应的归一化频率为600/4000,1300/4000,则Wn=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论