MATLAB基础编程入门.ppt

上传人:xiao****1972 文档编号:6279600 上传时间:2020-02-21 格式:PPT 页数:129 大小:4.66MB
返回 下载 相关 举报
MATLAB基础编程入门.ppt_第1页
第1页 / 共129页
MATLAB基础编程入门.ppt_第2页
第2页 / 共129页
MATLAB基础编程入门.ppt_第3页
第3页 / 共129页
点击查看更多>>
资源描述
MATLAB基础编程入门 目录 第1章MATLAB简介第2章MATLAB基本语法2 1变量及其赋值2 2矩阵的初等运算2 3元素群运算2 4逻辑判断及流程控制2 5基本绘图方法2 6M文件及程序调试第3章MATLAB在电路中的应用3 1电阻电路3 2动态电路3 3正弦稳态电路3 4频率响应3 5二端口电路 第一章MATLAB简介MATLAB MATrixLABoratory 即矩阵实验室 是MathWork公司推出的一套高效率的数值计算和可视化软件 MATLAB是当今科学界最具影响力 也是最具活力的软件 它起源于矩阵运算 并已经发展成一种高度集成的计算机语言 它提供了强大的科学运算 灵活的程序设计流程 高质量的图形可视化与界面设计 便捷的与其他程序和语言接口的功能 MATLAB语言有如下优点 1 编程简单使用方便MATLAB的基本数据单元是既不需要指定维数 也不需要说明数据类型的矩阵 而且数学表达式和运算规则与通常的习惯相同 因此 在MATLAB环境下 数组的操作与数的操作一样简单 MATLAB的矩阵和向量操作功能是其他语言无法比拟的 2 函数库可任意扩充由于MATLAB语言库函数与用户文件的形式相同 所以用户文件可以像库函数一样随意调用 所以用户可根据自己的需要任意扩充函数库 3 语言简单内涵丰富MATLAB语言中最重要的成分是函数 其一般形式为 Function a b c fun d e f fun是自定义的函数名 只要不与库函数名相重 并且符合字符串的书写规则即可 这里的函数既可以是数学上的函数 也可以是程序块或子程序 内涵十分丰富 每个函数建立一个同名的M文件 如上述函数的文件名为fun m 这种文件简单 短小 高效 并且便于调试 4 简便的绘图功能MATLAB具有二维和三维绘图功能 使用方法十分简便 而且用户可以根据需要在坐标图上加标题 坐标轴标记 文本注释及栅格等 也可一指定图线形式 如实线 虚线等 和颜色 也可以在同一张图上画不同函数的曲线 对于曲面图还可以画出等高线 5 丰富的工具箱由于MATLAB的开放性 许多领域的专家都为MATLAB编写了各种程序工具箱 这些工具箱提供了用户在特别应用领域所需的许多函数 这使得用户不必花大量的时间编写程序就可以直接调用这些函数 达到事半功倍的效果 第二章MATLAB基本语法 2 1变量及其赋值 1 标识符与数标识符是标识变量名 常量名 函数名和文件名的字符串的总称 标识符可以是英文字母 数字和下划线等符号 标识符第1个字符必须是英文字母 MATLAB对大 小写敏感 MATLAB只有一种数据格式 双精度 即64位 二进制 对应于十进制16位有效数和 308次幂 2 矩阵及其元素的赋值变量 表达式 数 a 123 456 789 x 1 3sqrt 3 1 2 3 5 4 x 5 abs x 1 a 4 3 6 5a 1 00002 00003 00004 00005 00006 00007 00008 00009 0000006 5000 元素之间用逗号 空格分开 不同行以分号隔开 语句结尾用回车或逗号 会显示结果 如果不想显示结果 用分号 元素用 中的数字 下标 来注明 一维用一个下标 二维用两个下标 逗号分开 a 5 5 4 3 b a 2 4 1 3 a 2 4 5 a 7 如果赋值元素的下标超过原来矩阵的大小 矩阵的行列会自动扩展 全行赋值 用冒号 提取交点元素 抽取某行元素用空矩阵 3 复数 c 3 5 2iz 1 2i 3 4i 5 6i 7 8i z 1 3 5 7 2 4 6 8 if sqrt 1 2i f f 复数的虚数部分用i或j表示 如曾用过i j作变量 用cleari j复数矩阵有两种赋值方法 将其元素逐个赋予复数 将其实部和虚部矩阵分别赋值 w z 共轭转置 u conj z 共轭 v conj z 转置 Z 复数矩阵共轭转置 行列互换 各元素的虚部反号 函数conj z 共轭 只把各元素的虚部反号 转置conj z 行列互换 z 1 0000 2 0000i3 0000 4 0000i5 0000 6 0000i7 0000 8 0000iw z 共轭转置 w 1 0000 2 0000i5 0000 6 0000i3 0000 4 0000i7 0000 8 0000iu conj z 共轭 u 1 0000 2 0000i3 0000 4 0000i5 0000 6 0000i7 0000 8 0000iv conj z 转置 v 1 0000 2 0000i5 0000 6 0000i3 0000 4 0000i7 0000 8 0000i 4 变量检查 whowhosinfNaN 检查工作空间中的变量 检查变量的详细特征无穷大1 0 非数 NotaNumber 0 0inf inf0 inf 系统不停止运算 结果仍为inf或NaN 5 基本赋值矩阵f1 ones 3 2 f2 zeros 2 3 f3 magic 3 f4 eye 2 f5 linspace 0 1 5 fb1 f1 f3 f4 f2 fb2 fb1 f5 全1矩阵全0矩阵魔方矩阵 元素由1到nn的自然数组成 每行 每列及两对角线上的元素之和均等于 n3 n 2 单位矩阵是n n阶的方阵 对角线上元素为1 线性分割函数大矩阵可由小矩阵组成 其行列数必须正确 恰好填满全部元素 f1 111111全1矩阵f3 816魔方矩阵357492线性分割函数f5 00 25000 50000 75001 0000大矩阵可由小矩阵组成fb2 1 00001 00008 00001 00006 00001 00001 00003 00005 00007 00001 00001 00004 00009 00002 00001 0000000001 000000000 25000 50000 75001 0000 f2 000全0矩阵000f4 10单位矩阵01fb1 1181611357114921000001000fb1 f1 f3 f4 f2 fb2 fb1 f5 2 2矩阵的初等运算 1 矩阵的加减乘法i 加 减法 相加减的两矩阵阶数必须相同 对应元素相加减 n m size fb2 x 101 y x 1y 2 10 语句size检查矩阵阶数 两矩阵相加 阶数必须相同 两相加减的矩阵中有一个是标量时 MATLAB将标量扩展成同等元素矩阵 与另一矩阵相加减 pi x标量与矩阵相乘 不检查阶数 标量乘以矩阵的每一个元素 x 101 X与y内阶数不同 将y转置y 读作x左乘y y 2 10 x y ans 2ans 20 2y xX右乘y 10 1000 eye 3 a左 右乘结果不同 只有单位矩阵例外 a eye 3 单位矩阵乘以矩阵A 左 右乘结果仍等于该矩阵 a 123ans 123ans 123456456456789789789 ii 矩阵乘法 矩阵An p阶与矩阵Bp m阶的乘积C是n m阶矩阵 P是A阵的列数 B阵的行数 称为两个相乘矩阵的内阶数 两矩阵相乘的必要条件是内阶数相等 C i j kA i k B k j 值为A阵第i行和B阵第j列对应元素乘积的和 2 矩阵的除法及线性方程组的解 a 123456789AV IV A 1V inv a inv a aV 1 0e 016 0 45040 9007 0 45040 9007 1 80140 9007 0 45040 9007 0 4504 n n阶方阵A和同阶的方阵V相乘 得出n阶单位矩阵I I为eye n V是A的逆阵 V存在条件 A的行列式不等于0 det A 0V A 1MATLAB内部函数inv 得出A的逆阵V D X Binv D D X inv D Binv D D II X XX inv D B D BX D BX B inv D B D D与B行数相等两端同时左乘以inv D 逆阵单位阵D B为D左除BX D B 左除时阶数检查条件 两矩阵的行数必须相等 未知矩阵在左 D的逆阵右乘以B 记作 D右除 右除时阶数检查条件 两矩阵的列数必须相等 a 123 3 54 789 x x1 x2 x3 b 2 0 2 ax bx a ba左除b 方程组X1 2X2 3X3 23X1 5X2 4X3 07X1 8X2 9X3 2可以表示为ax b a 123 456 b 240 135 d 147 852 360 运算 a bd aa b Errorusing Innermatrixdimensionsmustagree d a Errorusing Matrixdimensionsmustagree a bans 6162092325123030a b ans 10222849d a ans 0 037000 51851 0000 0 14810a dans 0 40740 07410 00000 74070 40740 0000 解线性方程组Ax B6x1 3x2 4x3 3 2x1 5x2 7x3 48x1 4x2 3x3 7A 634 257 8 4 3 B 3 4 7 X A B A 634 2578 4 3B 3 4 7X 0 60007 0000 5 4000 3 矩阵的乘方和幂次函数MATLAB的运算符 和 指数函数expm 对数函数logm和开方函数sqrtm是对矩阵进行的 即把矩阵作为一个整体来运算 除此以外 其他MATLAB函数都是对矩阵中的元素分别进行 英文直译为数组运算 ArrayOperations 译为 元素群运算 S 12 34 D 147 852 360 D 22 DD S 幂次运算 矩阵为底数 指数是标量 同矩阵乘法一样 为保内阶数相同 底数的矩阵必须是方阵 矩阵是指数 底数是标量 矩阵也必须是方阵 底数和指数不能同时为矩阵 按矩阵运算 等于D D按元素群运算非法运算 U1 sqrtm S U2 sqrt S V1 expm S V2 exp S Logm D Log D 按矩阵运算 求平方根 可以用U1 U1 S验证按元素群运算 U2 U2 S U2 U2 S按矩阵运算按元素群运算按矩阵运算按元素群运算 S 1234D 147852360D 2ans 5466155469665142332 Dans 2161282563248641 D S Errorusing Atleastoneoperandmustbescalar V1 expm S V1 51 969074 7366112 1048164 0738V2 exp S V2 2 71837 389120 085554 5982 U1 sqrtm S U1 0 5537 0 4644i0 8070 0 2124i1 2104 0 3186i1 7641 0 1458iU2 sqrt S U2 1 00001 41421 73212 0000 Logm D ans 1 2447 0 91702 82551 60442 5760 1 9132 0 75391 13721 6724log D Warning Logofzero ans 01 38631 94592 07941 60940 69311 09861 7918 Inf 4 矩阵结构形式的提取与变换 A 8160 3571 4922 B1 fliplr A B2 flipud A B3 reshape A 2 6 提取矩阵中某些特殊结构的元素 组成新的矩阵 改变矩阵结构 fliplr矩阵左右翻转flipud矩阵上下翻转reshape阶数重组 元素总数不变 B4 rot90 A B5 diag A B6 tril A B7 triu A B8 A rot90矩阵整体反时针旋转90度diag提取或建立对角阵tril取矩阵的左下三角部分triu取矩阵的右上三角部分将元素按列取出排成一列 A 816035714922B1 fliplr A B1 061817532294B2 flipud A B2 492235718160B3 reshape A 2 6 B3 845621319702 B4 rot90 A B4 012672159834B5 diag A B5 852B6 tril A B6 800035004920B7 triu A B7 816005710022B8 A B8 834159672012 2 3元素群运算 1 数组及其赋值数组是单行或单列的矩阵 一个N阶的数组可以表述为一个N组向量 t 0 0 02 1 z 10 3 5k 1 6 用两个冒号组成等增量语句格式 t 初值 增量 终值 增量也可以设为负值 此时初值要比终值大增量为1时 增量值可以省略 t 00 02000 04000 06000 08000 10000 12000 14000 16000 18000 20000 22000 24000 26000 28000 30000 32000 34000 36000 38000 40000 42000 44000 46000 48000 50000 52000 54000 56000 58000 60000 62000 64000 66000 68000 70000 72000 74000 76000 78000 80000 82000 84000 86000 88000 90000 92000 94000 96000 98001 0000 z 10741 2 5 k 123456 theta 00 78541 57082 35623 14163 92704 71245 49786 2832 theta linspace 0 2 pi 9 w logspace 0 1 11 用linspace函数格式 linspace 初值 终值 点数 logspace函数 自变量按等比级数赋值 从10的0次幂到1次幂之间按幂等分为11点 数是等比的 w 1 00001 25891 58491 99532 51193 16233 98115 01196 30967 943310 0000 2 元素群的四则运算和幂次运算元素群的运算是矩阵中所有元素按单个元素运算 运算符前加 号 表示元素群运算 元素群的运算的两个矩阵必须是同阶的 标量会自动扩展为同阶矩阵参与运算 x 1 2 3 y 4 5 6 z x yz x yz x yz x 2z 2 xy z 41018x y不能成立z 4 02 52 0元素群没有左除右除之分z 132729x y能成立吗 z 149x 2能成立吗 z 2481632642 xy 能成立吗 d 147 852 360 d 3d 33 d3 d 元素群的幂次运算是各个元素自行作幂次运算 对每个元素的这种运算和对标量运算一样 但是 不能将元素群运算称为数组运算 区别左边运算 3 元素群的函数除矩阵运算的乘 右除 左除 幂指数 sqrtm expm logm函数外 基本函数库中的常用函数都可用于元素群运算 自变量可以是任意阶的矩阵 基本函数库 elfun x 0 0 1 pi 4 x 00 10000 20000 30000 40000 50000 60000 7000disp 显示xsin x cos x tan x disp x sin x cos x tan x 显示xsin x cos x tan x 001 000000 10000 09980 99500 10030 20000 19870 98010 20270 30000 29550 95530 30930 40000 38940 92110 42280 50000 47940 87760 54630 60000 56460 82530 68410 70000 64420 76480 8423 2 4逻辑判断及流程控制1 关系运算 a 2 2 4a 2 2 4 a 33 a 3 4 等于 a 1a 1小于 a 1a 0小于等于 a 1a 0大于 a 1a 0 a 4 3 a 3 4 a 3 4 A magic 6 rem A 3 p rem A 3 0 lp find p 大于等于 a 1a 0不等于 a 1魔方矩阵 每行 每列 对角线的元素之和 n3 n 2A整除3 求余数余数为0 是真 即整除找出p矩阵中不为零元素的序号 矩阵元素是按列排序号的 A magic 6 A 351626192433272123253192222720828331710153053412141643629131811 rem A 3 ans 210210021021102102210210021021102102 p rem A 3 0 p 001001100100010010001001100100010010 lp find p lp 259121316202327303134 矩阵元素的序号排法 n m阵中下标为 j k 的元素序号为l k 1 n j 数学及逻辑运算符号 逻辑字符检查 位运算 集合运算 2 逻辑运算 A 0011 B 0101 A BA B Axor A B G magic 6 rem G 3 将逻辑运算用于元素群 得出同阶的0 1矩阵 与或非异或G整除3 求余数 p rem G 3 0 u p pall p all u any p 可以按行 按列判断一群元素的逻辑值 两个对元素群运算的函数 列中有一个元素为0 即为0列中元素全为1 才为1列中有一个元素为1 即为1 A 0011B 0101A Bans 0001A Bans 0111 Aans 1100 xor A B ans 0110 G magic 6 G 351626192433272123253192222720828331710153053412141643629131811rem G 3 ans 210210021021102102210210021021102102 rem G 3 ans 210210021021102102210210021021102102p rem G 3 0 p 001001100100010010001001100100010010 u p pu 111111111111111111111111111111111111 all p all u any p ans 000000ans 111111ans 111111 3 流程控制语句 1 if语句if 表达式 语句组A endif 表达式1 语句组A else语句组B endif 表达式1 语句组A elseif 表达式2 语句组B else语句组C end n input n ifrem n 2 0a even elsea odd endn 7a odd n 8a evenn a oddn input n ifisempty n 1a empty elseifrem n 2 0a even elsea odd endn a empty 输入数n 判断奇偶性 如果用户没有键入数就回车 程序会判断为odd 修改为用户无输入时程序自动中止 2 while语句while 表达式 语句组A end y 1 while1 y 1 y1 yy y 2 end y1y1 2 2204e 016 求MATLAB相对精度 y不断减小 直至MATLAB分不出1 y与1的差别为止 x 1 whilex inf x1 x x 1 1 x end x1x1 1 7837e 308 3 for语句fork 初值 增量 终值语句组A end将语句组A反复执行N次 每次执行时程序中的k值不同 N 1 终值 初值 增量 用for语句求三角函数表forx 0 0 1 pi 4disp x sin x cos x tan x end运行结果xsin x cos x tan x 00101 10839 84041195 12011499 149401 5209 1052295 301374 18453 10409 13841647 1724275 8892 5368 9452882 31291777 42031 2501 10451699 1936820 15013 51153 2042430 521979 14317 10947 1470992 1297486 577 列出构成Hilbert矩阵的程序formatrat显示形式是分数近似n input n formatratfori 1 n forj 1 n h i j 1 i j 1 end end h n 5h 11 21 31 41 51 21 31 41 51 61 31 41 51 61 71 41 51 61 71 81 51 61 71 81 9 增加可读性formatrat n input n fori 1 nforj 1 n h i j 1 i j 1 endendh 在if for while与表达式之间留空格 在表达式与语句组之间必须用空格或逗号分隔 必须用逗号或分号分隔end和else break是中止循环的命令 在多重循环中 break只能使程序跳出包含它的最内部的那个循环 4 switch语句 switch case otherwiseswitch表达式 标量或字符串 case值1语句组ACase值2语句组B Otherwise语句组Nend 当表达式的值 或字符串 与某case语句中的值 或字符串 相同时 它就执行该case语句后的语句组 然后跳到终点的end case语句可以有N 1个 如果没有任何一个case值能与表达式值相符 则执行otherwise后面的语句组N n input n switchmod n 2 case1 a 奇 case0 a 偶 otherwise a 空 endn 5a 奇n input n switchrem n 2 case1 a 奇 case0 a 偶 otherwise a 空 endn 8a 偶 判断输入数n的奇 偶 空的程序mod x m x整除m取正余数 rem a b a整除b 求余数n 负数n 5a 奇n 8a 偶 2 5基本绘图方法1 直角坐标中的两维曲线 1 plot y 输入一个数组的情况 2 Plot x y 输入两个数组的情况 2 线型 点型和颜色 3 多条曲线的绘制有四种方法在一张图上显示多条曲线 1 用plot t y1 y2 命令 2 用hold命令 3 在plot后使用多输入变量 2 图用hold命令 3 图在plot后使用多输入变量 4 用plotyy命令 4 屏幕控制和其他二维绘图 1 图形屏幕控制命令图形屏幕可以开 关 可以开几个图形窗 可以在一个图形窗内华几幅分图 每幅分图可以用不同坐标 通用图形函数 graphics h subplot 2 2 1 stem t y title stem t y subplot 2 2 2 stairs t y title stairs t y subplot 2 2 3 bar t y title bar t y subplot 2 2 4 fill t y r title fill t y r subplot 1 1 1 loglogsemilogxsemilogypolar theta rho 取消子图绘出以log10 log10为坐标刻度的对数图使用半对数刻度绘图 x轴为log10刻度 y轴为线性刻度 使用半对数刻度绘图 y轴为log10刻度 x轴为线性刻度 极坐标绘图 角度theta为一个坐标 单位是弧度 另一坐标是矢径rho 二维图形函数库 3 虚数的绘图 4 坐标比例和尺寸的设定 axis命令 v axisaxis equal axis square v 0101 5 三维曲线和曲面 1 空间曲线绘制 plot3 plot3 x y z s z 0 0 1 4 pi x cos z y sin z plot3 x y z r 绘制空间曲线 s是线型颜色符 2 空间曲面的绘制meshsurf 直线 连接相邻的点构成三维曲面小平面 连接相邻的点构成三维曲面 函数sinc r sin r rx 8 0 5 8 y x X ones size y x Y y ones size x R sqrt X X Y Y z sin R R mesh z pause r是X Y平面上的向径 绘制sin r r函数的立体图 X Y方向各有33个样本点 生成一维自变量数组 size多维矩阵的各维长度 共建立33 33 1089个网格点的坐标矩阵X和Y 形成33 33网格的矩阵 R表示数据点到原点的距离 生成因变量 画三维曲面 R sqrt X X Y Y eps z sin R R figure 2 mesh z R abs X abs Y eps z1 sin R R figure 3 surf z1 在R 0 原点 处出现0 0运算 得NaN结果 eps浮点数相对精度 消除NaN abs X abs Y 称为一范数 1图是mesh图 原点处出现0 0运算 得NaN结果 2图是mesh图 eps浮点数相对精度 消除NaN 3图是surf图 abs X abs Y 称为一范数 3 其他三维绘图命令 subplot 2 2 1 R sqrt X 2 Y Y z sin R R meshc z pausetitle meshc z shadingflat shadingflat Subplot 2 2 2 R sqrt X 2 Y Y eps z sin R R mesh z pausetitle meshz z shadinginterp shadinginterp subplot 2 2 3 R abs X abs Y eps z1 sin R R surfc z1 pausetitle surfc z1 shadingflat shadingflat colormp gray subplot 2 2 4 surfc z1 view 20 0 rotate3dtitle surfc z1 view 20 0 meshc z surfc z1 加入了等高线绘制命令contour3 6 特殊图形和动画 特殊图形和动画 graphics u 7 彩色 光照和图像 2 6M文件 M函数及程序调试M文件是文本文件 扩展名 m example m 可以用任何编辑器来建立 可直接阅读 MATLAB程序可直接调用M文件并执行 M文件分为两种 一种是主程序 为用户解决特定的问题编制的 一种是子程序 函数文件 必须由其他M文件来调用 函数文件可以递归调用 自己调用自己 MATLAB软件的大部分功能是来自其建立的函数集 1 主程序文件主程序文件格式特征 1 用clear closeall等语句开始 清除原有的变量和图形 注释行以 号开始 增加可读性 MATLAB不执行 号后面的任何内容 在键入 help文件名example m 时 屏幕会显示以 号起始的行的内容 注释可以是汉字的 2 程序的主体全局变量 在子程序中和主程序中共用的变量 应在程序的起始部分注明 全局变量语句 global变量名1变量名2 程序必须用半角英文字母和符号编制 包括标点符号 只有 号后面的注释可以用中文 要注意流程控制语句的缩进及与end的对应关系 选项可以自动对程序进行缩进排版 元素之间用逗号 空格分开 不同行以分号隔开 语句结尾用回车或逗号 会显示结果 如果不想显示结果 用分号 3 M文件的文件名 路径名不能用中文 要按MATLAB的标识符编制 因为M文件也就是MATLAB的调用命令 在MATLAB的命令窗键入程序的M文件名后 系统就开始执行M文件中的程序 例1 列出一个求fibonnaci数的程序 它是一个数列 从 1 1 开始 由数列的最后两个元素之和生成新的元素 依次递推 计算fibonnaci数的M文件clear closeallN input 输入最大数值范围N f 1 1 i 1 变量的初始化whilef i f i 1 N 循环条件检验f i 2 f i 1 f i i i 1 求fibonnaci数的算式endf plot f 显示和绘图输入最大数值范围N 20N 20f 11235813将程序以文件名fibon m存入一MATLAB搜索目录下 在MATLAB命令窗中键入fibon 即可执行 例2 求素数的程序 只能被自身和1除净的数 求素数 primenumber 的程序clear closeallN input N x 2 N foru 2 sqrt N n find rem x u 0end xN 44x 235711131719232931374143 人机交互命令 echoon off 在执行M文件每行程序前先显示其内容 pause n 程序执行到此 暂停n秒 再继续 keyboard程序执行到此暂停 在屏幕上显示字符K 用户可以在命令窗进行任何操作 键入字符串return 恢复运行原来的程序 input 提示符 程序执行到此暂停 屏幕显示引号中的字符串 要求用户输入数据 数据输入后 程序继续运行 c control c 强行停止程序运行的命令 menu用来产生人际交互的备选择菜单的命令 2 函数文件函数文件是用来定义子程序的 与主程序文件的主要区别有3点 1 由function起头 后面跟的函数名 函数名必须与文件名相同 2 有输入输出变元 变量 可以进行变量传递 3 除非用global声明 程序中的变量均为局部变量 不保存在工作空间中 例3 函数文件mean mfunctiony mean x 文件的第一条语句定义了函数名 输入变元及输出变元 这条语句可以区分程序文件和函数文件 输入变元 输出变元可以有若干个 必须在第一条语句中列出 MEAN求平均值 对于向量 mean x 返回该向量x中各元素的平均值 对于矩阵 mean x 是一个包含各列元素平均值的行向量 m n size x 变量m n和y都是函数mean的局部变量 当mean文件执行完毕 这些变量值会自动消失 不保存在工作空间中 如果在执行该文件前 工作空间中已有同名的变量 系统会把两者看作各自无关的变量 如果希望将两者看作同一变量 则必须在主程序和子程序中都加入global语句 对此共同变量进行声明 Ifm 1M n end 处理单行向量y sum x m z magic 7 mean z 对输入变元x赋值 应把x代换成主程序中的已知变量 假如它是一个已知向量或矩阵Z 可以写成mean Z 该变量Z通过变元替换传递给mean函数后 在子程序内 它就变成了局部变量x z 30394811019283847791827294668172635375141625343645131524334244421233241433122231404921120ans 25252525252525 例4 多输入变量函数logspace 用于生成等比分割的数组 functiony logspace d1 d2 n LOGSPACE对数均分数组 LOGSPACE d1 d2 在10d1与10d2之间生成长度为50的对数均分数组 如果d2为pi 则这些点在10d1和pi之间 LOGSPACE d1 d2 n 生成的数组长度为n n的默认值为50ifnargin 2n 50 end 输入变元分析及n的默认值设置 nargin输入变元的数目ifd2 pid2 log10 pi end d2为pi时的设置y 10 d1 0 n 2 d2 d1 n 1 d2 将结果返回到输出变元特定变量nargin表示输入变元的数目 nargout表示输出变元数目的变量 MATLAB常常根据nargin和nargout的数目不同而调用不同的程序段 从而体现它的智能作用 调用logspace 1 10 50 要给出d1 d2 n的值 自学 程序调试主程序不需要专门的调试命令 需要用调试命令的主要是函数程序 因为函数程序出错停机时 变量不能保存 无现场记录 会给调试带来很大困难 解决方法 1 把某些分号改为逗号 使中间结果能显示在屏幕上 作为查错依据 2 在子程序中适当部位加keyboard命令 系统会暂停 等待用户键入命令 这是子程序的变量还存在于工作空间中 可以对它们进行检查 3 将函数文件的第一行加 号 成为程序文件 进行初步调试 第一行中的输入变元 可改用input或赋值语句来输入 调好后再改回函数文件 4 使用MATLAB提供的调试命令 调试命令较繁琐 不作介绍 2 7MATLAB的数据分析函数库 datafun函数库 基本的数据分析MATLAB的基本数据处理功能是按列向进行的 因此要求待处理的数据矩阵按列向分类 而行向则表示数据的不同样本 例如 10个学生的身高及3门课程分数列表如下 data 154498367 158998175 1551006886 145637596 145637596 141556575 155566485 147898777 1479654100 145607667 一些数据处理命令的结果 std 标准差 是指列中N个元素与该列平均值mean data 之差的平方和开方 Trapz 求积分 可以看成求和 梯形法求积分近似于求元素和 差别在于梯形法是把相邻两点数据的平均值作为数据点 10个数据只能产生9个数据点 相加以后比元素和少一组数据 把它乘以步长才真正表示了面积 其差额为半个首点和半个末点的数据和 即trapz data sum data 0 5 data 1 data N 在N很大时两者的误差很小 有些数据处理命令的结果不是一个标量而是一个列向量 为了节省篇幅 只取数据中的前5行 产生列结果的数据处理命令 第二章MATLAB在电路中的应用 5 1电阻电路 例1 电阻电路的计算已知 R1 2 R2 4 R3 12 R4 4 R5 12 R6 4 R7 2 求 1 如us 10V 求i3 u4 u7 2 如已知u4 6V 求us i3 u7 解 建模 用网孔法 列出网孔方程为 或直接列出数字方程 简写为A I B us 1 令us 10V 由可以得到问题 1 的解 可写成如下的矩阵形式 2 如已知u4 6V 求us i3 u7 由电路的线性性质 可令 根据问题 1 的结果和电路图可列出下式 可以通过下式求问题 2 的解 MATLAB程序q501 mclear closeall formatcompactR1 2 R2 4 R3 12 R4 4 R5 12 R6 4 R7 2 为给定元件赋值display 解问题 1 解问题 1 a11 R1 R2 R3 a12 R3 a13 0 将系数矩阵各元件赋值a21 R3 a22 R3 R4 R5 a23 R5 a31 0 a32 R5 a33 R5 R6 R7 b1 1 b2 0 b3 0 us input us 输入解 1 的已知条件A a11 a12 a13 a21 a22 a23 a31 a32 a33 列出系数矩阵AB b1 0 0 I A B us I ia ib ic ia I 1 ib I 2 ic I 3 i3 ia ib u4 R4 ib u7 R7 ic 解出所需变量display 解问题 2 利用电路的线性性质及问题1的解求解问题2u42 input 给定u42 k1 i3 us k2 u4 us k3 u7 us 由问题 1 得出待求量与us的比例系数us2 u42 k2 i32 k1 k2 u42 u72 k3 k2 u42 按比例方法求出所需变量 程序运行结果解问题 1 us 10VA 18 120 1228 120 1218i3 0 3704 u4 2 2222 u7 0 7407解问题 2 给定u42 6us2 27 0000 i32 1 0000 u72 2 例2 含受控源的电阻电路已知R1 R2 R3 4 R4 2 控制常数k1 0 5 k2 4 is 2A 求i1和i2 解 建模列出节点方程 控制变量i1 i2与节点电压ua ub的关系为 讲 将i1 i2作为未知量移至等号左端 写成矩阵形式为 令is 2A 解上式i1 i2 MATLABq502 mclear formatcompactR1 4 R2 4 R3 4 R4 2 设置元件参数is 2 k1 0 5 k2 4 按A X B is列写此电路的矩阵方程 其中X ua ub i1 i2 a11 1 R1 1 R2 a12 1 R2 a13 0 a14 k1 设置系数Aa21 1 R2 a22 1 R2 1 R3 1 R4 a23 k2 R3 a24 k1 a31 1 R2 a32 1 R2 a33 1 a34 0 a41 0 a42 1 R4 a43 0 a44 1 A a11 a12 a13 a14 a21 a22 a23 a24 a31 a32 a33 a34 a41 a42 a43 a44 B 1 0 0 0 设置系数BX A B is 解出Xi1 X 3 i2 X 4 显示要求的分量 5 2动态电路 例3 一阶动态电路 三要素公式 已知 R1 3 R2 12 R3 6 C 1F us 18V is 3A 在t 0时 开关S位于 1 电路已处于稳定状态 1 t 0时 开关S闭合到 2 求uc t iR2 t 并画出波形 2 若经10秒 开关S又复位到 1 求uc t iR2 t 并画出波形 解 建模这是一阶动态电路 可用三要素公式求解 1 求初始值uc 0 和iR 0 先求uc 0 在t 0 时 开关位于 1 电路已达到稳定 电容可看作开路 不难求得uc 0 12V 根据换路时电容电压不变的定律 得电容初始电压uc 0 uc 0 12V在t 0时 开关已闭合到 2 可求得非独立初始值 其次求稳定值 达到稳态时电容可看作开路 于是可得 时间常数 用三要素公式得 2 经10秒后 开关又闭合到 1 将t 10s代入 4 式即得电容电压的初始值为uc 10 uc 10 由电路图可见这时 保持不变 达到稳定时 这时 用三要素公式得 MATLABq5 4R1 3 us 18 is 3 R2 12 R3 6 C 1 给出原始数据 解问题 1 uc0 12 ir20 uc0 R2 ir30 uc0 R3 算出初值ir20及uc0ic0 is ir20 ir30 ir2f is R3 R2 R3 算出终值ir2f及ucfir3f is R2 R2 R3 ucf ir2f R2 icf 0 注意时间数组的设置 在t 0及10附近设两个点t 2 eps 0 eps 0 9 10 eps 10 eps 11 20 figure 1 plot t grid t 10 eps对应下标15uc 1 3 12 ir2 1 3 3 t 0时的值T R2 R3 R2 R3 C 求充电时间常数uc 4 14 ucf uc0 ucf exp t 4 14 T ir2 4 14 ir2f ir20 ir2f exp t 4 14 T 用三要素法求输出 解问题 2 uc 15 uc 14 ir2 15 is 求t 10 eps时的各初值ucf2 12 ir2f is 求uc和ir2在新区间终值ucf2和ir2fT2 R1 R3 R1 R3 C t 10 eps到t 20区间的时间常数 再用三要素法求输出uc 15 25 ucf2 uc 15 ucf2 exp t 15 25 t 15 T2 ir2 15 25 is figure 2 subplot 2 1 1 h1 plot t uc 绘uc图grid set h1 linewidth 2 加大线宽subplot 2 1 2 h2 plot t ir2 绘ir2图grid set h2 linewidth 2 5 3正弦稳态电路 例4 正弦稳态电路 运用戴维南定理已知c1 0 5F R2 R3 2 L4 1H Us t 10 10cos 2t Is t 5 5cos2t 求b d两点之间的电压U t 解 建模这是一个含三个频率分量的正弦稳态电路问题 可以按每个频率成分分别计算 再叠加起来 更好的方法是利用MATLAB的元素群计算特性 把多个频率分量及相应的电压 电流 阻抗等都看作多元素的行数组 每一元素对应一种频率分量的值 因为他们服从同样的方程 所以程序就特别简洁 讲 b d 1 先看对b d点产生的等效电压 令电流源开路 即Is 0 由电桥电路可得 其相应的等效内阻抗为 2 令 0 则电流源在b d间产生的电压为IsZeq 3 根据叠加原理 MATLAB程序q509 mclearformatcompactw eps 1 2 us 10 10 0 is 5 0 5 按频率依次设定输入信号数组z1 1 0 5 w j z4 1 w j 电抗分量是频率的函数 故自动成为数组z2 2 2 2 z3 2 2 2 对电抗分量也列写成常数数组uoc z2 z1 z2 z4 z3 z4 us 列出电路的复数方程zeq z3 z4 z3 z4 z1 z2 z1 z2 列出等效阻抗u is zeq uoc 求解disp wumphi 显示disp w abs u angle u 180 pi 程序运行结果wumphi0 000010 00000 00001 00003 8079113 19862 00007 9246 10 1755由此可以写出U t 的表达式 U t 10 3 8079cos t 113 1986 7 9246cos 2t 10 1755 5 4频率响应 例5 一阶低通电路的频率响应电路图是一阶RC低通电路 以为响应 求频率响应函数 画出其幅频响应 幅频特性 H j 和相频的响应 相频特性 解 建模 式中 c 1 RC为截止角频率 设无量纲频率 w c 0 0 2 0 4 4 画出幅频响应及相频的响应 clear formatcompactww 0 0 2 4 设定频率数组ww w wcH 1 1 j ww 求复频率响应figure 1 subplot 2 1 1 plot ww abs H 绘制幅频特性grid xlabel ww ylabel abs H subplot 2 1 2 semilogx ww angle H 绘制相频特性grid xlabel ww ylabel angle H figure 2 绘制对数频率特性subplot 2 1 1 semilogx ww 20 log10 abs H 纵坐标为分贝grid xlabel ww ylabel 分贝 subplot 2 1 2 semilogx ww angle H 绘制相频特性grid xlabel ww ylabel angle H 例6 复杂谐振电路的计算 已知 Rs 28 2k R1 2 R2 3 L1 0 75mH L2 0 25mH C 1000pF 求回路的通频带B及满足回路阻抗大于50k的频率范围 a 原电路图 b 等效电路电路图为一双电感并联电路 解 建模先把回路变换为一个等效单电感回路 把信号源的内阻Rs变为并接在该单电感回路上的等效内阻Rse 按照等效电路写出的方程 设m L1 L1 L2 则 其他支路的等效阻抗分别为 总阻抗是三个支路阻抗的并联其谐振曲线可按Ze的绝对值直接求得 MATLAB程序5 17 mR1 2 R2 3 L1 0 75e 3 L2 0 25e 3 C 1000e 12 Rs 28200 L L1 L2 R R1 R2 Rse Rs L L1 2 折算内阻f0 1 2 pi sqrt C L Q0 sqrt L C R R0 L C R 空载Q0值Re R0 Rse R0 Rse 折算内阻与回路电阻的并联Q Q0 Re R0 B f0 Q 实际Q值和通带s log10 f0 f logspace s 1 s 1 501 w 2 pi f 设定计算的频率范围及数组z1e R1 j w L z2e R2 1 j w C 等效单回路中两个电抗支路的阻抗ze 1 1 z1e 1 z2e 1 Rse 等效单回路中三个支路的并联阻抗subplot 2 1 1 loglog w abs ze grid 画对数幅频特性axis min w max w 0 9 min abs ze 1 1 max abs ze subplot 2 1 2 semilogx w angle ze 180 pi 画相频特性axis min w max w 100 100 gridfh w find abs 1 1 z1e 1 z2e 50000 2 pi 求幅频特性大于50kHz的频带fhmin min fh fhmax max fh 程序运行结果 谐振频率f0 1 5915e 005 空载品质因数Q0 200 等效信号源内阻Re 4 0085e 004 考虑内阻后的品质因数Q 40 0853 通频带B 3 9704e 003 fhmin 1 5770e 005 fhmax 1 6063e 005 5 5二端口电路 例7 阻抗匹配网络的计算为使信号源 其内阻Rs 12 与负载 RL 3 相匹配 在其间插入一阻抗匹配网络 电路如图 已知Z1 j6 Z2 j10 Z3 j6 若Us 24 0 求负载吸收的功率 解 建模方法1用Z方程求解 对于二端口电路有 即 对电源端有即对负载端有即将上四式写为矩阵形式中z11 Z1 Z2 j16 z12 j10 z22 Z2 Z3 j4 z21 j10Rs 12 RL 3 Us 24 0 解出U2 则负载吸收功率为 方法2应用戴维南定理求解 令可得开路电压 当时 负载端的输入阻抗即为等效阻抗按戴维南等效电路 得负载吸收功率 MATLAB程序5 19 mclear format 调用画线路图函数Rs 12 RL 3 Z1 6j Z2 10j Z3 6j Us 24 方法1用Z方程求解Z 1 1 Z1 Z2 Z 1 2 10j 列出Z矩阵各分量Z 2 1 Z 1 2 Z 2 2 Z2 Z3 系数矩阵A和系数矩阵BA 1 0 Z 1 1 Z 1 2 0 1 Z 2 1 Z 2 2 1 0 Rs 0 0 1 0 RL B 0 0 Us 0 X A B 求方程解U1 X 1 U2 X 2 I1 X 3 I2 X 4 列出各未知数的解P abs U2 2 RL 求负载功率 方法2 用戴维南定理求解Uoc Us Z2 Z2 Rs Z1 等效电压源开路电压Zout det Z Z 2 2 Rs Z 1 1 Rs 等效电压源内阻P1 abs Uoc Zout RL 2 RL 求负载功率 程序运行结果方法1X U1 U2 I1 I2 12 00004 8000 3 6000i1 0000 0 0000i 1 6000 1 2000iP 12 0000方法2Uoc 9 6000 7 2000iZout 3P1 12 0000 例8 二阶巴特沃斯低通数字滤波器的频率响应二阶巴特沃思低通滤波器的传递函数为求其频率响应并作图 0 2 解 建模离散系统的频率响应函数为 ts ts为抽样周期 其幅频特性为 H ej 相频特性为 H ej 按定义编程 信号处理工具箱中的freqz函数与此程序有同样功能 MATLAB程序q616 m 二阶巴特沃思低通滤波器的离散系统函数为 H z z 2 2z 1 2 sqrt 2 z 2 2 sqrt 2 求其频率响应可将z用exp i w 代入b 1 2 1 a 2 sqrt 2 0 2 sqrt 2 给出滤波器分子分系数N input 取频率数组的点数N w 0 N 1 pi N 给出0到pi之间的频率数组H polyval b exp i w polyval a exp i w 求频率响应figure 1 在线性坐标内画频率特性subplot 2 1 1 plot w abs H gridsubplot 2 1 2 plot w unwrap angle H gridfigure 2 在对数坐标
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!