基础知识
初识Matlab
Matlab的优势
- 不需要过多了解计算方法的具体细节和计算公式,也不需要繁琐的底层编程
- 可以专注具体问题的分析和设计,大大提高工作效率和质量,为科学研究与工程应用提供重要手段
Matlab语言的主要功能 - 数值计算
- 符号计算
- 图形绘制
- 程序流程控制
- 工具箱
Matlab系统环境
Matlab操作界面的组成
- Matlab主窗口
- 功能区
- 快速访问工作栏
- 当前文件夹工具栏
- 命令行窗口
输入命令并显示命令的执行结果 - 当前文件夹窗口
在文件夹窗口中选择某文件夹或使用cd命令设置当前文件夹 - 工作区窗口
Matlab的搜素路径
变量—内部函数—程序文件(当前文件夹下的程序文件—文件搜索路径文件夹中的程序文件)
Matlab数值数据
数值类型数据的分类
- 整型:
无符号整数:无符号8位整数、无符号16位整数、无符号32位整数、无符号64位整数
带符号整数:带符号8位整数、带符号16位整数、带符号32位整数、带符号64位整数 - 浮点型
single函数:将其他类型的数据转换为单精度型
double函数:将其他类型的数据转换为双精度型 - 复型
复型数据包括实部和虚部两个部分,实部和虚部默认为双精度型,虚部单位用i或j来表示
real函数:求复数的实部
imag函数:求复数的虚部
数值数据的输出格式
format命令格式:format 格式符
常用数学函数
- abs函数
求实数的绝对值、复数的模、字符串的ASCII码值 - 取整函数fix、floor、ceil、round
round函数是按照四舍五入的规则来取整
ceil是向上取整,取大于等于这个数的第一个整数
floor是向下取整,取小于等于这个数的第一个整数
fix是固定取靠近0的那个整数,也就是舍去小数取整
变量及其操作
变量与赋值语句
- 变量:字母、数字和下划线的字符序列
- 变量名区分大小写
- 标准函数名以及命令名一般用小写字母
预定义变量
预定义变量是在Matlab工作空间中驻留,由系统本身定义的变量
变量的管理
- 内存变量的删除修改
- who命令与whos命令
- 内存变量文件
用于保存Matlab工作区变量的文件叫做内存变量文件,其扩展名为.mat,也叫做MAT文件 - save命令:创建内存变量文件
- load命令:装入内存变量文件
Matlb矩阵的表示
矩阵的建立
- 直接输入建立矩阵,将矩阵中的元素用中括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用逗号或空格分隔,不同行的元素之间用分号分隔
- 利用已建立好的矩阵建立更大的矩阵
- 可以用实部矩阵和虚部矩阵构成复数矩阵
冒号表达式
格式:e1:e2:e3(初始值:步长:终值)
结构矩阵和单元矩阵
- 由结构数据构成的矩阵就是结构矩阵,结构矩阵里每个元素就是结构数据类型
矩阵元素的引用
矩阵元素的引用方式
- 通过下标来引用矩阵的元素
- 通过序号来引用
- 在Matlab中,矩阵元素按列存储
- sub2ind(S,I,J)函数:将矩阵中指定元素的行、列下标转换成存储的序号
- S为行数和列数组成的向量,I为转换矩阵的行下标,J为转换矩阵的列下标
- ind2sub函数:把矩阵元素的序号转换成对应的下标,[I,J]=ind2sub(S,D)
利用冒号表达式获得子矩阵
- 子矩阵是由矩阵中一部分元素构成的矩阵
- A(i,:) 第i行的全部元素
- A(:,j) 第j列的全部元素
- A(i:i+m,k:k+m) 第i-i+m行内且在第k-k+m列中的所有元素
- A(i:i+m,:) 第i-i+m行的全部元素
利用空矩阵删除矩阵中的元素
- 空矩阵是指没有任何元素的矩阵
改变矩阵的形状
- reshape(A,m,n): 在矩阵总元素保持不变的前提下,将矩阵A重排成m×n的二维矩阵
Matlab基本运算
算术运算
- Matlab的算术运算是在矩阵意义下成立的
- 单个数据的算术运算只是矩阵运算的一种特例
加减运算
- 若两矩阵同型,运算时两矩阵的相应元素相加减
- 若两矩阵不同型,则Matlab将给出错误信息
- 一个标量也可以和矩阵进行加减运算,这时把标量和矩阵每一个元素进行加减运算
乘法运算
- 矩阵A和B进行乘法运算,要求A的列数与B的行数相等,此时则称A、B矩阵是可乘的,或称A和B两矩阵维数和大小相容
除法运算
- 在Matlab中,有两种矩阵除法:右除/和左除\
- 如果A矩阵是非奇异方程,则B/A等效为B*inv(A),A\B等效于inv(A)*B
乘方运算
- 一个矩阵的乘方运算可以表示为A^x, 要求A为方阵,x为标量
点运算
- 点运算符:.*、 ./、.\和.^
- 两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵同型
关系运算
- 关系运算符:<小于、<=小于等于、>大于、>=大于等于、==等于、~=不等于
- 当两个比较量是标量时关系成立,表达式结果为1,否则为0
- 当参与比较的量是两个同型的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规律逐个进行,最终的运算结果是一个与原矩阵同型的矩阵,它的元素由0或1组成
逻辑运算
逻辑运算符:&与、|或、~非
- 若参与逻辑运算的是两个同型矩阵,那么将对矩阵相同位置上的元素按标量规则逐个进行运算,最终运算结果是一个与原矩阵同型的矩阵,其元素由1或0组成
- 若参与逻辑运算的一个是标量,一个是矩阵,那么将在标量与矩阵中的每个元素之间按标量规则逐个进行运算,最终运算结果是一个与矩阵同型的矩阵,其元素由1或0组成
字符串处理
字符串的表示
- 在Matlab中,字符串是用单引号括起来的字符序列
- 若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示
字符串的操作
- 字符串的执行
eval(s) - 字符串与数值之间的转换
- abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵
- char函数可以把ASCII码矩阵转换为字符串矩阵
- 字符串的比较
- 关系运算符比较:两个字符串里的每个字符依次按照ASCII值大小逐个进行比较,比较的结果是一个数值向量,向量中的元素为1或0
- 字符串比较函数
- strcmp(s1,s2)::用来比较两字符串是否相等
- strncmp(s1,s2,n):用来比较两个字符串前n个字符是否相等
- strcmpi(s1,s2):在忽略字母大小写前提下,比较字符串s1和s2是否相等
- strncpmi(s1,s2):在忽略字母大小写前提下,用来比较两个字符串前n个字符是否相等
- 字符串的查找与替换
findstr(s1,s2):返回短字符串在长字符串中的开始位置
strrep(s1,s2,s3):将字符串s1中的所有子字符串s2替换为字符串s3