inv命令能用于复数矩阵的转置求逆吗

君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
matlab中的inv函数是什么意思,能具体举例说明吗?
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口查看: 5083|回复: 3|关注: 0
inv命令能用于复数矩阵的求逆吗?
<h1 style="color:# 麦片财富积分
新手, 积分 10, 距离下一级还需 40 积分
我的A矩阵中有元素是复数,含有实部和虚部,请问这时inv命令能用于矩阵求逆吗?
<h1 style="color:# 麦片财富积分
:Q:Q可不可以呀?
论坛优秀回答者
帖子最佳答案
关注者: 203
可以,可是自己试不是更快?
<h1 style="color:# 麦片财富积分
可以,我试了
站长推荐 /3
Powered by当前位置: >>
MATLAB实验指导书
MATLAB 实验指导书尤源物理科学与电子学院 序号实验项目名称时 数必 做 选 做必做每套仪 器人数实验目的要求1<
br />矩阵与数组和基本操作命 令掌握矩阵与数组和基本操作21命令;能够编写简单的运算代 码2 3 4绘图功能2 2 2必做1 1 1掌握绘制二维和三维图形的 常用命令;能够编写相关程序M 文件 MATLAB 在实验数据处理中 的应用必做 必做掌握用 M 文件编写和保存 MATLAB 程序代码。 掌握多项式函数库;能够编写 相关程序。 掌握 MATLAB 在电路中的基本5MATLAB 在电路中的应用2必做1表达式;能够运用 MATLAB 解 电路方程组。6MATLAB 在信号与系统中的 应用掌握 MATLAB 在电路中的基本2必做1表达式;能够运用 MATLAB 解 电路方程组。 了解 MATLAB 的 Simulink 仿真7MATLAB 仿真测量仪器2必做1平台;掌握常用测量仪器的仿 真。 掌握 MATLAB 在电子线路仿真8电子线路仿真试验2必做1试验中的应用; 掌握 Simulink 库中各模块参数的设置。?1? 一、线性代数部分在 MATLAB 下进行基本数学运算, 只需将运算式直接打入提示号 (&&) 之后, 并按入 Enter 键即可。例如: && (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB 会将运算结果直接存入一变数 ans,代表 MATLAB 运算后的答案(Answer)并 显示其数值於荧幕上。 小提示: &&&&是 MATLAB 的提示符号(Prompt) ,但在 PC 中文视窗系统下,由于编码方 式不同,此提示符号常会消失不见,但这并不会影响到 MATLAB 的运算结果。 我们也可将上述运算式的结果设定给另一个变数 x: x = (5*2+1.3-0.8)*10^2/25 x = 42 此时 MATLAB 会直接显示 x 的值。由上例可知,MATLAB 认识所有一般常用到的加(+) 、 减(-) 、乘(*) 、除(/)的数学运算符号,以及幂次运算(^) 。的形式, 小提示: MATLAB 将所有变数均存成 double 的形式,所以不需经过变数宣告 (Variable declaration) MATLAB 同时也会自动进行记忆体的使用和回收,而不必像 ) 。 C 语言,必须由使用者一一指定.这些功能使的 MATLAB 易学易用,使用者可专心致力於撰 写程式,而不必被软体枝节问题所干扰。若不想让 MATLAB 每次都显示运算结果,只需在运算式最後加上分号(; )即可,如下例: y = sin(10)*exp(-0.3*4^2); 若要显示变数 y 的值,直接键入 y 即可: &&y y =-0.0045 在上例中,sin 是正弦函数,exp 是指数函数,这些都是 MATLAB 常用到的数学函数。 若一个数学运算是太长,可用三个句点将其延伸到下一行: 若一个数学运算是太长,可用三个句点将其延伸到下一行: z = 10*sin(pi/3)* ...?2? sin(pi/3);1.1 常见数学函数函 数 名 abs(x) acos(x) 数 学 计 算 功 能 实数的绝对值或复数的幅值 反余弦 arcsin x 函 数 名 floor(x) imag(x) log(x) log10(x) real(x) round(x) sign(x) sin(x) sinh(x) sqrt(x) tan(x) tanh(x) 4.56 6.75],则: 5 7 4 6 4 6 5 7 数 学 计 算 功 能 对 x 朝-∞方向取整 求复数 x 的虚部 自然对数(以 e 为底数) 常用对数(以 10 为底数) 求复数 x 的实部 对 x 四舍五入到最接近的整数 符号函数:求出 x 的符号 正弦 sin x 反双曲正弦 sinh x 求实数 x 的平方根: x 正切 tan x 双曲正切 tanh xgcd(m,n) 求正整数 m 和 n 的最大公约数 lcm(m,n) 求正整数 m 和 n 的最小公倍数acosh(x) 反双曲余弦 arccosh x angle(x) 在四象限内求复数 x 的相角 asin(x) asinh(x) atan(x) 反正弦 arcsin x 反双曲正弦 arcsinh x 反正切 arctan xatan2 (x,y) 在四象限内求反正切 atanh(x) 反双曲正切 arctanh x ceil(x) conj(x) cos(x) cosh(x) exp(x) fix(x) 对 x 朝+∞方向取整 求复数 x 的共轭复数 余弦 cos x 双曲余弦 cosh x 指数函数 e x 对 x 朝原点方向取整rem(m,n) 求正整数 m 和 n 的 m/n 之余数如:输入 x=[-4.85 -2.3 -0.2 1.3 ceil(x)= -4 -2 0 2 fix(x) = -4 -2 0 1 floor(x) = -5 -3 -1 1 round(x) = -5 -2 0 11.2 系统的在线帮助1. MATLAB 的查询命令: help: 用来查询已知命令的用法。例如已知 inv 是用来计算逆矩阵,键入 help inv 即可得知有 关 inv 命令的用法。 lookfor: 用来寻找未知的命令。例如要寻找计算反矩阵的命令,可键入 lookfor inverse, MATLAB 即会列出所有和关键字 inverse 相关的指令。找到所需的命令後 ,即可用 help 进 一步找出其用法。 2.数据显示格式:?3? 常用命令: 说明 format short 显示小数点后 4 位(缺省值) format long 显示 15 位 format bank 显示小数点后 2 位 format + 显示+,-,0 format short e 5 位科学记数法 format long e 15 位科学记数法 format rat 最接近的有理数显示 3.命令行编辑: 键盘上的各种箭头和控制键提供了命令的重调、编辑功能。具体用法如下: ↑----重调前一行(可重复使用调用更早的) ↓----重调后一行 →----前移一字符 ←----后移一字符 home----前移到行首 end----移动到行末 esc----清除一行 del----清除当前字符 backspace----清除前一字符 4. MATLAB 工作区常用命令: who --------显示当前工作区中所有用户变量名 whos--------显示当前工作区中所有用户变量名及大小、字节数和类型 disp(x) -----显示变量 X 的内容 clear -----清除工作区中用户定义的所有变量 save 文件名-----保存工作区中用户定义的所有变量到指定文件中 load 文件名-----载入指定文件中的数据1.3 常量与变量系统的变量命名规则:变量名区分字母大小写;变量名必须以字母打头,其后 可以是任意字母,数字,或下划线的组合。此外,系统内部预先定义了几个有特殊意 义和用途的变量,见下表:特殊的变量、常量 ans pi eps inf NaN 取 用于结果的缺省变量名 圆周率π的近似值(3.1416) 数学中无穷小(epsilon)的近似值(2.2204e - 016) 无穷大,如 1/0 = inf (infinity) 非数,如 0/0 = NaN (Not a Number) ,inf / inf = NaN ?4? 值 i,j虚数单位:i = j =?11数值型向量(矩阵)的输入1.任何矩阵(向量) ,可以直接按行方式输入每个元素:同一行中的元素用逗号(, ) ... 或者用空格符来分隔;行与行之间用分号(; )分隔。所有元素处于一方括号([ ]) 内; 例 1: && Time = [11 12 1 2 3 4 5 6 7 8 9 10] && X_Data = [2.32 3.43;4.37 5.98] 2.系统中提供了多个命令用于输入特殊的矩阵:函数 compan diag hadamard hankel invhilb kron magic pascal 功 能 函数 toeplitz vander zeros ones rand randn eye meshgrid Toeplitz 矩阵 Vandermonde 矩阵 元素全为 0 的矩阵 元素全为 1 的矩阵 元素服从均匀分布的随机矩阵 元素服从正态分布的随机矩阵 对角线上元素为 1 的矩阵 由两个向量生成的矩阵 功 能 伴随阵 对角阵 Hadamard 矩阵 Hankel 矩阵 Hilbert 矩阵的逆阵 Kronercker 张量积 魔方矩阵 Pascal 矩阵上面函数的具体用法,可以用帮助命令 help 得到。如:meshgrid(x,y) 输入 x=[1 2 3 4]; y=[1 0 5]; [X,Y]=meshgrid(x, y),则 X= Y= 1 2 3 4 1 1 1 1 1 2 3 4 0 0 0 0 1 2 3 4 5 5 5 5 目的是将原始数据 x,y 转化为矩阵数据 X,Y。2符号向量(矩阵)的输入1.用函数 sym 定义符号矩阵: 函数 sym 实际是在定义一个符号表达式,这时的符号矩阵中的元素可以是任何的符号 或者是表达式,而且长度没有限制。只需将方括号置于单引号中。 例 2: && sym_matrix = sym(&#39;[a b c;Jack Help_Me NO_WAY]&#39;) sym_matrix = [ a, b, c] [Jack, Help_Me, NO_WAY] 2.用函数 syms 定义符号矩阵?5? 先定义矩阵中的每一个元素为一个符号变量,而后像普通矩阵一样输入符号矩阵。 例 3: && syms a b c ; && M1 = sym(&#39;Classical&#39;) ; && M2 = sym(&#39; Jazz&#39;) ; && M3 = sym(&#39;Blues&#39;) ; && A = [a b c; M1, M2, M3;sym([2 3 5])] A= [ a, b, c][Classical, Jazz, Blues] [ 2, 3, 5]1.4 数组(矩阵)的点运算运算符:+(加) 、-(减) 、./(右除) 、.\(左除) 、.^(乘方) , 例 4: && g = [1 2 3 4];h = [4 3 2 1]; && s1 = g + h, s2 = g.*h, s3 = g.^h, s4 = g.^2, s5 = 2.^h1.5 矩阵的运算运算符:+(加) 、-(减) 、*(乘) 、/(右除) 、\(左除) 、^(乘方) 、’(转置)等; 常用函数:det(行列式) 、inv(逆矩阵) 、rank(秩) 、eig(特征值、特征向量) 、rref (化矩阵为行最简形) 例 5: && A=[2 0 C1;1 3 2]; B=[1 7 C1;4 2 3;2 0 1]; && M = A*B % 矩阵 A 与 B 按矩阵运算相乘 && det_B = det(B) % 矩阵 A 的行列式 && rank_A = rank(A) % 矩阵 A 的秩 && inv_B = inv(B) % 矩阵 B 的逆矩阵 && [V,D] = eig(B) % 矩阵 B 的特征值矩阵 V 与特征向量构成的矩阵 D && X = A/B % A/B = A*B-1,即 XB=A,求 X && Y = B\A % B\A = B-1*A,即 BY=A,求 Y 上机练习( : 上机练习(一) 1.练习数据和符号的输入方式,将前面的命令在命令窗口中执行通过; 2.输入 A=[7 1 5;2 5 6;3 1 5],B=[1 1 1; 2 2 2; 3 3 3],在命令 窗口中执行下列表达式,掌握其含义:?6? A(2, 3) A(:,2) A(3,:) A(:,1:2:3) A(:,3).*B(:,2) A(:,3)*B(2,:) A*B A.*B A^2 A.^2 B/A B./A 3.输入 C=1:2:20,则 C(i)表示什么?其中 i=1,2,3,…,10; 4.查找已创建变量的信息,删除无用的变量; 5.欲通过系统做一平面图,请查找相关的命令与函数,获取函数的帮助信息。二、编程2.1 无条件循环当需要无条件重复执行某些命令时,可以使用 for 循环: for 循环变量 t=表达式 1 : 达式 2 : 表达式 3 语句体 end 说明: 为循环初值, 为步长, 为循环终值; 说明:表达式 1 为循环初值,表达式 2 为步长,表达式 3 为循环终值;当表达式 2 省 语句允许嵌套。 略时则默认步长为 1;for 语句允许嵌套。 ; 例 6: 如:矩阵输入程序 生成 3×4 阶的 Hiltber 矩阵。 m=input(‘矩阵行数:m=’); for i=1 : 3 n= input(‘矩阵列数:n=’); for j=1 : 4 for i=1:m ; for j=1:n H(i,j)=1/(i+j-1) end disp([‘输入第’,num2str(i),’行,第’, num2str(j),’列元素’]) end A(i, j) = input (‘ ’) end end2.2条件循环1) if-else-then 语句 if-else-then 语句的常使用三种形式为: (1) if 逻辑表达式 (3) if 逻辑表达式 1 语句体 语句体 1 end elseif 逻辑表达式 2 语句体 2 (2) if 逻辑表达式 1 elseif 逻辑表达式 3 语句体 1 … else else 语句体 2 语句体 n end end 2) while 循环语句 while 循环的一般使用形式为:?7? while 表达式 语句体 end 例 7: 用二分法计算多项式方程 x ? 2 x ? 5 = 0 在[0,3]内的一个根。3解: a = 0;fa = -inf; b = 3;fb = inf; while b-a & eps*b x =(a+b)/2; fx = x^3-2*x-5; if sign(fx)== sign(fa) a =x;fa = fx; else b = x;fb = fx; end end x 运行结果为:x = 2.42332.3分支结构若需要对不同的情形执行不同的操作,可用 switch 分支语句: switch 表达式(标量或字符串) case 值 1 语句体 1 case 值 2 语句体 2 … otherwise 语句体 n end 说明:当表达式不是“case”所列值时,执行 otherwise 语句体。2.4建立 M 文件将多个可执行的系统命令,用文本编辑器编辑后并存放在后缀为 .m 的文件中,若在 ... MATLAB 命令窗口中输入该 m-文件的文件名 (不跟后缀.m!) 即可依次执行该文件中的多 , 个命令。这个后缀为.m 的文件,也称为 Matlab 的脚本文件(Script File)。 。 注意: 能搜索的范围内。 注意:文件存放路径必须在 Matlab 能搜索的范围内。?8? 2.5建立函数文件对于一些特殊用户函数, 系统提供了一个用于创建用户函数的命令 function, 以备用户 随时调用。 1.格式: function [输出变量列表]=fun_name(输入变量列表) 用户自定义的函数体 2.函数文件名为:fun_name,注意:保存时文件名与函数名最好相同; . ... ... 3.存储路径:最好在系统的搜索路径上。 。 4. 调用方法:输出参量=fun_name (输入变量) 例 8: 计算 s = n!,在文本编辑器中输入: function s=pp(n); s=1; for i=1:n s=s*i; 在 MATLAB 命令窗口中输入:s=pp(5) 结果为 s = 120 上机练习( : 上机练习(二) 1.编写程序,计算 1+3+5+7+…+(2n+1)的值(用 input 语句输入 n 值) 。0 ≤ x &1 ? x ? 2.编写分段函数 f ( x ) = ?2 ? x 1 ≤ x ≤ 2 的函数文件,存放于文件 ff.m 中,计算出 ? 0 其它 ?f (?3) , f ( 2 ) , f (∞) 的值。三、矩阵及其运算3.1 矩阵的创建1.加、减运算 运算符: “+”和“-”分别为加、减运算符。?9? 运算规则:对应元素相加、减,即按线性代数中矩阵的“十”“一”运算进行。 、 例 3-1 在 Matlab 编辑器中建立 m 文件:LX0701.m A=[1, 1, 1; 1, 2, 3; 1, 3, 6] B=[8, 1, 6; 3, 5, 7; 4, 9, 2] A+B=A+B A-B=A-B 在 Matlab 命令窗口建入 LX0701,则 结果显示:A+B= 9 2 7 4 7 10 5 12 8 A-B= -7 0 -5 -2 -3 -4 -3 -6 4 2.乘法 运算符:* 运算规则:按线性代数中矩阵乘法运算进行,即放在前面的矩阵的各行元素,分别与 放在后面的矩阵的各列元素对应相乘并相加。 (1)两个矩阵相乘 例 3-2 在 Mtalab 编辑器中建立 M 文件:LX0702.m X= [2 3 4 5 1 2 2 1]; Y=[0 1 1 1 1 0 0 0 1 1 0 0]; Z=X*Y 存盘 在命令行中建入 LX0702,回车后显示: Z= 8 5 6 3 3 3 (2)矩阵的数乘:数乘矩阵 上例中:a=2*X 则显示:a = 4 6 8 10 2 4 4 2 (3)向量的点乘(内积) :维数相同的两个向量的点乘。?10? 命令: 向量点乘函数 命令:dot 例:X=[-1 0 2]; Y=[-2 -1 1]; Z=dot(X, Y) 则显示:Z = 4 还可用另一种算法: sum(X.*Y) ans= 4 (4)向量叉乘 在数学上, 两向量的叉乘是一个过两相交向量的交点且垂直于两向量所在平面的向量。 在 Matlab 中,用函数 cross 实现。 命令 cross 向量叉乘函数 例 3-3 计算垂直于向量(1, 2, 3)和(4, 5, 6)的向量。 在 Mtalab 编辑器中建立 M 文件:LX0703.m a=[1 2 3]; b=[4 5 6]; c=cross(a,b) 结果显示: c= -3 6 -3 可得垂直于向量(1, 2, 3)和(4, 5, 6)的向量为±(-3, 6, -3) (5)混合积 混合积由以上两函数实现: 例 3-4 计算向量 a=(1, 2, 3)、b=(4, 5, 6)和 c=(-3, 6, -3) 的混合积 a ? (b × c) 在 Matlab 编辑器中建立 M 文件:LX0704.m a=[1 2 3]; b=[4 5 6]; c=[-3 6 -3]; x=dot(a, cross(b, c)) 结果显示:x = 54 注意: 注意:先叉乘后点乘,顺序不可颠倒。 3.矩阵的除法 Matlab 提供了两种除法运算:左除(\)和右除(/) 。一般情况下,x=a\b 是方程 a*x =b 的解,而 x=b/a 是方程 x*a=b 的解 例:a=[1 2 3; 4 2 6; 7 4 9] b=[4; 1; 2]; x=a\b?11? 则显示:x= -1.0 0.5000 如果 a 为非奇异矩阵,则 a\b 和 b/a 可通过 a 的逆矩阵与 b 阵得到: a\b = inv(a)*b b/a = b*inv(a) 4.矩阵乘方 运算符:^ 运算规则: (1)当 A 为方阵,p 为大于 0 的整数时,A^P 表示 A 的 P 次方,即 A 自乘 P 次;p 为小于 0 的整数时,A^P 表示 A-1 的 P 次方。p ?d11 ? ? ?V ?1 其中 V 为 A 的特征向 (2)当 A 为方阵,p 为非整数时,则 A^ P = V O ? p ? d nn ? ? ? ??d11 ? ? 为特征值矩阵 量, ? O ? ? d nn ? ?5.矩阵的转置 运算符:′ 运算规则:与线性代数中矩阵的转置相同。 6.矩阵的逆矩阵 例 3-5? 1 2 3? ? ? 求 A = ? 2 2 1? 的逆矩阵 ? 3 4 3? ? ? 方法一:在 Matlab 编辑器中建立 M 文件:LX07051.m A=[1 2 3; 2 2 1; 3 4 3]; inv(A)或 A^(-1) 则结果显示为 ans = 1.0 -2.0 -3.0 1.0 -1.0000 ? 1 2 3 1 0 0? ? ? 方法二:由增广矩阵 B = ? 2 2 1 0 1 0 ? 进行初等行变换 ? 3 4 3 0 0 1? ? ? 在 Matlab 编辑器中建立 M 文件:LX07052.m?12? B=[1, 2, 3, 1, 0, 0; 2, 2, 1, 0, 1, 0; 3, 4, 3, 0, 0, 1]; C=rref(B) %化行最简形 X=C(:, 4:6) 在 Matlab 命令窗口建入 LX07052,则显示结果如下: C= 1. 1.0 0 1..0 0 0 1.0 1.0000 X= 1.0 -2.0 -3.0 1.0 -1.0000 这就是 A 的逆矩阵。 7.方阵的行列式 命令: 计算行列式的值 命令: det 例 3-6 计算上例中 A 的行列式的值 在 Matlab 编辑器中建立 M 文件:LX0706.m A=[1 2 3; 2 2 1; 3 4 3]; D=det(A) 则结果显示为 D= 2-2.0 -1.00003.2 符号矩阵的运算1.符号矩阵的四则运算 Matlab 5.x 抛弃了在 4.2 版中为符号矩阵设计的复杂函数形式, 把符号矩阵的四则运算 简化为与数值矩阵完全相同的运算方式,其运算符为:加(+) ,减(-) 、乘(×) 、除(/、 \)等或:符号矩阵的和(symadd) ,差(symsub) ,乘 (symmul)。 ′[1 / x, 1 /(x + 1); 1 /(x + 2), 1 /(x + 3)]′ ); 例 3-7 A = sym( B = sym(′[x, 1; x + 2, 0]′ ) ; C=B-A D=a\b 则显示: C= x-1/x 1-1/(x+1) x+2-1/(x+2) -1/(x+3) D= -6*x-2*x^3-7*x^2 1/2*x^3+x+3/2*x^2?13? 6+2*x^3+10*x^2+14*x 2.其他基本运算-2*x^2-3/2*x-1/2*x^3符号矩阵的其他一些基本运算包括转置(&#39;) 、行列式(det) 、逆(inv) 、秩(rank) 、幂 (^)和指数(exp 和 expm)等都与数值矩阵相同 3.符号矩阵的简化 符号工具箱中提供了符号矩阵因式分解、展开、合并、简化及通分等符号操作函数。 (1)因式分解 命令: 符号表达式因式分解函数 命令:factor 格式:factor(s) 说明: 说明:s 为符号矩阵或符号表达式。常用于多项式的因式分解 例 3-8 将 x 9-1 分解因式 在 Matlab 命令窗口建入 syms x factor(x^9-1) 则显示:ans = (x-1)*(x^2+x+1)*(x6+x^3+1) 例 3-9 问入取何值时,齐次方程组?(1 ? λ) x1 ? 2x2 + 4x3 = 0 ? ? 2x1 + (3 ? λ)x2 + x3 = 0 ? x1 + x2 + (1 ? λ) x3 = 0 ?有非 0 解 解:在 Matlab 编辑器中建立 M 文件:LX0709.m syms k A=[1-k -2 4;2 3-k 1;1 1 1-k]; D=det(A) factor(D) 其结果显示如下: D= -6*k+5*k^2-k^3 ans = -k*(k-2)*(-3+k) 从而得到:当 k=0、k=2 或 k=3 时,原方程组有非 0 解。 (2)符号矩阵的展开 符号表达式展开函数 命令 expand 格式:expand(s) 说明: 说明:s 为符号矩阵或表达式。常用在多项式的因式分解中,也常用于三角函数,指 数函数和对数函数的展开中?14? 例 3-10 将(x+1)3、sin(x+y)展开 在 Matlab 编辑器中建立 M 文件:LX0710.m syms x y p=expand((x+1)^3) q=expand(sin(x+y)) 则结果显示为 p= x^3+3*x^2+3*x+1 q= sin(x)*cos(y)+cos(x)*sin(y) (3)同类式合并 命令: 合并系数函数 命令:Collect 格式:Collect(s,v) 将 s 中的变量 v 的同幂项系数合并。 Collect(s) s ― 矩阵或表达式,此命令对由命令 findsym 函数返回的默认变量 进行同类项合并。 (4)符号简化 命令: 寻找符号矩阵或符号表达式的最简型 命令:simple 或 simplify 格式:Simple(s) s ― 矩阵或表达式 说明: 说明:Simple(s)将表达式 s 的长度化到最短。若还想让表达式更加精美,可使用函数 Pretty。 格式:Pretty(s) 使表达式 s 更加精美 例 3-11 计算行列式1 1 a b a 2 b2 a 4 b41 c c2 c41 d d2 d4的值。 在 Matlab 编辑器中建立 M 文件:LX0711.m syms a b c d A=[1 1 1 1;a^2 b^2 c^2 d^2;a^4 b^4 c^4 d^4]; d1=det(A) d2=simple(d1) %化简表达式 d1 pretty(d2) %让表达式 d2 符合人们的书写习惯 则显示结果如下: d1 = b*c^2*d^4-b*d^2*c^4-b^2*c*d^4+b^2*d*c^4+b^4*c*d^2-b^4*d*c^2-a*c^2*d^4+a*d^2*c ^4+a*b^2*d^4-a*b^2*c^4-a*b^4*d^2+a*b^4*c^2+a^2*c*d^4-a^2*d*c^4-a^2*b*d^4+a^2*b*c^ 4+a^2*b^4*d-a^2*b^4*c-a^4*c*d^2+a^4*d*c^2+a^4*b*d^2-a^4*b*c^2-a^4*b^2*d+a^4*b^2*c d2 =?15? (-d+c)*(b-d)*(b-c)*(-d+a)*(a-c)*(a-b)*(a+c+d+b) (-d+c)(b-d)(b-c)(-d+a)(a-c)(a-b)(a+c+d+b)? 1 2 3? ?1 3 ? ? ? ? ? ? 2 1? 例 3-12 设 A = ? 2 2 1? , B = ? ? , C = ? 2 0? 5 3? ? ? 3 4 3? ? 3 1? ? ? ? ? 求矩阵 X,使满足:AXB = C 在 Matlab 编辑器中建立 M 文件:LX0712.m A=[1 2 3;2 2 1;3 4 3]; B=[2,1;5 3]; C=[1 3;2 0;3 1]; X=A\C/B 则结果显示如下: X= -2.0 10.0 -10.0例 3-13? cos(t) ? sin(t) ? 计算 ? ? ? sin(t) cos(t) ?5在 Matlab 编辑器中建立 M 文件:LX0713.m syms t A =[cos(t) -sin(t); sin(t), cos(t)]; B=sympow(A, 5) %计算 A 的 5 次幂 C=simple(B) %化简 pretty(C) 则显示结果如下 B= [ cos(t)*(cos(t)*(cos(t)*(cos(t)^2-sin(t)^2)-2*sin(t)^2*cos(t))-sin(t)*(sin(t)*(cos(t)^2-sin(t) ^2)+2*cos(t)^2*sin(t)))-sin(t)*(sin(t)*(cos(t)*(cos(t)^2-sin(t)^2)-2*sin(t)^2*cos(t))+cos(t)*(sin(t) *(cos(t)^2-sin(t)^2)+2*cos(t)^2*sin(t))), cos(t)*(cos(t)*(-2*cos(t)^2*sin(t)-sin(t)*(cos(t)^2-sin(t)^2))-sin(t)*(cos(t)*(cos(t)^2-sin(t)^2)-2*s in(t)^2*cos(t)))-sin(t)*(sin(t)*(-2*cos(t)^2*sin(t)-sin(t)*(cos(t)^2-sin(t)^2))+cos(t)*(cos(t)*(cos(t )^2-sin(t)^2)-2*sin(t)^2*cos(t)))] [ sin(t)*(cos(t)*(cos(t)*(cos(t)^2-sin(t)^2)-2*sin(t)^2*cos(t))-sin(t)*(sin(t)*(cos(t)^2-sin(t) ^2)+2*cos(t)^2*sin(t)))+cos(t)*(sin(t)*(cos(t)*(cos(t)^2-sin(t)^2)-2*sin(t)^2*cos(t))+cos(t)*(sin(t )*(cos(t)^2-sin(t)^2)+2*cos(t)^2*sin(t))), sin(t)*(cos(t)*(-2*cos(t)^2*sin(t)-sin(t)*(cos(t)^2-sin(t)^2))-sin(t)*(cos(t)*(cos(t)^2-sin(t)^2 )-2*sin(t)^2*cos(t)))+cos(t)*(sin(t)*(-2*cos(t)^2*sin(t)-sin(t)*(cos(t)^2-sin(t)^2))+cos(t)*(cos(t)* (cos(t)^2-sin(t)^2)-2*sin(t)^2*cos(t)))] C=?16? [ cos(5*t), -sin(5*t)] [ sin(5*t), cos(5*t)] [cos(5 t) [ [sin(5 t) -sin(5 t)] ] cos(5 t) ]四、秩与线性相关性4.1 矩阵和向量组的秩以及向量组的线性相关性。矩阵 A 的秩是矩阵 A 中最高阶非零子式的阶数; 向量组的秩通常由该向量组构成的矩 阵来计算。 命令: 命令:rank 格式:rank(A) A 为矩阵式向量组构成的矩阵 例 4-1 求向量组 α1 = (1 ? 22 3) , α 2 = (?2 4 ? 1 3) , α3 = (?1 2 0 3) ,α 4 = (0 62 3) , α5 = (2 ? 6 3 4) 的秩,并判断其线性相关性。在 Matlab 编辑器中建立 M 文件:LX0714.m A=[1 -2 2 3;-2 4 -1 3;-1 2 0 3;0 6 2 3;2 -6 3 4]; B=rank(A) 运行后结果如下: B= 3 由于秩为 3 & 向量个数,因此向量组线性相关。4.2向量组的最大无关组矩阵的初等行变换有三条: 1.交换两行ri ? rj k ri(第 i、第 j 两行交换)2.第 i 行的 K 倍3.第 i 行的 K 倍加到第 j 行上去rj + k r i通过这三条变换可以将矩阵化成行最简形,从而找出列向量组的一个最大无关组, Matlab 将矩阵化成行最简形的命令是: 命令: 命令:rref 格式:rref(A) A 为矩阵 例 4-2 求向量组 a1=(1,-2,2,3), a2=(-2,4,-1,3), a3=(-1,2,0,3), a4=(0,6,2,3), a5=(2,-6,3,4) 的一个最大无关组。?17? 在 Matlab 编辑器中建立 M 文件:LX0715.m a1=[1 -2 2 3]&#39;; a2=[-2 4 -1 3]&#39;; a3=[-1 2 0 3]&#39;; a4=[0 6 2 3]&#39;; a5=[2 -6 3 4]&#39;; A=[a1 a2 a3 a4 a5] format rat %以有理格式输出 B=rref(A) %求 A 的行最简形 运行后的结果为 A= 1 -2 -1 0 -2 4 2 6 2 -1 0 2 3 3 3 3 B= 1 0 1/3 0 16/9 0 1 2/3 0 -1/9 0 0 0 1 -1/3 0 0 0 0 0 从 B 中可以得到:向量 a1 a2 a4 为其中一个最大无关组2 -6 3 4五、线性方程的组的求解我们将线性方程的求解分为两类:一类是方程组求唯一解或求特解,另一类是方程组 求无穷解即通解。可以通过系数矩阵的秩来判断: 若系数矩阵的秩 r=n(n 为方程组中未知变量的个数) ,则有唯一解 若系数矩阵的秩 r&n,则可能有无穷解。 线性方程组的无穷解 = 对应齐次方程组的通解+非齐次方程组的一个特解;其特解的 求法属于解的第一类问题,通解部分属第二类问题。5.1求线性方程组的唯一解或特解(第一类问题)这类问题的求法分为两类:一类主要用于解低阶稠密矩阵 ―― 直接法;另一类是解 大型稀疏矩阵 ―― 迭代法。 5.1.1 利用矩阵除法求线性方程组的特解(或一个解) 方程:AX=b 解法:X=A\b?18? =1 ? 5x1 + 6x 2 ?x1 + 5x 2 + 6x 3 =0 ? x 2 + 5x 3 + 6x 4 = 0 的解 例 5-1 求方程组 ? ? x 3 + 5x 4 + 6x 5 = 0 ? x 4 + 5x 5 = 1 ? 解:在 Matlab 编辑器中建立 M 文件:LX0716.m A=[5 6 0 0 0 1 5 6 0 0 0 1 5 6 0 0 0 1 5 6 0 0 0 1 5]; B=[1 0 0 0 1]&#39;; R_A=rank(A) %求秩 X=A\B %求解 运行后结果如下 R_A = 5 X= 2.8 1.0 0.3188 这就是方程组的解。 例 5-2 求方程组 ? x1 + x 2 ? 3x 3 ? x 4 = 1 ? ?3x1 ? x 2 ? 3x 3 + 4x 4 = 4 ?x1 + 5x 2 ? 9x 3 ? 8x 4 = 0 ? 的一个特解 解:在 Matlab 编辑器中建立 M 文件:LX0717.mA=[1 1 -3 -1;3 -1 -3 4;1 5 -9 -8];B=[1 4 0]&#39;; X=A\B X= 0 0 -0.0?19? 5.1.2 利用矩阵的 LU、QR 和 cholesky 分解求方程组的解 1.LU 分解: LU 分解又称 Gauss 消去分解,可把任意方阵分解为下三角矩阵的基本变换形式(行交 换)和上三角矩阵的乘积。即 A=LU,L 为下三角阵,U 为上三角阵。 则:A*X=b 变成 L*U*X=b ∴X=U\(L\b) 这样可以大提高运算速度。 命令 [L,U]=lu (A) 例 5-3 求方程组?4x1 + 2x 2 ? x 3 = 2 ? ? 3x1 ? x 2 + 2x 3 = 10 ? 11x1 + 3x 2 =8 ?的一个特解 解? 4 2 ? 1? ? ? A = ? 3 ?1 2 ? b = [2, 10, 8]′ ?11 3 ? 0? ? 在 Matlab 编辑器中建立 M 文件:LX0718.m A=[4 2 -1;3 -1 2;11 3 0]; B=[2 10 8]&#39;; D=det(A) [L,U]=lu(A) X=U\(L\B) 在 Matlab 命令窗口建入 LX0718,回车后显示结果如下: D= 0 L= 0.0 1.7 1.. U= 11.0 0 0 -1.0 0 0 0.0000 Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 2.7. & In D:\Matlab\pujun\lx0720.m at line 4 X= 1.0e+016 * -0.4053?20? 1.1 说明: 说明:结果中的警告是由于系数行列式为零产生的。可以通过 A*X 验证其正确性。 2.Cholesky 分解 若 A 为对称正定矩阵,则 Cholesky 分解可将矩阵 A 分解成上三角矩阵和其转置的乘 积,即: A = R ′ ? R 其中 R 为上三角阵。 方程 A*X=b 变成 R ′ ? R * X = b 所以X = R \ (R′ \ b)R=chol(A) 命令 3.QR 分解 对于任何长方矩阵 A,都可以进行 QR 分解,其中 Q 为正交矩阵,R 为上三角矩阵的 初等变换形式,即:A=QR 方程 A*X=b 变形成 QRX=b 所以 X=R\(Q\b) [Q, R]=qr(A) 命令 上例中 [Q, R]=qr(A) X=R\(Q\B) 说明: 说明:这三种分解,在求解大型方程组时很有用。其优点是运算速度快、可以节省磁 盘空间、节省内存。5.2求线性齐次方程组的通解在 Matlab 中,函数 null 用来求解零空间,即满足 A?X=0 的解空间,实际上是求出解 空间的一组基(基础解系) 。 格式:z = null % z 的列向量为方程组的正交规范基,满足 Z′ × Z = Iz = null(A,′ r′)例 5-4% z 的列向量是方程 AX=0 的有理基求解方程组的通解:? x1 + 2x 2 + 2x 3 + x 4 = 0 ? ?2x1 + x 2 ? 2x 3 ? 2x 4 = 0 ? x1 ? x 2 ? 4x 3 ? 3x 4 = 0 ?解:在 Matlab 编辑器中建立 M 文件:LX0719.m A=[1 2 2 1;2 1 -2 -2;1 -1 -4 -3]; format rat %指定有理式格式输出 B=null(A,&#39;r&#39;) %求解空间的有理基 运行后显示结果如下: B= 2 5/3?21? -2 -4/3 1 0 0 1 写出通解: syms k1 k2 X=k1*B(:,1)+k2*B(:,2) %写出方程组的通解 pretty(X) %让通解表达式更加精美 运行后结果如下: X= [ 2*k1+5/3*k2] [ -2*k1-4/3*k2] [ k1] [ k2]% 下面是其简化形式[2k1 + 5/3k2 ] [ [-2k1 - 4/3k2] [ [ k1 [ [ k2 ] ] ] ] ]5.3求非齐次线性方程组的通解非齐次线性方程组需要先判断方程组是否有解,若有解,再去求通解。因此, 步骤为:第一步:判断 AX=b 是否有解,若有解则进行第二步 第二步:求 AX=b 的一个特解 第三步:求 AX=0 的通解 第四步:AX=b 的通解= AX=0 的通解+AX=b 的一个特解。 例 5-5 求解方程组? x1 ? 2x 2 + 3x 3 ? x 4 = 1 ? ?3x1 ? x 2 + 5x 3 ? 3x 4 = 2 ?2x1 + x 2 + 2x 3 ? 2x 4 = 3 ? 解:在 Matlab 编辑器中建立 M 文件:LX0720.m A=[1 -2 3 -1;3 -1 5 -3;2 1 2 -2]; b=[1 2 3]&#39;; B=[A b]; n=4; R_A=rank(A) R_B=rank(B) format rat?22? if R_A==R_B&R_A==n %判断有唯一解 X=A\b elseif R_A==R_B&R_A&n %判断有无穷解 X=A\b %求特解 C=null(A,&#39;r&#39;) %求 AX=0 的基础解系 else X=&#39;equition no solve&#39; %判断无解 end 运行后结果显示: R_A = 2 R_B = 3 X= equition no solve 说明该方程组无解 例 5-6 求解方程组的通解:? x1 + x 2 ? 3x 3 ? x 4 = 1 ? ?3x1 ? x 2 ? 3x 3 + 4x 4 = 4 ?x1 + 5x 2 ? 9x 3 ? 8x 4 = 0 ?解法一:在 Matlab 编辑器中建立 M 文件:LX07211.m A=[1 1 -3 -1;3 -1 -3 4;1 5 -9 -8]; b=[1 4 0]&#39;; B=[A b]; n=4; R_A=rank(A) R_B=rank(B) format rat if R_A==R_B&R_A==n X=A\b elseif R_A==R_B&R_A&n X=A\b C=null(A,&#39;r&#39;) else X=&#39;Equation has no solves&#39; end 运行后结果显示为: R_A = 2 R_B = 2 Warning: Rank deficient, rank = 2 tol = 8..?23? & In D:\Matlab\pujun\lx0723.m at line 11 X= 0 0 -8/15 3/5 C= 3/2 -3/4 3/2 7/4 1 0 0 1 所以原方程组的通解为?3 / 2? ? ? 3 / 4? ? 0 ? ? ? ? ? ? ? ? 3 / 2 ? +k2 ? 7 / 4 ? + ? 0 ? X=k1 ? 1 ? ? 0 ? ? ? 8 / 15? ? 0 ? ? 1 ? ? 3/5 ? ? ? ? ? ? ? 解法二:在 Matlab 编辑器中建立 M 文件:LX07212.m A=[1 1 -3 -1;3 -1 -3 4;1 5 -9 -8]; b=[1 4 0]&#39;; B=[A b]; C=rref(B) %求增广矩阵的行最简形,可得最简同解方程组。 运行后结果显示为: C= 1 0 -3/2 3/4 5/4 0 1 -3/2 -7/4 -1/4 0 0 0 0 0 对应齐次方程组的基础解系为: ?3 / 2? ? ? 3 / 2? , ξ1 = ? ? 1 ? ? 0 ? ? ?非齐次方程组的特解为:? ? 3 / 4? ? ? 7/4 ? ξ2 = ? ? 0 ? ? 1 ? ? ?? 5/ 4 ? ? ? ? ? 1 / 4? η* = ? 0 ? ? 0 ? ? ?所以,原方程组的通解为: X=k1 ξ1 +k2 ξ2 + η *?24? 六、特征值与二次型工程技术中的一些问题,如振动问题和稳定性问题,常归结为求一个方阵的特征值和 特征向量。6.1方阵的特征值与特征向量设 A 为 n 阶方阵,如果数入和 n 维列向量 x 使得关系式 Ax = λx成立,则称 λ 为方阵 A 的特征值,非零向量 x 称为 A 对应于特征值入的特征向量。 在 Matlab 中,用如下几种调用格式来求 A 的特征值和特征向量。 1.d=eig(A) % d 为矩阵 A 的特征值排成的向量 2.[V, D]=eig(A) % D 为 A 的特征值对角阵,V 的列向量为对应特征值的特征向量 (且为单位向量) 3.[V, D]=eig(A, &#39; nobalance′ ) % 当 A 中有小到和截断误差相当的元素时,用 , nobalance 选项,其作用是减少计算误差? ? 2 1 1? ? ? 求矩阵 A = ? 0 2 0 ? 的特征值和特征向量 ? ? 4 1 3? ? ? 解:在 Matlab 编辑器中建立 M 文件:LX0722.m A=[-2 1 1;0 2 0;-4 1 3]; [V,D]=eig(A) 运行后结果显示: V= -0.5 0. 0.1 -0.5 D= -1 0 0 0 2 0 0 0 2 即:特征值-1 对应特征向量(-0..7071)T 特征值 2 对应特征向量(-0..9701)T 和(-0.3015例 6-10.9045-0.3015)T? ? 1 1 0? ? ? 例 6-2 求矩阵 A = ? ? 4 3 0 ? 的特征值和特征向量 ? 1 0 2? ? ? 解:在 Matlab 编辑器中建立 M 文件:LX0723.m A=[-1 1 0;-4 3 0;1 0 2]; [V,D]=eig(A) 运行后结果显示为?25? V= 0 0.2 0 0.5 1.2 0.4082 D= 2 0 0 0 1 0 0 0 1 0.2)Tk 为说明: 说明:当特征值为 1 (二重根)时,对应特征向量都是 k (0.4082 任意常数。6.2正交矩阵及二次型A 为 n 阶方阵,且满足: A′A = E(即A&#39; = A ?1) ,则 A 为正交矩阵A 为正交矩阵 ? A 的各列(行)向量的长度为 1,而且 A 的各列(行)向量两两正交。 6.2.1 向量的长度(范数) 命令 norm 格式 norm(X) 6.2.2 求矩阵的正交矩阵 命令: 命令:orth 格式:orth(A) %将矩阵 A 正交规范化 % 求 X 的范数? 4 0 0? ? ? 例如:求 A = ? 0 3 1 ? 的正交矩阵 ? 0 1 3? ? ? 在 Matlab 命令窗口键入 A=[4 0 0; 0 3 1; 0 1 3]; P=orth(A) Q=P&#39;*P 则显示结果为 P= 1. 0 0.1 0 0.1 Q= 1. 0 1. 0 1.0000?26? 6.2.3 矩阵的 schur 分解 格式 [U, T]=schur(A) %U 为正交矩阵,使得 A = U T U′ 和 U′ U = ET = schur(A) 例 6-3%生成 schur 矩阵 T。当 A 为实对称阵时,T 为特征值对角阵? 4 0 0? ? ? 设 A = ? 0 3 1 ? ,求一个正交矩阵 P,使 P 1AP=Λ为对角阵 ? 0 1 3? ? ? 解法 1:在 Matlab 编辑器中建立 M 文件:LX07241.m A=[4 0 0;0 3 1;0 1 3]; [V,D]=eig(A) 运行后结果如下: V= 1. 0 0.1 0 0.1 D= 4 0 0 0 4 0 0 0 2 这里,V 就是所求的正交矩阵 P,D 就是对角矩阵Λ 解法 2:在 Matlab 编辑器中建立 M 文件:LX07242.m A=[4 0 0;0 3 1;0 1 3]; [U,T]=schur(A) 运行后结果显示如下: U= 1. 0 0.1 0 0.1 T= 4 0 0 0 4 0 0 0 2 这里,U 就是所求的正交矩阵 P,T 就是对角矩阵Λ说明: 说明:对于实对称矩阵,用 eig 和 schur 分解效果一样。 例 6-4 求一个正交变换 X=PY,把二次型 f = 2x1x 2 + 2x1x 3 ? 2x1x 4 ? 2x 2 x 3 + 2x 2 x 4 + 2x 3x 4化成标准形。 解:先写出二次型的实对称矩阵?27? 1 1 ? 1? ?0 ? ? 1 0 ?1 1 ? A=? 1? ? 1 ?1 0 ??1 1 1 0? ? ? 在 Matlab 编辑器中建立 M 文件:LX0725.m A=[0 1 1 -1;1 0 -1 1;1 -1 0 1;-1 1 1 0]; [P,D]=schur(A) syms y1 y2 y3 y4 y=[y1;y2;y3;y4]; X=vpa(P,2)*y %vpa 表示可变精度计算,这里取 2 位精度 f=[y1 y2 y3 y4]*D*y 运行后结果显示如下: P= 780/989 780/ -390/1 780/989 -1/2 390/1 -780/ 390/ 1/2
D= 1 0 0 0 0 1 0 0 0 0 -3 0 0 0 0 1 X= [ .79*y1+.21*y2+.50*y3-.29*y4] [ .21*y1+.79*y2-.50*y3+.29*y4] [ .56*y1-.56*y2-.50*y3+.29*y4] [ .50*y3+.85*y4] f= y1^2+y2^2-3*y3^2+y4^2即2 2 f = y1 + y2 ? 3y3 + y 2 2 4二、绘图功能1 、二维图形的绘制 1.1.1 基本形式 . 二维图形的绘制是 MATLAB 语言图形处理的基础,MATLAB 最常用的画二维图形的 命令是 plot,看两个简单的例子: && y=[0 0.58 0.70 0.95 0.83 0.25]; && plot(y)?28? 生成的图形见图 5-1,是以序号 1,2, L ,6 为横坐标、数组 y 的数值为纵坐标画出的折线。 && x=linspace(0,2*pi,30); && y=sin(x); && plot(x,y) % 生成一组线性等距的数值生成的图形见图 5-2,是 [0, 2π ] 上 30 个点连成的光滑的正弦曲线。图 5-1 图 5-2 1.1.2 多重线 在同一个画面上可以画许多条曲线,只需多给出几个数组,例如 && x=0:pi/15:2* && y1=sin(x); && y2=cos(x); && plot(x,y1,x,y2) 则可以画出图 5-3。多重线的另一种画法是利用 hold 命令。在已经画好的图形上,若设置 hold on,MATLA 将把新的 plot 命令产生的图形画在原来的图形上。而命令 hold off 将结 束这个过程。例如: && x=linspace(0,2*pi,30); y=sin(x); plot(x,y) 先画好图 5-2,然后用下述命令增加 cos(x)的图形,也可得到图 5-3。 && hold on && z=cos(x); plot(x,z) && hold off?29? 110.80.80.60.60.40.40.20.200-0.2-0.2-0.4-0.4-0.6-0.6-0.8-0.8-101234567-101234567图 5-3 图 5-4 1.1.3 线型和颜色 MATLAB 对曲线的线型和颜色有许多选择, 标注的方法是在每一对数组后加一个字符 串参数,说明如下: 线方式: - 实线 :点线 -. 虚点线 - - 波折线。 线型 线方式 点方式: . 圆点 +加号 * 星号 x x形 o 小圆 线型 点方式 颜色: y 黄; r 红; g 绿; b 蓝; w 白; k 黑; m 紫; c 青. 颜色 以下面的例子说明用法: && x=0:pi/15:2* && y1=sin(x); y2=cos(x); && plot(x,y1,’b:+’,x,y2,’g-.*’) 可得图形 5-4。 1.1.4 网格和标记 在一个图形上可以加网格、标题、x 轴标记、y 轴标记,用下列命令完成这些工作。 && x=linspace(0,2*pi,30); y=sin(x); z=cos(x); && plot(x,y,x,z) && grid && xlabel(‘Independent Variable X’) && ylabel(‘Dependent Variables Y and Z’) && title(‘Sine and Cosine Curves’) 它们产生图 5-5:?30? Sine and Cosine Curves 10.80.60.4 Dependent Variables Y and Z0.20-0.2-0.4-0.6-0.8-10123 4 Independent Variable X567图 5-5 也可以在图形的任何位置加上一个字符串,如用: && text(2.5,0.7,’sinx’) 表示在坐标 x=2.5, y=0.7 处加上字符串 sinx。更方便的是用鼠标来确定字符串的位置, 方法 是输入命令: && gtext(‘sinx’) 在图形窗口十字线的交点是字符串的位置,用鼠标点一下就可以将字符串放在那里。 1.1.5 坐标系的控制 在缺省情况下 MATLAB 自动选择图形的横、纵坐标的比例,如果你对这个比例不满 意,可以用 axis 命令控制,常用的有: axis([xmin xmax ymin ymax]) [ ]中分别给出 x 轴和 y 轴的最大值、最小值 axis equal 或 axis(‘equal’) x 轴和 y 轴的单位长度相同 axis square 或 axis(‘square’) 图框呈方形 axis off 或 axis(‘off’) 清除坐标刻度 还有 axis auto axis image axis xy axis ij axis normal axis on axis(axis) 用法可参考在线帮助系统。 1.1.6 多幅图形 可以在同一个画面上建立几个坐标系, 用 subplot(m,n,p)命令;把一个画面分成 m×n 个 图形区域, p 代表当前的区域号,在每个区域中分别画一个图,如 && x=linspace(0,2*pi,30); y=sin(x); z=cos(x); && u=2*sin(x).*cos(x); v=sin(x)./cos(x); && subplot(2,2,1),plot(x,y),axis([0 2*pi C1 1]),title(‘sin(x)’) && subplot(2,2,2),plot(x,z),axis([0 2*pi C1 1]),title(‘cos(x)’) && subplot(2,2,3),plot(x,u),axis([0 2*pi C1 1]),title(‘2sin(x)cos(x)’) && subplot(2,2,4),plot(x,v),axis([0 2*pi C20 20]),title(‘sin(x)/cos(x)’) 共得到 4 幅图形,见图 5-6.?31? sin(x) 1 1cos(x)0.50.500-0.5-0.5-10246-102462*sin(x)cos(x) 1 20sin(x)/cos(x)0.51000-0.5-10-10246-200246图 5-6 1.2 三维图形 限于篇幅这里只对几种常用的命令通过例子作简单介绍. 1.2.1 带网格的曲面 例 作曲面 z=f(x,y)的图形z=sin x 2 + y 2 x2 + y2, ? 7.5 ≤ x ≤ 7.5, ? 7.5 ≤ y ≤ 7.5用以下程序实现: && x=-7.5:0.5;7.5; && y=x; && [X,Y]=meshgrid(x,y); (3 维图形的 X,Y 数组) && R=sqrt(X.^2+Y.^2)+ (加 eps 是防止出现 0/0) && Z=sin(R)./R; && mesh(X,Y,Z) (3 维网格表面) 画出的图形如图 5-7. mesh 命令也可以改为 surf, 只是图形效果有所不同, 读者可以上 机查看结果。?32? 35 30 25 20 15 10 5 0 1 0.5 0 0 -0.5 -1 -1 -0.5 0.5 1图 5-7 图 5-8 1.2.2 空间曲线 作螺旋线 x=sint, y=cost, z=t 例 用以下程序实现: && t=0:pi/50:10* && plot3(sin(t),cos(t),t) (空间曲线作图函数, 用法类似于 plot) 画出的图形如图 5-8 1.2.3 等高线 用 contour 或 contour3 画曲面的等高线,如对图 5-7 的曲面, 在上面的程序后接 contour(X,Y,Z,10) 即可得到 10 条等高线。 12.4 其它 较有用的是给三维图形指定观察点的命令 view(azi,ele), 是方位角, ele 是仰角.缺省 azi 时 azi= ? 37.5 0 , ele= 30 .01.3 图形的输出 在数学建模中,往往需要将产生的图形输出到 Word 文档中。通常可采用下述方法: 首先,在 MATLAB 图形窗口中选择【File】菜单中的【Export】选项,将打开图形输出对 话框,在该对话框中可以把图形以 emf、bmp、jpg、pgm 等格式保存。然后,再打开相应 的文档,并在该文档中选择【插入】菜单中的【图片】选项插入相应的图片即可。?33? 矩阵与数组和基本操作命令 实验一 矩阵与数组和基本操作命令实验目的 1.掌握矩阵与数组和基本操作命令; 2.能够编写简单的运算代码 实验工具 在 MATLAB 中,矩阵用中括号括起来,同一行的数据用空格或逗号隔开, 不同行用分号隔开。矩阵是 MATLAB 的基本数据形式,数和向量可视作它的特殊 形式,不必对矩阵的行、列数作专门的说明。 实验内容 一.矩阵的直接输入 矩阵有多种输入方式, 这里介绍一种逐一输入矩阵元素的方法。 具体做法是, 在方括号内逐行键入矩阵各元素,同一行各元素之间用逗号或空格分隔,两行 元素之间用分号分隔。 例 1. 在 MATLAB 的 提 示 符 下 输 入 : A= [1,2,3; 4,5,6; 7,8,9] 得到一个 3 行 3 列的矩阵,屏幕上显示为 A= 1 2 3 4 5 6 7 8 9 二. 矩阵元素 矩阵元素用矩阵名及其下标表示。在作了例 1 的输入后,若键入: A(2,3) 屏幕显示 ans= 6 即矩阵 A 第 2 行第 3 列的元素为 6。 也可通过改变矩阵的元素来改变矩阵。在例 1 输入矩阵 A 后键入: A(3,3)=10 即得一新的矩阵,屏幕会显示 A= 1 2 3 4 5 6 7 8 10 甚至可以通过给定一个元素的值,得到一个扩大的新矩阵。 如再键入: A(5,3)=2 * 0.15 屏幕显示 A= 1.0 3.0 5.0 7.0 10. 0?34? 000.3000三.矩阵的运算 矩阵运算的运算符为+,-,*,/,\,′和^。其中+,-,*是通常矩 阵加法、减法和乘法的运算符。 例 2. 在 MATLAB 的提示符下分别输入矩阵 M,N 和 V: M=[1, 0.5,2;2,3,3;4.5,1,6] M= 1.0 2.0 3.0 4.0 6.0000 N=[2,2,3;3,1,4;1,1,2] N= 2 2 3 3 1 4 1 1 2 V=[1,2;2,1;3,1] V= 1 2 2 1 3 1 键入: R1=M+N R1= 1.0 5.0 4.0 5.0 8.0000 键入: R2=M-N R2=-1.0 -1.0 2.0 3.0 4.0000 键入: R3=M*N R3= 5.0 9.0 10.0 18.0 29.5000 键入: R4=M*V R4= 8.0 17.0 24.0 “′”是矩阵转置运算符,如键入: R5=V′得: R5= 1 2 3?35? 211四.逆矩阵的求法 定义 对于 n 阶方阵 A,如果存在 n 阶方阵 B,使得 AB=BA=E,则称 n 阶 方阵 A 是可逆的,而 B 称为 A 的逆矩阵,记为 A-1。 在 MATLAB 中求逆阵的函 数为 inv( )。 例 3. 在 MATLAB 的提示符下键入: A=[1,0,1;2,1,0;-3,2,-5] A= 1 0 1 2 1 0 -3 2 -5 键入: X=inv(A) X= -2.. 1 3..5000 五. 方阵行列式 定义: 定义:如果 A 是一个已知方阵,以 A 的元素按原次序所构成的行列式,叫做 A 的行列式。 在 MATLAB 中求方阵 A 的行列式的函数为 det(A). 例 4. 在 MATLAB 的提示符下键入: A=[1,1,1;1,2,3;1,3,6]; D=det(A) 得 D= 1 A=[1,0,1;2,1,0;-3,2,-5]; 在 MATLAB 的提示符下键入: D=det(A) 得 D= 2 六.矩阵方程 运算符/和 \ 分别称为左除和右除。 设 A 和 B 是两个列数相同的矩阵,X=A/B 得到一个矩阵 X,它满足 XB=A。 若 A 和 B 是同阶且 B 是可逆的,则 X=AB-1。若 A,B 行数相同 X=A\B 得到 的矩阵 X 满足 AX=B,若 A,B 为同阶方阵且 A 为可逆的,则 X=A-1B。 例 5. 在 MATLAB 的提示符下 键入: A=[2,1; 1,2]; B=[1,2; -1,4]; X=A/B 得 X= 1.5 -0.5 1 0 键入:?36? Y=A\B 得 Y= 例 6. 设 A= 1 -1 0 24,3,2 1,1,0; -1,2,3]; AB=A+2B,求 B。 解:把上矩阵式变形为(A-2E)B=A,则求 B 即解此矩阵方程。 在 MATLAB 的提示符下输入: A=[4,3,2;1,1,0;-1,2,3]; E=[1,0,0;0,1,0;0,0,1]; X=A-2E; B=X\A 得 B= 1.7 -1.7 -1.3 -0.7 4.3333 七.矩阵的初等变换 定义. 对矩阵施行以下三种变换: 定义 (1)互换变换:矩阵的两行(列)互换位置; (2)倍法变换:用一个不等于零的数乘矩阵某一行(列)的所有元素; (3)消去变换:把矩阵某一行(列)所有元素的倍加到另一行(列)的 对应元素上去。 这三种变换为矩阵的初等行(列)变换,简称矩阵的初等变换。利用矩阵 的一系列初等变换可以将一个矩阵化为与之等价的行阶梯形矩阵。 在 MATLAB 中,函数 rref(A)将返回 A 的行阶梯形矩阵。 例 6. 在 MATLAB 的提示符下 键入: % 化魔方矩阵 a=magic(6)为行阶梯形矩阵。 a=magic(6) a = 35 1 6 26 19 24 3 32 7 21 23 25 31 9 2 22 27 20 8 28 33 17 10 15 30 5 34 12 14 16 4 36 29 13 18 11 b=rref(a) b =?37? 1 0 0 0 0 00 1 0 0 0 00 0 1 0 0 00 0 0 1 0 00 0 0 0 1 0-2 -2 1 2 2 0八.矩阵的秩 定义 从矩阵 A 中任选 r 行 r 列,在这 r 行 r 列中的 r2 个 数按原次序作成一个行列式,称为矩阵 A 的一个 r 阶子 行列式(或称 r 阶子式)。 若矩阵 A 至少有一个不为零的 r 阶子式, 而所有高于 r 阶的子式都为零,则称矩阵 A 的秩为 r,记为 r(A)=r. 在 MATLAB 中,求矩阵秩的函数为 rank(A). 例 7. 在 MATLAB 的提示符下 键入: A=[2,2,1; -3,12,3;8,-2,1;2,12,4]; r(A)=rank(A) 得 r(A)= 2 例 8. 键入: A=magic(6); c=rank(A) 得 c = 5 实验任务 练习一 一. 输入 A=[1,1,1;1,2,3;1,3,6],B=[8,1,6;3,5,7;4,9,2],u=[3;1;4], 1.A+B; 2.A-B; 3.A*B; 4.A*u; 5.2A-3B; 6.A2+B2; 7.AB-BA。 练习二 二. 求下列矩阵的逆阵并求其行列式 1.A=[1,3,3;1,4,3;1,3,4]; 2.A=[1,2,3;2,2,1;3,4,3]; 3.A=[1,1,1,1;1,1,-1,-1;1,-1,1,-1;1,-1,-1,1]; 4. A=[1,1,0,0;1,2,0,0;3,7,2,3;2,5,1,2]。 练习三 三. 解矩阵方程?38? 1.A=[2,5;1,3],B=[4,-6;2,1],AX=B; 2.A=[2,1,-1;2,1,0;1,-1,1],B=[1,-1,3;4,3,2;1,-2,5],XA=B; 3.A=[1,4;-1,2],B=[2,0;-1,1],C=[3,1;0,-1],AXB=C; 4.A=[0,1,0;1,0,0;0,0,1],B=[1,0,0;0,0,1;0,1,0],C=[1,-4,3;2,0,-1;1,-2, 0], AXB=C. 练习四 四. 将下列矩阵化为阶梯矩阵 1.A=[1,-2,0;-1,1,1;1,3,2]; 2.A=[0,1;1,0;0,-1]; 3.A=[1,2,3,4;0,1,2,3;0,0,1,2;0,0,0,1]; 4.A=[2,1,0,0;3,2,0,0;1,1,3,4;2,-1,2,3]. 练习五 五.求下列矩阵的秩 1.A=[-5,6,-3;3,1,11;4,-2,8]; 2.A=1,-2,3,-1;3,-1,5,-3;2,1,2,-2]; 3.A=[3,1,0,2;1,-1,2,-1;1,3,-4,4]; 4.A=[1,4,-1,2,2;2,-2,1,1,0;-2,-1,3,2,0].实验二 绘图功能实验目的1. 掌握绘制二维和三维图形的常用命令; 2. 能够编写相关程序实验三实验目的M 文件1. 掌握用 M 文件编写和保存 MATLAB 程序代码。实验四 MATLAB 在实验数据处理中的应用实验目的?39? 1. 掌握多项式函数库; 2.能够编写相关程序。实验五 MATLAB 在电路中的应用实验目的1. 掌握 MATLAB 在电路中的基本表达式; 2. 能够运用 MATLAB 解电路方程组。实验六 MATLAB 在信号与系统中的应用实验目的1. 掌握 MATLAB 在信号与系统中的基本表达式和编写相关程序。实验七 MATLAB 仿真测量仪器实验目的1. 了解 MATLAB 的 Simulink 仿真平台; 2. 掌握常用测量仪器的仿真。实验八电子线路仿真试验实验目的1. 掌握 MATLAB 在电子线路仿真试验中的应用; 2. 掌握 Simulink 库中各模块参数的设置。?40? 实验一 轴线框特性设置实验目的1.掌握坐标轴特性设置的常用命令。 2.掌握对线特性的设置。 3.掌握图形窗口的设置命令。实验方法与内容1.实验指令 . axis ―― 设定坐标比例和尺寸。其调用格式如下: axis([xmin xmax ymin ymax]) axis([xmin xmax ymin ymax zmin zmax]) v = axis axis tight axis equal axis square axis normal axis(axes_handles,…) 设置 x、y、z 轴等的范围。 设置当前数据为坐标范围。 等长刻度坐标轴。 产生正方形坐标轴。 缺省坐标轴。 对轴进行命令设定。[mode,visibility,direction]=axis(‘state’) 返 回 当 前 坐 标 轴 设 置 的 参 数。set ―― 设置图形对象属性。其调用格式如下: set(h, ‘ PropertyName’, PropertyValue,…) 用来设置句柄 h 所对应 的图形对象的特定属性值。若 h 是句柄组成的向量,则 set 函数将设置 所有对象的属性值。 set(h,a) 此处 a 是一个结构,其域名即为属性名,属性值包含在?41? 域中;它可以把属性值设置给和域名相同的属性。 set(h,pn,pv) 参数 pn 必须是 1×N 的单元矩阵,其元素为需要设 置的属性名;参数 pv 是一个 M×N 的由对应属性值组成的单元矩阵, M 为向量 h 的长度值。 set(h, ‘PropertyName1’, PropertyValue1, ‘PropertyName2’, PropertyValue2,…) 同时设置多个属性值给句柄 h 对应的对象。 a = set(h, ‘ PropertyName’)或 set(h, ‘PropertyName’) 返回或者显 示句柄 h 对应的对象的属性值。此属性值有可能为空。 a = set(h)或 set(h) 返回或者显示由句柄 h 对应的所有对象的属性 名和属性值所构成的结构。 set(gca, ‘ PropertyName’, PropertyValue,…) gca 表 示 当 前 坐 标 轴 , PropertyName 是 指 坐 标 轴 参 数 , PropertyValue 为参数的属性值(王家文,曹宇,2004) 。subplot ―― 创建和控制多坐标轴。其调用格式如下: subplot(m,n,p) subplot(m,n,p, ‘replace’) subplot(h) subplot(‘Position’,[left bottom width height]) h=subplot(…) subplot(m,n,p) 表示把当前窗口对象分成 m×n 块矩阵区域并在 第 p 块区创建一个新的坐标轴,这个新的坐标轴设定为当前坐标轴。 参数‘replace’表示当前坐标轴存在的话,删除它并创建一个新的坐标 轴。 subplot(‘Position’,[left bottom width height]) 是在规格化的窗口对 象(范围:0.0 到 1.0)里创建一个位置为[left bottom width height]的坐?42? 标轴。 h=subplot(…) 返回创建新坐标轴的句柄。grid ―― 控制网格线切换指令。 grid on grid off 2.实验要点 . (1) 熟悉坐标控制命令 axis。坐标轴范围必须设置恰当,否则图像的某 一部分将会无法显示。 (2) set 为图形对象属性设置命令,掌握其参数的设置。 (3) subplot 函数用于创建和控制多坐标轴。 3.实验内容 . 程序 1 坐标轴特性设置(徐明远,邵玉斌,2005) figure(1) x=logspace(-2,0,500);%创建窗口图形. %生成第一个元素为 100 ?2打开网格线。 关闭网格线(薛年喜,2003) 。,最后一个元素为 10 ,500 为采样点.plot(x,((sin(1./x)).^2)./x);%plot 命令,在二维坐标系里绘制线性图 形.set(gca,&#39;XScale&#39;,&#39;log&#39;,&#39;YScale&#39;,&#39;linear&#39;) %XScale、Yscale 可设定 X 轴、Y 轴的缩放 比例,其参数属性值有 linear(线型) 、log(对 数型).set(gca,&#39;XGrid&#39;,&#39;on&#39;,&#39;YGrid&#39;,&#39;on&#39;)%XGrid、YGrid 为设定 X 轴、Y 轴的网 格线的命令,其参数属性值:on/off.%set(gca,&#39;XDir&#39;,&#39;normal&#39;,&#39;YDir&#39;,&#39;reverse&#39;); %XDir、 YDir 可设定轴的方向,其参数属性值:normal(默认)/ reverse(反向).?43? %set(gca,&#39;XDir&#39;,&#39;reverse&#39;,&#39;YDir&#39;,&#39;reverse&#39;); %set(gca,&#39;Xcolor&#39;,&#39;red&#39;,&#39;YColor&#39;,&#39;red&#39;); figure(2) t=-2+eps:50+ y=((sin(1./t)).^2)./t; semilogy(t,y); grid axis([-2 50 -7 15])%在 y 对数比例坐标系里绘制图形. %打开网格线. %设定轴的范围,X 轴由-2 到 50,Y 轴 由-7 到 15. % eps 为浮点相对精度. % XColor、YColor 设定轴的颜色.实验结果如下:图 1-1 坐标轴特性设置 1?44? 图 1-2 坐标轴特性设置 2程序 2 线特性设置(徐明远,邵玉斌,2005) x=0:0.02:1; hndl=plot(x,humps(x)) set(hndl,&#39;Marker&#39;,&#39;+&#39;) set(hndl,&#39;LineWidth&#39;,1) set(hndl,&#39;MarkerSize&#39;,8) set(hndl,&#39;Color&#39;,&#39;red&#39;) xlabel(&#39;x&#39;) ylabel(&#39;humps(x)&#39;) grid 实验结果如下:%打开网格线. %设置数据的点型. %设置线的线宽. %设置点型大小. %设置线的颜色. %设置 x 的范围,由 0 到 1,间隔值为 0.02.?45? 图 1-3 线特性设置程序 3 图框特性设置(徐明远,邵玉斌,2005) t=0:pi/20:2* subplot(1,3,1)%设定 t 的范围从 0 到 2*pi,间隔值为 pi/20. %将当前窗口对象分成 1×3 块矩形区域,并在第 1 块区创建一个新的坐标轴.plot(sin(t),2*cos(t)) grid on subplot(1,3,2) plot(sin(t),2*cos(t)) grid on axis square subplot(1,3,3) plot(sin(t),2*cos(t)) grid on axis equal tight%绘制线性图形. %打开网格线. %在第 2 块区创建一个新的坐标轴.%产生正方形坐标轴. %在第 3 块区创建一个新的坐标轴.%设置当前数据为坐标范围,且产生等长刻度坐标轴.?46? 实验结果如下:图 1-4 图框特性设置实验步骤1.运行 MATLAB,打开 File→New→M-file,新建 M 文件。 2.将程序 1 输入到 M 文件中,保存并运行。 3.将程序 2 输入到 M 文件中,保存并运行。 4.将程序 3 输入到 M 文件中,保存并运行。实验要求修改命令 set 中的参数(参数见附录) 。参考文献: 参考文献[1]王家文,曹宇.MATLAB6.5 图形图像处理.北京:国防工业出版社,2004. [2]薛年喜.MATLAB 在数字信号处理中的应用.北京:清华大学出版社,2003. [3]徐明远,邵玉斌.MATLAB 仿真在通信和电子工程中的应用.西安电子科技大学出 版,2005.?47? 附录: 表 1 线型符号符号 -实线 双划线 含义 符号 : -. 虚线 点划线 含义表 2 数据点型符号符号 + o * . x s d 十字符 空心圆 星号 实心圆 叉符 正方符 菱形符 含义 符号 ^ v & & p h 上三角符 下三角符 左三角符 右三角符 五星符 六星符 含义表 3 色彩符号 r g b c 红色 绿色 蓝色 青色 含义 符号 m y k w 品红色 黄色 黑色 白色 含义?48? 实验二 多图特性设置实验目的熟悉对多图特性的设置。实验方法与内容1.实验指令 . linspace(a,b,n) 表示在 a 到 b 间创建 n 个采样点,n 的默认值为 100。hold控制是否在当前图形里绘制数据。 hold on 在当前坐标轴图形里绘制数据。hold off 重新绘制数据图形,即置换当前的图形对象。legend在当前图形上加上图例。调用格式如下:legend(‘string1’, ‘string2’,…) 用指定的文字 string 在当前坐标轴中 对所给数据的每一部分显示一个图例。 legend(h, ‘string1’, ‘string2’,…) 为指定的句柄对象 h 添加图例。 legend(string_matrix) 用字符数组来表示图例(每行对应) 。 legend(h,string_matrix) 用指定的句柄对象 h 添加图例。 legend(axes_handle,…) 指下图形句柄对象 axes_handle。legend(‘off’) 删除图例。 legend(‘hide’) 隐藏图例。 legend(‘show’) 显示图例。 legend(‘boxoff’) 移除图例边框。 legend(‘boxon’) 显示图例边框。 legend (h,…)?49? legend(…,pos) 参数 pos 用于设定图例位置,其参数值参见附表。 h=legend(…) [legend_h,object_h,plot_h,text_strings] = legend(…) 返回值分别为图例句柄,图例对象中 line、patch 和 text 图形句柄,图形中 line 和 patch 对象句柄,图例对象中的字符元胞。xlabel、ylabel 函数 xlabel(‘string’) xlabel(fname)分别在 x 轴、y 轴加上标识。调用格式如下:xlabel(…, ‘PropertyName’,PropertyValue,…) h=xlabel(…)title 该函数用于在坐标轴图形上端中间标注标题。调用格式如下: title(‘string’) 标注字符串‘string’。 title(fname) 标注返回的函数名。title(…, ‘PropertyName’,PropertyValue,…) 对标题进行参数设置。 h=title(…) 2.实验要点 . (1)注意 hold on 命令。 在当前坐标轴图形中绘制数据时, 若不使用 hold on 命令,图形将会置换当前的数据。 (2)掌握图形标识命令 legend。 3.实验内容 . 程序 多图特性设置(徐明远,邵玉斌,2005) x=linspace(0,2*pi,60); a=sin(x); b=cos(x);?50?名柄返回(王家文,曹宇,2004) 。%在 0 到 2*pi 之间创建 60 个采样点。 stem_handles = stem(x,a+b);数。%返回图形句柄, stem 为二维杆状图函hold on%在当前图形上绘制数据。plot_handles = plot(x,a,&#39;--r&#39;,x,b,&#39;--g&#39;); %绘制特定线型、颜色的线性图形。 hold off%关闭。legend_handles = [stem_handles(1);plot_handles]; %返回值为图例名柄。 legend(legend_handles,&#39;a+b&#39;,&#39;a = sin(x)&#39;,&#39;b=cos(x)&#39;)%为指定的句柄对象 legend_handles 添 加 图 例。xlabel(&#39;Time in \ musecs&#39;) ylabel(&#39;Magnitude&#39;)%为 x 轴添加标题 ‘Time in \ musecs’。 %为 y 轴添加标题 ‘Magnitude’。title(&#39;Linear Combination of Two Funtions&#39;) %为图形添加标题。 实验结果如下:图 2-1 多图特性设置实验步骤?51? 1.运行 MATLAB,打开 File→New→M-file,新建 M 文件。 2.将程序输入到 M 文件中。 3.保存并运行程序,得出结果。参考文献: 参考文献[1]王家文,曹宇.MATLAB6.5 图形图像处理.北京:国防工业出版社,2004. [2]徐明远,邵玉斌.MATLAB 仿真在通信和电子工程中的应用.西安电子科技大学出 版社,2005. 附录: 表 1 pos 参数值pos 取值 -1 0 1 图例位置 坐标轴之外的右边 坐标轴之内, 有可能遮挡部分图形 坐标轴的右上角(缺省位置) Pos 取值 2 3 4 图例位置 坐标轴的左上角 在坐标轴的左下角 坐标轴的右下角实验三 特殊二维图形实验目的熟悉 MATLAB 特殊二维图形命令(bar、barh、polar、pie、stem、stairs)。实验方法及内容1.实验指令 . bar 函数 barh 函数 绘制二维垂直直方图。 绘制二维水平直方图。两个函数的用法基本相同,差别在绘制图形的方向上。 bar 函数的调用格式:?52? bar(Y) bar(X,Y) bar(…,width) bar(…, ‘style’) bar(…,LineSpec) h=bar(…) bar(Y) 绘制 Y 每个元素的直方图,如果 Y 是矩阵,绘制 Y 行数个条 形组。条形的高度对应于 Y 的值。 bar(X,Y) 用法和 bar(Y)一样,但不是对应 Y 下标而是对应 X 来绘制 直方图,这里的 X 向量必须具有单调性。 参数 width 来设定条形的宽度,默认的宽度是 0.8,如果宽度大于 1, 则直方图间就会出现交迭。 参数‘style’对应条形图的两种风格,可选 ‘grouped’ 或者‘stacked’,这 时‘grouped’为垂直排列组的条形图,‘stacked’为垂直堆型的条形图,其中 ‘grouped’是默认值。 参数 LineSpec,用来设置线型、色彩及点型等。 h=bar(…) 返回绘制直方图的名柄。polar(theta,rho) 为极坐标绘图。 以角度 theta 为一个坐标, 表示极坐标 的角度,单位是弧度;另外一个是矢径 rho,表示相对应的半径。在其后使 用 grid 命令,可以绘出网状极坐标图。pie ――显示数据元素在总体中所占的百分比的命令。其调用格式: pie(X) pie(X,explode) h=pie(…)?53? pie(X)中,X 既可以是向量也可以是矩阵。如果 X 中各个元素的和大 于等于 1, 则绘制出来的饼图中每个切片占整个饼图的百分比为这个元素值 占 X 的元素值和的百分比。如果 X 中各个元素的和小于 1,则绘制的是一 个不完整的饼图,每个切片占整个饼图的百分比就对应于这个元素的值。 参数 explode 用于设定饼图中切片的分离情况,参数 explode 的大小必 须和 X 的大小一致,explode 中非零元素对应的切片就是分离的切片。stem 线二维杆状图函数,将每个离散数据显示为末端带有标志符号的条。调用格式如下: stem(Y) stem(X,Y) stem(…, ‘fill’) stem(…,Linespec) h= stem(…) stem(Y)中 Y 表示需要绘制的离散数据, Y 为矩阵时, 当 会递加绘制每 一列数据的杆状图。参数 X 可以是向量或矩阵,X 为矩阵时,X 和 Y 的维 数需要相同;X 为向量、Y 为矩阵时,X 的长度需要和 Y 的行数保持一致。 参数 ‘fill’是对一些标记符号进行填充。参数 Linespec 定义线型、标记 符号的类型以及颜色,参数可以同时使用。阶梯图是以一定的间隔的上升沿或下降沿显示数据。阶梯图可以体现 出数据的变化情况。stairs 函数的调用格式如下: stairs(Y) stairs(X,Y) stairs(…,LineSpec)?54? [xb,yb] = stairs(Y) [xb,yb] = stairs(X,Y) 参数 LineSpec 用来设置线型、色彩及点型。 [xb,yb] = stairs(Y)和[xb,yb] = stairs(X,Y)的返回值[xb,yb]对应 plot[xb,yb],使得 plot[xb,yb]所绘制的图形实现 stairs 函数的功能(王家文, 曹宇,2004) 。 2.实验要点 . 注意在 pie 命令中,参数 explode 的非零元素对应的切片即为分离的切 片。 3.实验内容 . 程序 1 绘制直方图(徐明远,邵玉斌,2005) y = [5 2 1;8 7 3;9 5 6;5 1 5;4 3 2]; figure(1) bar(y) title(&#39;bar(y)&#39;) figure(2) barh(y) title(&#39;barh(y)&#39;) 实验结果如下:%创建窗口 2. %绘制二维水平直方图. %创建窗口 1. %绘制二维垂直直方图.?55? 图 3-1 二维垂直条形图图 3-2 二维水平条形图程序 2 绘制极坐标图(徐明远,邵玉斌,2005) t=0:.01:2*%划分 t 的范围,从 0 到 2*pi,间隔值为 0.001.?56? polar(t,abs((cos(2*t)).*(sin(2*t))))%polar 为极坐标绘图命令,前一参数为极 坐标的角度,后一参数为相对应的半 径.实验结果如下:图 3-3 极坐标图程序 3 绘制饼图(徐明远,邵玉斌,2005) x=[51 34 65 45]; explode = zeros(size(x)); [c,offset] = min(x);%产生 1×4 的全 0 数组,并赋给 explode. %求数组 x 中的最小值, 该数值赋给 c,其下标 赋给 offset.explode(offset) = 1; h=pie(x,explode);%给数组 explode 中第 offset 个元素重新赋值. %返回图形对象句柄,参数 explode 用于设定 饼图中切片的分离情况.names = {&#39;工业 51&#39;;&#39;农业 34&#39;;&#39;服务 65&#39;;&#39;商业 45&#39;}; textobjs=findobj(h,&#39;type&#39;,&#39;text&#39;);%findobj,查找图形对象的特征值,并赋给?57? textobj.set(textobjs,{&#39;string&#39;},names); title(&#39;pie&#39;) 实验结果如下:图 3-4 饼图程序 4 绘制杆状图(徐明远,邵玉斌,2005) n=[-3:10]; x=[(n-2)&=0]; stem(n,x); grid axis([-3,11,-.2,1.2]) title(&#39;stem&#39;) xlabel(&#39;n&#39;) ylabel(&#39;x&#39;) 实验结果如下:?58?%定义 n 的范围从-3 到 10,间隔值为 1. %&=为关系运算函数. %绘制杆状图. %显示网格线. %设定 x、y 轴的范围. 图 3-5 杆状图程序 5 绘制阶梯图(徐明远,邵玉斌,2005) x=0:0.25:10; stairs(x,sin(x)); grid axis([0 10 -1.2 1.2]) title(&#39;stairs&#39;) xlabel(&#39;x&#39;) ylabel(&#39;sin(x)&#39;) 实验结果如下:%设定 x 的范围从 0 到 10, 其间隔值为 0.25. %绘制 sin(x)的阶梯图. %打开网格线. %设置 x、y 轴的范围.?59? 图 3-6 阶梯图实验步骤1.运行 MATLAB,打开 File→New→M-file,新建 M 文件。 2.将程序 1 输入到 M 文件中,保存并运行。 3.将程序 2 输入到 M 文件中,保存并运行。 4.将程序 3 输入到 M 文件中,保存并运行。 5.将程序 4 输入到 M 文件中,保存并运行。 6.将程序 5 输入到 M 文件中,保存并运行。 参考文献: 参考文献[1]王家文,曹宇.MATLAB6.5 图形图像处理.北京:国防工业出版社,2004. [2]徐明远,邵玉斌.MATLAB 仿真在通信和电子工程中的应用.西安电子科技大学出 版社,2005.?60? 实验四 星座图实验目的1.了解星座图在通信领域中的应用。 2.熟悉星座图的绘制。实验原理星座图 现代数字通信系统几乎都采用了 IQ 正交调制器, 信号被分成了相互正交的 两部分 I(In-phase)路和 Q(Quadrature)路信号,采用正交调制方式的通信系 统有很多优点。在坐标轴上,以 I 路为横轴和 Q 路为纵轴,任何 IQ 调制信号都 可以映射为一系列信号点,这些信号点就组成了星座图,不同的调制方式星座 图也不同。 IQ 调制信号一般表示为复数形式 I+jQ,实部为 I 路,虚部为 Q 路,这样信 号的 I 路和 Q 路就可以分开分析,而且复数的 I+jQ 还可以认为是一个矢量,这 样星座图上的信号点的幅度和相位就相当于信号的幅度和相位,所以星座图对 于分析信号误差是一个非常有用的工具。实验方法及内容 实验方法及内容1.实验指令 . plot(Y) plot(X1,Y1,…) plot(X1,Y1,LineSpec1,…) plot(Y)中,如果 Y 为实数类型,则绘制以 Y 下标和 Y 值为坐标的相连 折线,如果 Y 为虚数,则绘制连接(real(Y),imag(Y))的折线。 plot(X1,Y1) 绘制以(X1,Y1)为坐标相连的折线, X1 和 Y1 维数须匹 但 配。如果[X1,Y1]是闭合的数组,则用函数 plot 可以绘制多边形。?61? 参数 LineSpec1 用来设定图形的线型、标记符号、颜色等(陈怀琛, 2003) 。 2.实验内容 . 程序 1 星座图(圆) (徐明远,邵玉斌,2005) d=[.5*exp(2*pi*i*[0:5]/6)exp(2*pi*i*[0:11]/12)1.5*exp(2*pi*i*[0:17]/18)] ; plot(d,&#39;r*&#39;); axis([-1.6 1.6 -1.6 1.6]) 实验结果如下:图 4-1 星座图(圆)程序 2 星座图(方) (徐明远,邵玉斌,2005) c=[1:5;1:5;1:5;1:5;1:5] plot(c,&#39;r*&#39;); axis([0 6 0 6]) 实验结果如下:%绘制图形,并设定线的颜色及线型. %设置坐标范围.?62? 图 4-2 星座图(方)实验步骤1.运行 MATLAB,打开 File→New→M-file,新建 M 文件。 2.将程序 1 输入到 M 文件中,保存并运行。 3.将程序 2 输入到 M 文件中,保存并运行。参考文献: 参考文献[1] 中国通信技术资源网:/. [2] 陈怀琛.MATLAB 及在电子信息课程中的应用.北京:电子工业出版社,2003. [3] 徐明远,邵玉斌.MATLAB 仿真在通信和电子工程中的应用.西安电子科技大学 出版社,2005.实验五 双 Y 轴图形实验目的?63? 熟悉双 Y 轴图形的绘制。实验方法及内容1.实验指令 . plotyy 函数调用格式如下: plotyy(X1,Y1,X2,Y2) plotyy(X1,Y1,X2,Y2, ‘function’) plotyy(X1,Y1,X2,Y2, ‘function1’, ‘function2’) [AX,H1,H2]=plotyy(…) plotyy(X1,Y1,X2,Y2) 表示分别以左 y 轴、右 y 轴和 x 轴画(X1,Y1)和 (X2,Y2)的图形。字符串‘function’代表绘制图形的方式,可选择 plot、 semilogx、semilogy、loglog、stem 等,或者自定义 MATLAB 可以接收的函 数:h=function(x,y) plotyy(X1,Y1,X2,Y2, ‘function1’, ‘function2’) 表示用 function(X1,Y1)在左坐标轴里绘制数据,用 function(X2,Y2)在右坐标轴里绘制数据。 [AX,H1,H2]=plotyy(…)中,AX 返回两个坐标轴的句柄,其中 AX(1)是 左坐标轴的句柄,AX(2)是右坐标轴的句柄,而 H1 和 H2 分别为两个图形 的句柄(王家文,曹宇,2004) 。 2.实验要点 . 注意 plotyy 函数中参数‘function’的设置,该参数的设置将改变图形的显 示(郝文化,田蕾,董秀芳,2003) 。 3.实验内容 . 绘制双 Y 轴图形(徐明远,邵玉斌,2005) t=0:900;A=1000;a=0.005;b=0.005; z1=A*exp(-a*t); z2=sin(b*t); [haxes,hline1,hline2]=plotyy(t,z1,t,z2,&#39;semilogy&#39;,&#39;plot&#39;);?64?%为各参数赋值.%绘制双 Y 轴图 形.xlabel(&#39;t&#39;) axes(haxes(1)) ylabel(&#39;Smeilog Plot&#39;) axes(haxes(2)) ylabel(&#39;Linear Plot&#39;) set(hline2,&#39;LineStyle&#39;,&#39;--&#39;) 实验结果如下:%标注右边的 y 轴. %设定第二条线的线型为双划线. %标注左边的 y 轴.图 5-1 双 Y 轴实验步骤1.运行 MATLAB,打开 File→New→M-file,新建 M 文件。 2.将程序输入到 M 文件中。 3.保存并运行程序。参考文献: 参考文献?65? [1]王家文,曹宇.MATLAB6.5 图形图像处理.北京:国防工业出版社,2004. [2]郝文化,田蕾,董秀芳.MATLAB 图形图像处理应用教程.北京:中国水利水电出 版社,2003. [3]徐明远,邵玉斌.MATLAB 仿真在通信和电子工程中的应用.西安电子科技大学出 版社,2005.实验六 帧动画实验目的1.了解快速傅里叶变换。 2.熟悉帧动画的创建。实验原理快速傅里叶变换(FFT)是离散傅里叶变换(DFT)的快速算法。它的基本 原理是将一个变换分解为两个变换的乘积,并利用三角函数的周期性质,将原 先的变换公式重新组合为新的公式,从而把运算次数减少到 Nlog2N 的量级(程 佩青,2003) 。在 MATLAB 中,创建帧动画分为以下三步: 1.调用 moviein 函数对内存进行初始化,创建一个足够大的画面矩阵 M, 使之容纳 n 帧图形。 2. 调用 getframe 函数生成每个帧。 该函数返回一个列向量, 利用这个向量, 就可以创建一个帧动画矩阵。 3.调用 movie 函数按照指定的速度和次数运行该帧动画(王家文,曹宇, 2004) 。实验方法与内容?66? 1.主要指令 . 一维快速傅里叶变换函数 fft 调用格式如下: Y = fft(X) Y = fft(X,n) Y = fft(X) 返回向量 X 的离散傅里叶变换。若 X 为矩阵,fft 函数返 回矩阵每列的傅里叶变换;若 X 是多维数组,fft 函数计算第一个非单元素 的维。 Y = fft(X,n) 返回 n 点傅里叶变换。若 length(X)小于 n,X 将被在末 尾添加 0 到 n 长;若 length(X)大于 n,x 按顺序在顶端被截断。当 X 为矩 阵时,矩阵的每列都被调整成同形式。fftshift 函数――将傅里叶变换的零频率部分移到频谱的中间。其调用 格式如下: Y = fttshift(X) Y = fttshift(X) 把 ftt 函数、ftt2 函数和 fttn 函数输出的结果的零频率 部分移到数组的中间,有利于观察傅里叶变换频谱中间零频率部分。对于 向量,fttshift(X)把 X 左右部分交换;对于矩阵,fttshift(X)把 X 的一、三 象限和二、 四象限交换; 对于高维数组, fttshift(X)在每维交换 X 的半空间。moviein ―― 调用该函数可对内存进行初始化,创建一个足够大的 画面矩阵 M(Frame matrix) ,使之容纳 n 帧图形。其调用格式如下: M = moviein(n) M = moviein(n,h) M = moviein(n,h,rect) getframe ―― 调用该函数生成每个帧。该函数返回一个列向量,利 用这个向量创建一个帧动画矩阵。其调用格式如下:?67? F = getframe F = getframe(h)根据当前 axis 生成一个帧。 从指定的对象 h 生成一帧。 从指定对象矩形区域生成一帧。F = getframe(h,rect)[X,Map] = getframe(…)(王家文,曹宇,2004) 2.实验内容 . 程序 帧动画(徐明远,邵玉斌,2005) for u=2:2:222 m=2048;n=2046-u;%for 循环语句. %赋值予 m,u. %生成矩阵.y=[zeros(1,n/2) ones(1,(m-(n))) zeros(1,n/2)]; s=fft(y,2048); b=moviein(111);帧图形.%快速傅里叶变换. %调用 moviein 函数,创建画面矩阵容纳 nsubplot(3,1,1);%在划分为 3*1 块矩阵区域的当前窗口的 第一块区创建新坐标轴.t=1:2048; plot(t,y) xlabel(&#39;t&#39;) ylabel(&#39;y&#39;) axis([0 2048 -.2 1.2]); subplot(3,1,2); s1=fftshift(s);%调用 fftshift 函数,可将傅里叶变换的零频 率部分移到频谱的中间.w=[-]; plot(w,abs(s1),&#39;r&#39;) axis([- -20 1.1*u]) subplot(3,1,3);?68?%绘制 abs(s1),并设定线的颜色. semilogy(w,abs(s1)) axis([-e-3 3e2]) b(:,u)= End 实验结果如下:%在 y 对数比例坐标里绘制图形.%调用 getframe 函数生成每个帧.图 6-1 帧动画实验步骤1.运行 MATLAB,打开 File→New→M-file,新建 M 文件。 2.将程序输入到 M 文件中。 3.保存并运行程序。参考文献: 参考文献[1]程佩青.数字信号处理教程.北京:清华大学出版社,2003. [2]韩利竹,王华.MATLAB 电子仿真与应用.北京:国防工业出版社,2003. [3]王家文,曹宇.MATLAB6.5 图形图像处理.北京:国防工业出版社,2004.?69? [4]徐明远,邵玉斌.MATLAB 仿真在通信和电子工程中的应用.西安电子科技大学出 版社,2005.实验七 平面几何学实验目的掌握平面几何中直线、圆、椭圆和双曲线的绘制。实验内容及方法1.实验方程 . 直线方程: y = ax + b 圆方程: 椭圆方程: x2 + y2 = 1 x2 y2 + =1 a2 b21 x双曲线方程: y = 2.实验内容 . 程序 1 直线a=1; b=2; x=1:1:10; y = x.*a + plot(x,y) grid xlabel(&#39;x&#39;) ylabel(&#39;y&#39;) axis([0 10 0 10])或y=?1 x%直线方程 y=ax+b.?70? 实验结果如下:图 7-1 直线程序 2 圆 a=-3;b=4; r=2; x=(a-r):0.01:(a+r); y1=-sqrt(r.^2-(x-a).^2)+b; y2=sqrt(r.^2-(x-a).^2)+b; plot(x,y1,&#39;b&#39;,x,y2,&#39;b&#39;); grid xlabel(&#39;x&#39;) ylabel(&#39;y&#39;) axis([-6 6 -6 6]) axis square 实验结果如下:% %a,b 分别为圆坐标平移后的坐标值. %r 为圆的半径. %设置 x 的范围.?71? 图 7-2 圆程序 3 椭圆 a=4;b=3; X=1;Y=1; x=(X-a):0.001:(X+a); y1=-(b/a)*sqrt(a^2-(x-X).^2)+Y; y2= (b/a)*sqrt(a^2-(x-X).^2)+Y; plot(x,y1,&#39;b&#39;,x,y2,&#39;b&#39;); axis([-6 6 -6 6]) axis square grid xlabel(&#39;x&#39;) ylabel(&#39;y&#39;) 实验结果如下:?72?% a,b 分别为椭圆的长半径,短半径 % X,Y 分别为椭圆坐标平移后的坐标值. %设定 x 的取值范围. 图 7-3 椭圆程序 4 双曲线 figure(1) a=3;b=5;度. % a,b 分别为双曲线的实半轴,虚半轴的长y=-10:0.0001:10; x1=-(a/b)*sqrt(b^2+y.^2); x2= (a/b)*sqrt(b^2+y.^2); plot(x1,y,&#39;b&#39;,x2,y,&#39;b&#39;); grid title(&#39;双曲线&#39;) xlabel(&#39;x&#39;) ylabel(&#39;y&#39;) figure(2) a=3;b=5;?73?% a,b 分别为双曲线的实半轴,虚半轴的 长度.x=-15:0.0001:15; y1=-(a/b)*sqrt(b^2+x.^2); y2= (a/b)*sqrt(b^2+x.^2); plot(x,y1,&#39;b&#39;,x,y2,&#39;b&#39;); grid title(&#39;双曲线&#39;) xlabel(&#39;x&#39;) ylabel(&#39;y&#39;) 实验结果如下:图 7-4 双曲线 1?74? 图 7-5 双曲线 2实验步骤1.运行 MATLAB,打开 File→New→M-file,新建 M 文件。 2.将程序 1 输入到 M 文件中,保存并运行。 3.将程序 2 输入到 M 文件中,保存并运行。 4.将程序 3 输入到 M 文件中,保存并运行。参考文献: 参考文献[1]徐明远,邵玉斌.MATLAB 仿真在通信和电子工程中的应用.西安电子科技大学出 版社,2005. [2]王家文,曹宇.MATLAB6.5 图形图像处理.北京:国防工业出版社,2004.?75?
实验9 MATLAB应用 8页 1下载券 第9章MATLAB实验部分 65页 免费 MATLAB实验编程...Matlab实验1-9 暂无评价 21页 1下载券 MATLAB实验指导书2009.9... 76页 1...MATLAB实验指导书 76页 1财富值 MATLAB实验指导书加程序 20页 免费 ...语言及其在电子信息工程中的应用 及其在电子信息工程中的应用》 《Matlab 语言及其...MATLAB实验指导书2012_信息与通信_工程科技_专业资料。实验及课后上机作业 报告 ...4i? ?6 9 3? ?2 4 1? 8.计算 a ? ? 与b ? ? ? ? 的数组乘积...自动控制原理MATLAB仿真实验指导书_电子/电路_工程科技...10uf 其对应的模拟电路及 SIMULINK 图形如图 1-8 ...9 3 xlabel(&#39;Real Axis&#39;),ylabel(&#39;Imaginary Axis...执行以下命令 &&m1 =[16 2 3 13 ; 5 11 10 8 ; 9 7 6 12 ; 4 ...MATLAB实验指导书(附答案... 35页 1下载券 MATLAB全部实验及答案 27页 4下载...MATLAB实验指导书 25页 免费 MATLAB实验指导书 76页 1财富值 Matlab...39 1 实验一 matlab 集成环境使用与运算基础 集成环境使用与运算基础 一、实验...一实验题目:实验八 二实验原理 音频频谱分析仪设计与实现 MATLAB 是一个数据分析和处理功能十分强大的工程实用软件,其数据采集工具箱为 实现数据的输入和输出提供了...江西理工大学 《MATLAB 语言 B》课程实验指导书 主审人:蔡改贫 主撰人:肖定华...e2 ? ? abc ,其中a=3.5,b=5,c=-9.8 tan(b ? c) ? a (3) y=2...matlab上机实验指导书(3)_数学_自然科学_专业资料。zzff《MATLAB 软件与程序设计...{9,10} disp(&#39;A&#39;); case{8} disp(&#39;B&#39;); case{7} disp(&#39;C&#39;); ...MATLAB实验指导书_理学_高等教育_教育专区。MATLAB 实验指导书 前言 MATLAB 程序...MATLAB 书写格式为 A=[1 2 3 ;4 5 6 ;7 8 9] 在 MATLAB 中运行如下...
All rights reserved Powered by
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。

我要回帖

更多关于 复数矩阵 的文章

 

随机推荐