MATLAB讲义第二章
Matlab第2章讲稿

A/B:右除。相当于A*inv(B) :右除。相当于 ( ) A\B: 左除。相当于 左除。相当于inv(A)*B;一般用于求解线性代数 ; 方程组
A=[1 2;3 4]; B=[3 5;8 6]; A./B 和B.\A比较 比较 ans = 0.3333 0.4000 0.3750 0.6667 A/B和B/A比较 和 比较 ans = 0.4545 -0.0455 0.6364 0.1364 ans = 1.5000 0.5000 -7.0000 5.0000
3、数组和矩阵的除运算 、 (1)数组、矩阵与标量间的除法运算:规则是标量 )数组、矩阵与标量间的除法运算: 与数组的每个元素进行除法运算; 与数组的每个元素进行除法运算;矩阵和标量只 有矩阵右除标量可运算(即矩阵/标量 标量)。 有矩阵右除标量可运算(即矩阵 标量)。 (2)数组、矩阵的除法运算:规则不同 )数组、矩阵的除法运算: • 维数相同的两数组除法是对应元素之间相除。 维数相同的两数组除法是对应元素之间相除。 如 A./B(右除)与B.\A(左除)结果相同 (右除) (左除)
2.2.2
数组、 数组、矩阵操作
1、元素提取 、 A是m行n列矩阵 是 行 列矩阵 A(i,j) (i<=m且j<=n)由A中i指定行,j指定列的元素 且 指定行, 由 中 指定行 指定列的元素 A(i,:)由数组或矩阵中 指定行所对应的所有列元素组 由数组或矩阵中i指定行所对应的所有列元素组 由数组或矩阵中 成的子数组 A(:,j)由数组或矩阵中 指定列所对应的所有行元素组 由数组或矩阵中j指定列所对应的所有行元素组 由数组或矩阵中 成的子数组 A(:)由数组 的各个列按从左到右的次序首末相接的 由数组A的各个列按从左到右的次序首末相接的 由数组 一维长列” “一维长列”子数组
matlab讲义第2章

3.Debug主菜单项 (1)Open M-Files when Debugging:调试时打开M文件 (2)Step:单步调试程序 (3)Step In:单步调试进入子程序 (4)Step Out:单步调试从子程序跳出 (5)Continue:程序执行到下一断点 (6)Clear Breakpoints in All Files:清除所有打开文件中的断点 (7)Stop if Errors/Warnings:在程序出错或报警处停止往下执行 (8)Exit Debug Mode:退出调试模式
4
2.Edit主菜单项 (1)Undo:撤销上一步操作 (2)Redo:重新执行上一步操作 (3)Cut:剪切选中的对象 (4)Copy:复制选中的e to Workspace:粘贴到工作区 (7)Select All:全部选择 (8)Delete:删除所选的对象 (9)Find:查找所需选择的对象 (10)Find Files:查找所需文件 (11)Clear Command Window:清除命令窗口区的对象 (12)Clear Command History:清除命令窗口区的历史记录 (13)Clear Workspace:清除工作区的对象
精品
matlab第2章
2、MATLAB系统构成:五部分
MATLAB开发环境 MATLAB数学函数库 MATLAB语言 MATLAB图形处理系统 MATLAB应用程序接口(API)
3、工具箱是MATLAB的关键部分
MATLAB每年都会增加一些新的工具箱,所以,在一般情况下,工具箱的列表不是 固定不变的。 有关MATLAB工具箱的最新信息可以在http://www. /products中看到。
8
5.Window主菜单项 (1)Close All documents:关闭所有文档 (2)0 Command Window:选定命令窗口为当前活动窗口 (3)1 Command History:选定历史命令窗口为当前活动窗口 (4)2 Current Directory:选定当前路径窗口为当前活动窗口 (5)3 Workspace:选定工作空间窗口为当前活动窗口
matlab课件 第二章 Matlab基础

2017/1/10
19
矩阵操作
1、矩阵下标
A(m,n):提取第m行,第n列元素 A(:,n):提取第n列元素 A(m,:):提取第m行元素 A(m1:m2,n1:n2):提取第m1行到第m2行和第 n1列到第n2列的所有元素(提取子矩阵)。 A(:):得到一个长列矢量,该矢量的元素按矩阵的 列进行排列。
2017/1/10
14
3.建立大矩阵 大矩阵可由方括号中的小矩阵或向量建立起来。 4.利用冒号表达式建立一个向量 冒号表达式可以产生一个行向量,一般格式是 e1:e2:e3 其中,e1为初始值,e2为步长(可以为负数),e3 为终止值。
例如:>>a=[1:2:10] a= 1 3 5 7 9
2017/1/10 15
短格式,5位有效数字浮点数
长格式,15位有效数字浮点数 3.333333333333334e+001 十六进制格式 2个十进制位 正、负或零 有理格式 4040aaaaaaaaaaab 33.33 + 100/3
10
复数和复数矩阵
MATLAB的矩阵元素可以是复数或复数表达式,在matlab 中,用i或j字元来表示虚部。 x=1-2*i 注意是2*i而不是2i real(x) 列出实部 imag(x) 列出虚部 conj(x) 计算共轭复数 abs(x) 计算复数大小 angle(x) 计算复数向量的夹角(弧度表示) y=exp(x) 以指数方式表示一个复数
命令语句的输入,也就完成了它的执行,直接便可得 到最终结果。例如
>>a=5; >>b=6; >>c=a*b,
结果显示
c= 30
2017/1/10
7
MATLAB讲义第2讲

2013-7-27
2.2 命令窗口 (续)
>>who
Your variables are: circle_len area radius
>>whos
Name Size Bytes Class area 1x1 8 double array circle_len 1x1 8 double array radius 1x1 8 double array Grand total is 3 elements using 24 bytes
Matlab Language
20
பைடு நூலகம்
2013-7-27
2.1 数值表示、变量及表达式 (续)
Matlab预定义的变量
变量名 ans eps pi inf i或j NaN 意义 最近的计算结果的变量名 MATLAB定义的正的极小值=2.2204e-16 圆周率π ∞值,无限大 虚数单元,sqrt(-1) 非数,0/0、∞/ ∞
11
2.6 获取在线帮助
MATLAB提供的帮助信息有两类
简单纯文本帮助信息
help
lookfor(条件比较宽松)例:inverse
窗口式综合帮助信息(文字、公式、图形)
doc
helpwin
2013-7-27
Matlab Language
12
〘功能演示-1〙求方程的根
5 3 2 求方程 2 x 3 x 71 x 9 x 13 0 的全部根。
2013-7-27
Matlab Language
6
2.2 命令窗口 (续)
数值显示格式设置 缺省显示格式:简洁的短(short g,7位有效数字)格式 窗口命令及语法格式:format 显示格式关键字 如:format long %15位数字显示 常见通用命令 命令 clc clear who或whos dir cd type help或doc quit或exit
matlab讲义2

例3:编写一个脚本文件将华氏温度转化为摄氏温度 5 c ( f 32) 9 新建一个 M 文件 f2cs.m,内容如下:
clear; % 清除当前工作空间中的变量 f=input('Please input Fahrenheit temperature:'); c=5*(f-32)/9;
1
18/10/1012
所谓M脚本文件是指: (1)该文件中的指令形式和前后位置,与解决 同一个问题时在指令窗中输入的那组指令没有 任何区别。 (2)MATLAB在运行这个脚本时,只是简单地从 文件中读取那一条条指令,送到MATLAB中去执 行。 (3)与在指令窗中直接运行指令一样,脚本文 件运行产生的变量都是驻留在MATLAB基本工作 空间中。 (4)文件扩展名是“.m”。
1 18/10/1012
3.程序的暂停 暂停程序的执行可以使用pause函数,其调 用格式为: pause(延迟秒数) 如果省略延迟时间,直接使用pause,则将 暂停程序,直到用户按任一键后程序继续 执行。 若要强行中止程序的运行可使用Ctrl+C命 令。
1
18/10/1012
选择结构 是根据给定的条件成立或不成立,分别执 行不同的语句。Matlab 用于实现选择结构的语句有 if 语句和 switch 语句。
1 18/10/1012
输出:
a= 11 12 13 14 15 16 17 18 b= 1 2 3 4 5 6
7
8
9 10
调用该命令文件时,不用输入参数,也没有 输出参数,文件自身建立需要的变量。当文 件执行完毕后,可以用 whos 查看工作空间中 的变量。这里会发现a,b,c仍然保留在工作空间 中。
第二章MATLAB基础

-128~ 127
-32768~32767
-2147483648 ~2147483647 -9.2234e+18~9.2234
e+18
4
【例 2.1】通过转换函数创建整数类型 >> x=102; >> y=102.49; >> z=102.5;
>> xx=int32(x)
>> x=uint32(210);y=single(32.356);z=15.254;
>> xy=x*y
%错误的运算式
错误使用 .*
整数只能与相同类的整数或标量双精度值组合使用。 %系统提示的错误原因
>> xz=x*z
xz =
3203
10
>> whos Name Size x 1x1 xz 1x1 y 1x1 z 1x1
ceil(a)
向 不 小 于 a的最接近的整数 取整
ceil(4.3)结果为5 ceil(4.5)结果为5
7
数据类型参与的数学运算与MATLAB中默认的双精度 浮点运算不同。当两种相同的整数类型进行运算时,
结果仍然是这种整数类型;当一个整型数值与一个双
精度浮点类型数值进行数学运算时,计算结果是这种 整数类型,取整采用默认的四舍五入方式。
21
作为一种编程语言,MATLAB中为编程保留了一些 关 键 字 : break 、 case 、 catch 、 classdef 、 continue 、 else 、 elseif 、 end 、 for 、 function 、 global 、 if 、 otherwise、parfor、persistent、return、spmd、switch、 try、while,这些关键字在程序编辑窗口中会以蓝色 显示(可以自己改变),它们是不能作为变量名的,否 则会出现错误。
matlab-第二章

1,在一个MA TLAB命令中,6+7i和6+7*i有何区别?i和I有何区别?第一个i代表一个变量,6+7i是一个函数,第二个代表虚数,6是实部,7代表虚步.I只代表变量.2,.设A和B是两个同大小的矩阵,试分析A*B和A.*B、A./B和B.\A、A/B和B/A的区别?如果A和B是两个标量数据,结论又如何?A *B是矩阵相乘,A.*B表示A和B单个元素之间对应相乘。
A./B和B.\A值相等,是一样的。
A/B等效于B的逆右乘A的矩阵,B\A等效于B矩阵逆左乘A矩阵。
如果A和B是两个标量数据,结论是都没有区别。
3,写出完成下列操作的命令。
(1)删除矩阵A的第7号元素A(7)=[](2)将向量t的0元素用机器零来代替t(find(t==0))=eps(3)将含有12个元素的向量x转换成3*4矩阵newA=reshape(A,3,4)(4) 求一个字符串的ASCIIch=['a b c';'1 2 3'];abs ch(5) 产生和A同样大小的幺矩阵ones(size(A))(6) 从矩阵A提取主对角线元素,并以这些元素构成对角阵B。
A=[1 2 3;4 5 6;7 8 9];D=diag(A)B=diag([1,5,9])4, .要生产均值为3,方差为1的500个正态分布的随机序列,写出相应的表达式y=3+sqrt(1)*randn(500)5,(1)主对角元素1 1 5 9上三角矩阵1 -1 2 30 1 -4 20 0 5 20 0 0 9下三角矩阵1 0 0 05 1 0 03 0 5 011 15 0 9逆矩阵-0.1758 0.1641 0.2016 -0.0227-0.1055 -0.1016 -0.0391 0.0664-0.0508 -0.0859 0.1516 0.00230.3906 -0.0313 -0.1813 0.0281行列式的值1280秩4范数A1=norm(A,1)=20 A2=norm(A)= 21.3005 A3=norm(A,inf)=35条件数A1=cond(A,1)= 14.4531 A2=cond(A,2)= 11.1739 A3=cond(A,inf)= 22.0938迹16(2)主对角元素0.43 4上三角矩阵0.4300 43.0000 2.00000 4.0000 21.0000下三角矩阵0.4300 0 0-8.9000 4.0000 0逆矩阵0.0022 -0.01750.0234 -0.0017-0.0035 0.0405行列式的值秩2范数B1=norm(B,1)= 47 B2=norm(B)= 43.4271 B3=norm(B,inf)= 45.4300 条件数B2=cond(B,2)= 1.9354迹4.43006,all(A)=0any(A)=1isnan(A)= 0 1 0 0 0 0 0isinf(A)= 0 0 1 1 0 0 0isfinite(A)= 1 0 0 0 1 1 1。
第2章MATLAB的基本语法课件

handmard
Handmard矩 rosser 阵
hankel hilb invhilb
Hankel矩阵 toeplize Hilbert矩阵 vander
Hilbert逆矩 wilkinson 阵
魔方矩阵
Pascal矩阵
经典的对称 特征值测试 矩阵 Toeplize矩阵
Vanderm阵
此外,常用的函数还有reshape(A,m,n),它在 矩阵总元素保持不变的前提下,将矩阵A重新 排成m×n的二维矩阵。
4. 建立大矩阵 大矩阵可由方括号中的小矩阵建立起来。 例如
A=[1 2 3;4 5 6;7 8 9]; C=[A,eye(size(A)); ones(size(A)),A]
C=
3. 内存变量文件 ❖利用MAT文件(.mat)可以把当前MATLAB
工作空间中的一些有用变量长久地保留下 来。
❖MAT文件的生成和装入由save和load命令 来完成。常用格式为:
save 文件名 [变量名表] [-append][-ascii]
load 文件名 [变量名表] [-ascii]
2.3 MATLAB矩阵
• 数据输出时用户可以用format命令设置或改 变 数 据 输 出 格 式 。 format 命 令 的 格 式 为 : format 格式符
• 注意,format命令只影响数据输出格式,而 不影响数据的计算和存储。
2.2.4 预定义变量
在MATLAB工作空间中,还驻留几个由 系统本身定义的变量。它们有特定的含 义,在使用时,应尽量避免对这些变量 重新赋值。
❖ 变量的元素用圆括号“( )”中的数字 (下标)表示。一维矩阵(数组)中的
元素用一个下标表示;二维矩阵用两个 下标表示,以逗号分开
Matlab教程-第二章

高维数组
高维数组的标识
数组的维数(dimension)和ndims指 令
数组的大小(Size)和Size指令 数组的长度指令(Length)可给出所
有维中的最大长度。 例题2.10-5
高维数组
高维数组构作和操作函数汇总
2]…; 数组元素的调用: 数组名[下标表达式1][下标表达式2]…; 在Matlab里: 数组名(r,c) r指定行,c指定列
二维数组的标识
“单下标”标识
“单下标(Linear Index)标识就是”只用一个下标 来指明元素在数组中的位置“。这样首先要对二维数 组的所有元素进行”一维编号“。即先设想把二维数 组的所有列,按先左后右的次序、首尾相接排成”一 维长列“;然后,自上往下对元素位置进行编号。
标量s分别与B元素之差
标量s分别与A的元素之 积
s分别被B的元素除
指令
含义
A’
共轭转置
s*A
标量பைடு நூலகம்分别与A
每个元素之积
s*inv(B) B阵的逆乘s
数组运算和矩阵运算指令对照汇总
数组运算
矩阵运算
指令 A.^n
A.^p p.^A
A+B A-B A.*B
含义
A的每个元素自乘n次
对A各元素分别求非整数幂 以p为底,分别以A的元素 为指数求幂 对应元素相加 对应元素相减 对应元素相乘
指令
含义
指令
含义
Diag 产生对角形数组 rand 产生均匀分布随即 数组
Eye 产生单位数组
randn 产生正态分布随机 数组
magic 产生魔方数组 zeros 产生全0数组
第二章(2) MATLAB课件

>> flipdim(c,2)
>> flipdim(c,3) ans = 1 2 3 3 4 5 4 5 7 3 5 8
4 6 9 0
3. 矩阵的抽取 对角元素抽取函数diag diag(X,k) 抽取矩阵X的第k条对角线的元素向量。k为0时抽取 主对角线,k 为正值时为上方第k条对角线,k 为负 值时为下方第k条对角线。 diag(X) 相当于diag(X,0),即抽取主对角线元素。 此函数还可以用来建立对角矩阵,其形式如下: diag(v,k) 使得向量v为所得矩阵的第k条对角线元素。 diag(v) 使得向量v为矩阵的对角线元素。 例如:矩阵抽取示例。 >> a=pascal(4) %4阶pascal矩阵
>> x=linspace(1,6,7) %创建一维数组 %创建一维数组 x= 1.0000 1.8333 2.6667 3.5000 4.3333 >> x(5) %索引访问数组元素 %索引访问数组元素 ans = 4.3333 >> x(1:5) %访问一块数据 %访问一块数据 ans = 1.0000 1.8333 2.6667 3.5000 4.3333
7
>>[v,d]=eig(a) v= 0.3162 -0.4041 -0.1391 -0.9487 0.9091 0.9740 -0.0000 0.1010 -0.1789 d= 1.0000 0 0 0 2.0000 0 0 0 3.0000 2. 其它分解 (自看)
>>[v,d]=eig(a,b) v= -1.0000 -0.3305 -0.0202 0.4204 1.0000 -1.0000 0.5536 -0.0046 0.3485 d= 12.9030 0 0 0 -0.0045 0 0 0 0.0706
MATLAB第二章

function [egg1,egg2,chicken1]=myegg(n)
% egg1 隔1天的蛋个数 % egg2 隔2天的蛋个数 % chicken1 过n天后母鸡个数 if n==1
egg1=1; egg2=0; chicken1=1; elseif n==2 egg1=1; egg2=1; chicken1=1;
27
>> x=0:0.1:2*pi; >> y=sin(x); >> plot(x,y) >> plot(x,y,‘ro’) %默认是蓝色曲线 >> x=[0 1 2 5];y=[4 -2 1 2]; >> plot(x,y) >> fplot(‘x^2+4*x+1’,[-15 15]) %函数用字符串表示
1 -8 4 9 -4 5 7 -9 >> fun=@myfun5 %例28中的函数 fun =
@myfun5 >> y=fun(A) %直接调用 y=
1 -13 16 81 -5 25 49 -15 >> y=feval(fun,A) %利用feval y=
1 -13 16 81 -5 25 49 -15
1 4 9 16 5 10 15 20
2024/7/5
第二章 MATLAB编程与作图
24
>> k=5;
>> ff=@(x)x^2+2*x+k %可以使用空间中的变量k
ff =
@(x)x^2+2*x+k
>> ff(5)
ans =
40
>> A=[1 2 ;3 4]
MATLAB实用教程第二章

1.矩阵的合并
矩阵的合并就是把两个或者两个以上的矩阵 连接成一个新矩阵矩阵构造符 可用于构造矩阵并 可以作为一个矩阵合并操作符 ➢ 表达式C=A B在水平方向合并矩阵A和B; ➢ 表达式C=A;B在竖直方向合并矩阵A和B
具有相同行数的两个矩阵合并为一个新矩阵
12 34 56 3×2
1.访问单个元素
2.线性引用元素
➢ 对于矩阵A线性引用元素的格式为 Ak通常这样的引用用于行向量或列 向量但也可用于二维矩阵
➢ MATLAB按列优先排列的一个长列向量格 式线性引用元素来存储矩阵元素
3.访问多个元素
操作符:可以用来表示矩阵的多个元 素若A是二维矩阵其主要用法如下: ➢ A:: 返回矩阵A的所有元素 ➢ Ai: 返回矩阵A第i行的所有元素
3.用满矩阵和稀疏矩阵存储方式分别构造下述矩 阵:
4.采用向量构造符得到向量159…41 5.按水平和竖直方向分别合并下述两个矩阵:
6. 分别删除第5题两个结果的第2行 7. 分别将第5题两个结果的第2行最后3列的数值
改为11 12 13 8. 分别查看第5题两个结果的各方向长度 9. 分别判断pi是否为字符串和浮点数 10.分别将第5题两个结果均转换为29的矩阵 11.计算第5题矩阵A的转秩 12.分别计算第5题矩阵A和B的A+B、A.* B和
行运算; ➢ 不同优先级的运算符采用先进行优先高的
运算
运算符的优先等级表
由表中可以看到括号的优先级别最高因此可 以用括号来改变默认的优先等级
2.4 字符串处理函数
2.4.1 字符串的构造 2.4.2 字符串的比较 2.4.3 字符串的查找和替换 2.4.4 字符串与数值间的转换
Matlab讲义第二章 matlab语言基础

七、使用帮助
1、help命令,在命令窗口中显示 • MATLBA的所有函数都是以逻辑群组方式进行组 织的,而MATLAB的目录结构就是以这些群组方 式来编排的。 • help matfun :矩阵函数-数值线性代数 • help general:通用命令 • help graphics:通用图形函数 • help elfun:基本的数学函数 • help elmat:基本矩阵和矩阵操作 • help datafun:数据分析和傅立叶变换函数 • help ops:操作符和特殊字符
• 如果结果为整数,则显示没有小数;如果结果不是 整数,则输出形式有: format (short):短格式(5位定点数)99.1253 format long:长格式(15位定点数 99.12345678900000 format short e:短格式e方式 9.9123e+001 format long e:长格式e方式 9.912345678900000e+001 format bank:2位十进制 99.12 format hex:十六进制格式
》a=[1 2 3; 4 5 6; 2 3 5]; 》b=inv(a)
4、了解矩阵超越函数 •在MATLAB中exp、sqrt等命 令也可以作用到矩阵上,但 这种运算是定义在矩阵的单 个元素上的,即分别对矩阵 的每一个元素进行计算。 •超越数学函数可以在函数后 加上m而成为矩阵的超越函 数,例如:expm,sqrtm。矩 阵的超越函数要求运算矩阵 为方阵。
2、命令行编辑器 (1)方向键和控制键可以编辑修改已输入的命令 :回调上一行命令 :回调下一行命令 (2)命令窗口的分页输出 • more off:不允许分页 more on:允许分页 • more(n):指定每页输出的行数 • 回车前进一行,空格键显示下一页,q结束当前显 示。 (3)多行命令(…) • 如果命令语句超过一行或者太长希望分行输入,则 可以使用多行命令继续输入。 • S=1-12+13+4+… 9-4-18;
第二章Matlab基础知识

第2章 MATLAB编程基础
(3) [File>New>Model]:建立一个SIMULINK模型文件,
实现SIMULINK仿真模型的建模、仿真、调试、保存等处理 功能,保存时文件名后缀为 .mdl。 这三种文件是MATLAB/SIMULINK最重要的文件类型, 在后面章节中将详细论述。 2. 工具栏 这里仅介绍SIMULINK中特有的工具图标,其它图标与 大部分常用软件开发环境下的图标基本一致。
2.1 MATLAB的工作环境
2.1.1 MATLAB程序主界面 安装完MATLAB 7.0软件并重新启动计算机后,在 Windows桌面上将出现MATLAB的软件图标 。鼠标双 击该图标,就可进入MATLAB的工作环境,显示默认的程
序主界面,如图2-1所示。
第2章 MATLAB编程基础
① 菜单; ② 工具栏;
第2章 MATLAB编程基础
MATLAB提供的主要内置基本矩阵函数如表2-4所示。
表2-4 MATLAB内置基本矩阵函数
函 数 功 产生 n 行 m 列的全 1 矩阵 产生 n 行 m 列的全 0 矩阵 产生 n 行 m 列的在[0,1]区间均匀分布的随机矩阵 产生 n 行 m 列的正态分布的随机矩阵 产生 n × n 维的单位矩阵 能
第2章 MATLAB编程基础
图2-3 当前路径浏览器窗口
第2章 MATLAB编程基础
5. 工作空间浏览器
当MATLAB启动后,系统自动在内存中开辟一块存储 区用于存储用户在MATLAB命令窗口中定义的变量、运算 结果和有关数据,此内存空间称为MATLAB的工作空间 (workspace)。工作空间在MATLAB刚启动时为空,用户退 出MATLAB后,工作空间的内容将不再保留。 点击图2-1所示MATLAB程序主界面左上窗口中的 “Workspace”属性页,激活工作空间浏览器,如图2-4所示。 在此窗口中可以对工作空间进行管理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章 序列的付氏变换(DTFT )和Z 变换一、序列的DTFT :X (e jw )序列x(n)的付氏变换如下:∑+∞∞--=n j j e n x e X ωω)()( ∞≤≤∞-ω ωπωππωd e e X n x n j j ⎰-=)(21)(因为MATLAB 无法计算连续变量w,只能在πωπ<≤-(或考虑对称性,在0<≤-ωπ)范围内,把w 赋值为很密的、长度很长的向量来近似连续变量。
通常最简单的就是赋以K 个等间隔的值: Kk d k πωω2=⋅= 1:0-=K k 它表示把基本数字频率的范围π2均分成K 份后,每一份的大小。
则频率向量表示为w=[w1,w2,…,wk]=k ∙dw,序列的位置向量为n=[n1,n2,…,nN]则DTFT 的计算式可用一个向量与矩阵相乘的运算来实现:[X(w 1),X(w 2),…,X(w k )]=[x(n 1),x(n 2),…,x(n N )]⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡∙N k N N k k n j n j n j n j n j n j n j n j n j e e e e e e e e e ωωωωωωωωω 212222111211 =[x(n 1),x(n 2),…,x(n N )]∙w *jn T e又因为 (jn T *w)=jn T *kdw=j*dw*n ’*k 所以Xw=xn*exp(j*dw*n ’*k)例1:求有限长序列xn=[1 3 5 3 1],n=-1:3的DTFT,画出它在w=-8~8rad/s 范围内的频率特性,讨论其对称性。
再把xn 左右移动,讨论时移对DTFT 的影响。
解:根据DTFT 定义得ωωωωωω32353)()(j j f f n n j j e e e e e n x e X ---∞-∞=-++++==∑ 88≤≤-ω将w 在-8~8rad/s 之间分为1000份。
>> xn=[1 3 5 3 1];nx=-1:3;>> w=linspace(-8,8,1000);%设定频率向量¿>> Xw=xn*exp(-j*nx'*w);%用定义计算DTFT>>subplot(3,5,1);stem(nx,xn);axis([-2,6,0,6]);title('Ô-ʼÐòÁÐ');ylabel('xn');%画序列图>> subplot(3,5,2);plot(w,abs(Xw));title('·ù¶È');% 画幅频曲线 >> subplot(3,5,3);plot(w,angle(Xw));title('Ïà½Ç')% 画相频曲线 >> subplot(3,5,4);plot(w,real(Xw));title('ʵ²¿')% 画实频曲线 >> subplot(3,5,5);plot(w,imag(Xw));title('Ð鲿')% 画虚频曲线 >> nx_2=nx+2;%使xn 右移2位>> Xw_2=xn*exp(-j*nx_2'*w);>>subplot(3,5,6);stem(nx_2,xn);axis([-2,6,0,6]);ylabel('xn_2');title('ÓÒÒÆ2λ')>> subplot(3,5,7);plot(w,abs(Xw_2));>> subplot(3,5,8);plot(w,angle(Xw_2));>> subplot(3,5,9);plot(w,real(Xw_2));>> subplot(3,5,10);plot(w,imag(Xw_2));>> nx_1=nx-1;%使xn 左移1位>> Xw_1=xn*exp(-j*nx_1'*w);>>subplot(3,5,11);stem(nx_1,xn);axis([-2,6,0,6]);ylabel('xn_1');title('×óÒÆ1λ')>> subplot(3,5,12);plot(w,abs(Xw_1));>> subplot(3,5,13);plot(w,angle(Xw_1));>> subplot(3,5,14);plot(w,real(Xw_1));>> subplot(3,5,15);plot(w,imag(Xw_1));由上述结果得出以下结论:(1) 序列的DTFT 是连续函数。
(2) 序列的DTFT 是周期函数,周期为2pi 。
(3) 本题给出的是实序列,实序列的DTFT 具有对称性,幅频和实频偶对称;相频和虚频奇对称。
(4) 信号的时移不影响幅频特性,只影响相频。
MATLAB 工具箱中有计算DTFT 的专用函数freqz 。
它的调用方式为:[H,w]=freqz(b,a,N)其中用于计算DTFT 时,b ——输入序列xn,其向量限定为n=0:(length(b)-1)(要从0开始)。
a 取1;N ——是把πω<≤0分割的份数,计算的是天频率部分的特性。
若省略N ,默认值为512。
要计算全部正负频率特性的响应,则用[H,w]=freqz(b,a,N ,‘whole ‘)二、Z 变换的计算(1)两个序列的Z 变换例1:x1(n)=[2,3,4],ns1=0;x2(n)=[3 4 5 6],ns2=0;求两序列的Z 变换,及两序列的卷积y(n)及Y(z).由Z 变换的定义∑∞-∞=-=n n z n x z X )()(知, X1(z)=2z 0+3z -1+4z-2 X2(z)=3z0+4z -1+5z -2+6z -3∵y(n)=x1(n)*x2(n)∴Y(z)=X1(z)X2(z)∴Y(z)= (2z 0+3z -1+4z -2)(3z0+4z -1+5z -2+6z -3)=6+17z -1+34z -2+43z -3+38z -4+24z -5则,y(n)=[6 17 34 43 38 24]y(n)= x1(n)*x2(n)=conv(x1,x2)求卷积程序:>> x1=[2 3 4];nx1=0:2;x2=[3 4 5 6];nx2=0:3;>> y=conv(x1,x2)y =6 17 34 43 38 24即y(n)=[6 17 34 43 38 24]从而Y(z)==6+17z -1+34z -2+43z -3+38z -4+24z -5 由以上看出,两序列的卷积和它们的Z 变换的相乘结果是一致的。
(时域卷积定理)三、Z 反变换(1) 部分分式法MATLAB 的内部函数residuez 可计算离散系统的极点留数。
NN MM z a z a z b z b b z B z A z H ----++++++== 111101)()()( 调用格式:[r,p,C]=residuez(b,a).b ,a ――H (z )中,分子分母多项式以z -1的升幂排列的系数向量。
p ――极点向量,即分母的根r ――部分分式分解后,各极点所对应的留数A kC ――无穷项多项式系数向量,仅在M ≥N 时存在。
则+++-++-+-==----1111)2()1()(1)()2(1)2()1(1)1()()()(z C C zN p n r z p r z p r z B z A z H则Z 反变换为:y(n)=r(1)p(1)n u (n)+…+r(N)p(N)nu(n)+C(1)δ(n)+ C(2)δ(n-1)+… 若H(z)是系统函数,则其反变换h(n)就是它的单位脉冲响应,可用函数impz 来计算,其调用方式为:h=impz(b,a,L)其中,b,a ——H(z)的按z-1的升幂排列的分子分母系数向量;L ——待求脉冲序列h(n)的长度可用该命令来核对计算。
实例1:计算的)7.01()9.01(1)(121--+-=z z z X 反变换 先用函数poly 求出分母多项式的系数,再用residuez 求X (z )的极点和留数程序:>> b=1;a=poly([0.9,0.9,-0.7]);>> [r,p,C]=residuez(b,a)r =0.24610.56250.1914p =0.90000.9000-0.7000C =[]四、用Z 变换求系统输出(1)方法1:采用residuez 函数实例1:系统函数2112523)(---+--=z z z z H ,输入信号x=[2 3 4 5],用Z 变换求出输出y(n)。
解:∵Y (z )=H(z)·X(z)= 211252)(3---+-⋅-z z z X z =)()(z A z B ∴ B(z)是X (z )与-3z -1的卷积,用函数conv 可求得求出Y(z)后,用函数residuez 可求其反变换,即得y(n)。
>> x=[2 3 4 5];nsx=0;>> nfx=length(x)-1;>> b=-3;a=[2 -5 2];>> B=conv(-3,x);A=a;>> [r,p,k]=residuez(B,A)r =-10.250032.0000p =2.00000.5000k =-24.7500 -7.5000>> nf=input('nf');nf8>> n=0:nf;>> yd=k(1)*impseq(0,0,nf)+k(2)*impseq(1,0,nf) ;>> y=yi+yd >> subplot(1,2,1),stem([nsx:nfx],x);title('x'>> subplot(1,2,2),stem([0:nf],y);title('y'),line([0,10],[0,0]);(2)方法2:采用filter 函数若不需求出表达式,可用函数filter 来解。