《MATLAB_3 MATLAB编程.ppt》由会员分享,可在线阅读,更多相关《MATLAB_3 MATLAB编程.ppt(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第 3 章章 MATLAB 编程编程3.1概述概述3.2数据类型数据类型3.3运算符运算符(重点重点)3.4流程控制流程控制(重点重点)3.5M 文件调试文件调试 13.1概述概述1.M 语言的特点:语言的特点:演算纸式的语言演算纸式的语言 向量化编程向量化编程 解释性语言解释性语言v 执行效率低,开发效率高,适合进行算法开执行效率低,开发效率高,适合进行算法开 发与验证。发与验证。22.M 文件分为脚本文件和函数文件文件分为脚本文件和函数文件 脚本文件脚本文件一系列命令组成,无输入输出参数;一系列命令组成,无输入输出参数;处理的数据或变量必须在处理的数据或变量必须在 workspace 中
2、。中。函数文件函数文件有输入输出参数;有输入输出参数;不同的函数分别有自己的工作空间,有局部不同的函数分别有自己的工作空间,有局部变量和全局变量之分;变量和全局变量之分;函数名必须和文件名一致。函数名必须和文件名一致。33.2数据类型数据类型1.MATLAB 中的常量中的常量ans:默认的结果默认的结果pi:圆周率圆周率Inf:无穷大:无穷大NaN:非数:非数i,j:虚数单位虚数单位v 常量可以重新赋值常量可以重新赋值v clear 或软件重启后恢复或软件重启后恢复42.基本数值类型基本数值类型整型(整型(int8 uint8 int16 uint16)实型实型单精度型单精度型 single双
3、精度型双精度型 doublev MATLAB 中的数据类型在使用前不用声明中的数据类型在使用前不用声明v MATLAB 默认的数值类型为默认的数值类型为 double,各数值各数值类型之间可以进行强制转换类型之间可以进行强制转换53.字符串类型字符串类型char a=t;b=hello;执行后的执行后的 workspace 为为:6 a=(31);执行后的执行后的 workspace 为为:4.逻辑类型逻辑类型 logical73.3运算符运算符 程序设计基本运算包括:算术运算、关系运程序设计基本运算包括:算术运算、关系运算、逻辑运算、赋值运算、位运算、字符串操作算、逻辑运算、赋值运算、位运算
4、、字符串操作等。等。1.关系运算关系运算 关系运算也叫比较运算,条件为真时结果为关系运算也叫比较运算,条件为真时结果为1,条件为假时结果为,条件为假时结果为 0。l 操作对象:数值类型向量或矩阵操作对象:数值类型向量或矩阵l 操作结果:逻辑向量或矩阵操作结果:逻辑向量或矩阵8u 标量与标量比较标量与标量比较 a=1;b=2;abans=0u 标量与向量比较标量与向量比较 a=1 2 3 4 5;3aans=1 1 0 0 0 a a=1 2 3 4 5;b=1 0 3 1 4;a=bans=1 0 1 0 0u 标量与矩阵比较标量与矩阵比较 M=1 2 3;4 5 6;7 8 9M=1 2 3
5、 4 5 6 7 8 9 M5ans=0 0 0 0 0 1 1 1 110u 矩阵与矩阵比较矩阵与矩阵比较 M=1 2 3;4 5 6;7 8 9M=1 2 3 4 5 6 7 8 9 N=1 3 5;2 1 4;2 0 1N=1 3 5 2 1 4 2 0 1 M a=3;b=0;a&bans=0 a|bans=1 aans=0u 标量与向量标量与向量 a=1 2 0 0 5a=1 2 0 0 5 a&3ans=1 1 0 0 1 a|0ans=1 1 0 0 113u 标量与矩阵标量与矩阵 M=1 3 0;2 0 1;3 3 0M=1 3 0 2 0 1 3 3 0 M&2ans=1 1
6、 0 1 0 1 1 1 0 M|2ans=1 1 1 1 1 1 1 1 1u 向量与向量向量与向量 a=1 0 2 1 0 3a=1 0 2 1 0 3 b=3 6 0 3 4 0b=3 6 0 3 4 0 a&bans=1 0 0 1 0 0 a|bans=1 1 1 1 1 114u 矩阵与矩阵矩阵与矩阵 M=1 0 2;3 0 1;2 3 0M=1 0 2 3 0 1 2 3 0 N=2 0 5;3 2 0;0 1 5N=2 0 5 3 2 0 0 1 5 M&Nans=1 0 1 1 0 0 0 1 0 M|Nans=1 0 1 1 1 1 1 1 1v 逻辑运算不能在向量和矩阵之
7、间进行!逻辑运算不能在向量和矩阵之间进行!15u any 和和 all 运算运算 向量的情况向量的情况 a=1 3 0 5 2 9 0 1a=1 3 0 5 2 9 0 1 any(a)ans=1 all(a)ans=016 矩阵的情况矩阵的情况 M=1 0 2;3 3 2;0 6 8M=1 0 2 3 3 2 0 6 8 any(M)ans=1 1 1 all(M)ans=0 0 1v 对矩阵进行对矩阵进行 any 和和 all 运算时按列进运算时按列进行操作行操作17v 逻辑索引逻辑索引例例:对:对向量向量元素进行逻辑索引元素进行逻辑索引 a=3 5 9 8 4 6a=3 5 9 8 4
8、6 a5ans=0 0 1 1 0 1 a(a5)ans=9 8 6输出结果为输出结果为 a 中所中所有大于有大于 5 的元素的元素18例例:对:对矩阵矩阵元素进行逻辑索引元素进行逻辑索引 M=2 6 9;3 5 4M=2 6 9 3 5 4 M M(M a=1:6a=1 2 3 4 5 6 a(2:4)=7a=1 7 7 7 5 6 a(a3)=3a=1 3 3 3 3 3 M=1 2 3;4 5 6;7 8 9M=1 2 3 4 5 6 7 8 9 M(1,:)=10M=10 10 10 4 5 6 7 8 9 20u 标量赋值给矩阵标量赋值给矩阵 M=1 2 3;4 5 6;7 8 9M
9、=1 2 3 4 5 6 7 8 9 M(1:2,1:2)=0M=0 0 3 0 0 6 7 8 9 21u 向量赋值给向量向量赋值给向量 a=1:6a=1 2 3 4 5 6 a(1:3)=7 8 9a=7 8 9 4 5 6 M=1 2 3;4 5 6;7 8 9M=1 2 3 4 5 6 7 8 9 M(2,:)=10 10 10M=1 2 3 10 10 10 7 8 922u 矩阵赋值给矩阵矩阵赋值给矩阵 M=1 2 3;4 5 6;7 8 9M=1 2 3 4 5 6 7 8 9 M(1 2,2 3)=0 1;2 3M=1 0 1 4 2 3 7 8 9v 赋值运算不能在向量和矩阵
10、之间进行!赋值运算不能在向量和矩阵之间进行!23v MATLAB 中的向量和矩阵对于赋值运算具有中的向量和矩阵对于赋值运算具有自动扩展大小的功能,但应慎用!自动扩展大小的功能,但应慎用!a=1 2 3a=1 2 3 a(5)=4a=1 2 3 0 4 a(2,2)=5a=1 2 3 0 4 0 5 0 0 0 a(3,6)=6a=1 2 3 0 4 0 0 5 0 0 0 0 0 0 0 0 0 6244.位运算位运算l 操作对象:无符号整数操作对象:无符号整数l 操作结果:无符号整数操作结果:无符号整数bitandbitand按位按位按位按位“与与与与”bitorbitor按位按位按位按位“
11、或或或或”bitxorbitxor按位按位按位按位“异或异或异或异或”bitgetbitget按位获取按位获取按位获取按位获取bitsetbitset按位按位按位按位“置置置置1”1”bitcmpbitcmp按位求按位求按位求按位求“补补补补”,按位取反,按位取反,按位取反,按位取反bitshiftbitshift移位移位移位移位25例例 a=dec2bin(18)a=10010 b=dec2bin(29)b=11101 bitand(18,29)ans=16 dec2bin(16)ans=10000 bitor(18,29)ans=31 dec2bin(31)ans=11111 bitxor
12、(18,29)ans=15 dec2bin(15)ans=1111 bitget(18,1)ans=0 bitget(18,1:5)ans=0 1 0 0 126 bitset(18,1)ans=19 dec2bin(19)ans=10011 bitset(18,1,3)ans=19 22 bitcmp(18,8)ans=237 dec2bin(237)ans=11101101 bitshift(237,1)ans=474%左移一位,相当于乘以左移一位,相当于乘以2 dec2bin(474)ans=111011010 bitshift(237,-1)ans=118%右移一位,相当于除以右移一位
13、,相当于除以2再取整再取整 dec2bin(118)ans=1110110275.字符串操作字符串操作 字符串的格式化字符串的格式化 sprintf例:例:clear;clc;for i=1:5 str=sprintf(第第%d个字符串个字符串,i);disp(str);end 运行结果:运行结果:第第1个字符串个字符串第第2个字符串个字符串第第3个字符串个字符串第第4个字符串个字符串第第5个字符串个字符串283.4 流程控制流程控制结构化程序设计的三种基本结构:结构化程序设计的三种基本结构:顺序结构、选择结构、循环结构顺序结构、选择结构、循环结构1.选择结构选择结构u 第一种形式:第一种形式
14、:if 表达式表达式 MATLAB语句语句end例例:a=input(输入输入:);if a0 disp(a0);end运行程序运行程序输入输入12回车后命令回车后命令窗口显示:窗口显示:a029u 第二种形式:第二种形式:if(表达式表达式)MATLAB语句语句Aelse MATLAB语句语句Bend例例:clear;clc;a=input(输入输入:);if a0 disp(a0);else disp(a030u 第三种形式:第三种形式:if 表达式表达式1 MATLAB语句语句Aelseif 表达式表达式2 MATLAB语句语句B(elseif)else MATLAB语句语句Nend31
15、score=input(输入输入:);if score100 disp(不合理数据不合理数据);elseif score60 disp(不及格不及格);elseif score80;disp(良良);else disp(优优);end运行程序,输入运行程序,输入75 后回车,命令后回车,命令窗口显示:窗口显示:良良32u 第四种形式:第四种形式:switch 表达式表达式case 常量常量a:MATLAB语句语句A case 常量常量b:MATLAB语句语句B :case 常量常量m:MATLAB语句语句M otherwise MATLAB语句语句Nend33例例:grade=input(输入
16、输入:);switch grade case A disp(90100);case B disp(8089);case C disp(7079);case D disp(6069);otherwise disp(059);end运行程序,输入运行程序,输入A,回车后命令回车后命令窗口显示:窗口显示:90100342.循环结构循环结构u 第一种形式:第一种形式:while表达式表达式MATLAB语句语句endi=1;s=0;while i m,n=add_sub(1 2 3,4 5 6)m=5 7 9n=-3 -3 -3 a=add_sub(1 2 3,4 5 6)a=5 7 9413.主函数和
17、子函数主函数和子函数 M 文件中第一个函数为主函数,其余为子函数文件中第一个函数为主函数,其余为子函数 function out=add(in1,in2,in3)%主函数主函数out=add_s(in1)+add_s(in2)+add_s(in3);function out_s=add_s(in_s)%子函数子函数out_s=0;for i=1:length(in_s)out_s=out_s+in_s(i);end add(1 2,3 4,5)ans=15注意:文件名为主函数注意:文件名为主函数名名add.m423.6 M 文件调试文件调试1.设置断点设置断点432.运行,输入运行,输入 stats_error(1 2 3);进入进入 debug 模式,命令窗口显示:模式,命令窗口显示:K443.常用调试方法常用调试方法Step(F10):单步调试;):单步调试;Step in(F11):进入子函数内部;):进入子函数内部;Go until cursor:运行到光标处;:运行到光标处;利用注释屏蔽代码;利用注释屏蔽代码;观察观察 work space 和和 command window;Dbquit:退出调试状态;:退出调试状态;45
限制150内