MATLAB学习记录
什么是MATLAB
MATLAB简介
MATLAB,MAT指的是matrix,LAB指的是laboratory,意为矩阵实验室 。MATLAB具有数值分析、数值和符号计算、工程与科学绘图、控制系统的设计与仿真、数字图像处理、数字信号处理、财务与金融工程等功能,为众多科学领域提供了全面的解决方案,代表了当今国际科学计算软件的先进水平。MATLAB是用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境的商业数学软件。
MATLAB安装事项
如果需要MATLAB的安装包,请点击这里,提取码是4444,这个版本是2018.a版的,选择它没啥原因,大概是缘分吧嘿嘿。
下载之后,安装过程之中需要选择工具包,(如果电脑内存够大自然可以全选下载,大小好像有十几个G),我们可以根据自己的需求和用途来勾选,具体的可以看此处:官网的安装推荐。不过,如果后面还有其它的需要,可以再添加工具
MATLAB学习
一、MATLAB基础知识
1、MATLAB系统环境
-
MATLAB操作界面
命令窗口
命令窗口中“>>”为命令提示符,在>>之后输入命令后,按下回车键就可以开始执行命令。执行结果会直接显示在命令下。
例:
如果命令很长,则就可以将命令分为多行,在要换行的行尾加上“…”,“…”被称为续行符。
当前文件夹
如果要转换程序的当前文件夹,则使用cd D:\matlab_study
命令来将指定文件夹设置为D:\matlab_study(指定文件夹)。且需要注意的是,所要设置的文件夹必须是已经存在的文件夹,所以若是新文件夹则需要先创建再设置路径。
工作区窗口
用于变量的显示和操作
MATLAB的搜索路径
变量->内部函数->程序文件
如果变量名与函数名字重名,则调用时会认定其为变量,若要调用该函数,则可以在工作区删除该变量。
2、MATLAB中常用的数学函数
-
三角函数
以弧度为单位的函数:sin(pi/2)…
以角度为单位的函数:sind(90)… -
abs函数
abs()可以用于求实数的绝对值、复数的模、字符串的ASCII码值 -
取整函数
round函数:四舍五入取整
ceil函数:向上取整,取>=这个数的第一个整数
floor函数:向下取整,取<=这个数的第一个整数
fix函数:舍去小数部分取整 -
求余函数
rem(a,b)函数:其中a为被除数,b为除数
函数应用举例:求[1,100]区间内的所有素数
>>x=1:100;
>>k=isprime(x);
>>k1=find(k);
>>p=x(k1)
最后得到结果为
函数库中的函数有很多,记住一些常用的函数,其他的可以在需要使用时进行查阅。
3、变量
-
预定义变量
其为系统本身定义的变量
ans是默认的赋值变量
i、j代表虚数单位
pi代表圆周率
NaN代表非数 -
内存变量文件
用于保存MATLAB工作区变量的文件叫内存变量文件,其扩展名为.mat,也叫MAT文件。
save命令:创建内存变量文件
load命令:装入内存变量文件
eg.假设现在有变量a,x,使用命令>>save mydata a x
来创建文件mydata.mat来存入变量a和x。若之后要在别的程序中使用变量a和x,则可以用命令>>load mydata
来调用a x
4、MATLAB矩阵的表示
-
矩阵的建立
直接输入建立矩阵
将矩阵元素用[]括起来,按行顺序输入矩阵元素,元素与元素之间用逗号分隔,行与行之间用分号分隔。
eg.>>A=[1,2,3;4,5,6;7,8,9]
利用已有矩阵建立新矩阵
eg.
用实部矩阵和虚部矩阵建立复数矩阵
eg.
-
冒号表达式
可以用其生成向量
格式:e1:e2:e3
其中e1为初始值,e3为终止值,e2为步长,步长也就是公差
eg.
如果省略步长不写的话,默认步长为1,所以例子中可写成t=0:5
linspace函数
格式:linspace(a,b,n)
其中a为第一个元素,b为最后一个元素,n为元素总数,当n省略时,自动生成100个元素
eg.
-
结构矩阵
概念:类似于结构体变量元素,每个元素含有多个成员,这些结构体元素再构成结构体矩阵。
格式:结构矩阵元素.成员=表达式
eg.
>> a(1).x1=10;a(1).x2="liu";a(1).x3=[1,21;34,78];
>> a(2).x1=12;a(2)x2="wang";a(2).x3=[34,191;27,578];
-
单元矩阵
概念:单元矩阵的元素是不同的数据类型的数据组成的。
格式:单元矩阵的建立和一般矩阵类似,直接输入即可,只是单元矩阵元素要用大括号括起来。
eg.
5、矩阵元素的引用
-
通过下标引用
eg.A(3,2)表示矩阵的第3行第2列的元素,给其赋值A(3,2)=100 -
通过序号引用
在MATLAB中,矩阵元素按列存储,即首先存储矩阵的第一列元素,然后存储第二列元素,…,一直到矩阵的最后一列元素。矩阵元素的序号就是矩阵元素在内存中的排列顺序。
eg.
-
下标与序号的转换
序号与下标是一一对应的,A为mxn的矩阵,矩阵元素A(i,j)的序号就为m*(j-1)+i
sub2ind函数:将矩阵中指定元素的下标转换成存储的序号
调用格式:D=sub2ind(S,I,J),其中S为行数和列数组成的向量,I为转换矩阵元素的行下标,J为转换矩阵元素的列下标,D为对应下标的序号。
eg.
ind2sub函数:把矩阵元素的序号转换成对应的下标
调用格式:[I,J]=ind2sub(S,D),其中S为矩阵行数和列数组成的向量,D为元素对应的序号
eg.
-
利用冒号表达式获得子矩阵
子矩阵是指由矩阵中的一部分元素构成的矩阵
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行的全部元素
eg.
-
end运算符
表示某一维的末尾元素下标
eg.
-
利用空矩阵删除矩阵的元素
空矩阵是指没有任何元素的矩阵
x=[ ],x是一个空矩阵
eg.
-
改变矩阵的形状
reshape(A,m,n)
在矩阵总元素保持不变的前提下,将矩阵A重新排列成mxn的二维矩阵。
注意:reshape函数指改变原矩阵的行数和列数,原矩阵的元素个数与存储顺序保持不变。
eg.
A(:)
将矩阵A的每一列元素堆叠起来,成为一个列向量
eg.
6、MATLAB的基本运算
-
算术运算
MATLAB的算术运算是在矩阵意义下进行的
单个数据的算术运算只是矩阵运算的一种特例
点运算
点运算符:.*、./、.\和.^
两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵同型。 -
关系运算
不等于:~=
当参与比较的量是两个同型的矩阵时,比较是对两个矩阵相同位置的元素按标量关系运算规则逐个进行,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。
eg.建立3阶方阵A,判断A的元素是否为偶数
-
逻辑运算
与:&
或:|
非:~
当参与逻辑运算的是两个同型的矩阵时,比较是对两个矩阵相同位置的元素按标量规则逐个进行运算,最终的逻辑运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。
eg.水仙花数指的是各位数字的立方之和等于该数本身的三位正整数,求全部水仙花数。
(真的要注意乘和点乘的区别)
7、字符串处理
-
字符串的表示
在MATLAB中,字符串是用单引号括起来的字符序列,可以看成是一个元素值为字符的行向量。
eg.
若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示。
eg.
建立多行字符串可形成字符串矩阵
eg.
建立一个字符串向量,可以对其做多种操作处理:
eg.
取1~5个字符组成的子字符串
将字符串倒过来重新排列
将字符串中的小写字母变成相应的大写字母,其余字符不变
统计字符串中小写字母的个数
-
字符串的操作
字符串的执行
格式:eval(s),其中s是字符串
eg.
字符串与数值之间的转换
abs函数和double函数:获取字符串矩阵所对应的ASCII码数值矩阵
char函数:可以把ASCII码矩阵转换成字符串矩阵
eg.
-
字符串的比较
关系运算符比较
两个字符串里的每个字符依次按ASCII值大小逐个进行比较,比较的结果是一个数值向量,向量中的元素要么是1,要么是0.
eg. -
字符串比较函数
strcmp(s1,s2)
用来比较字符串s1和s2是否相等,如果相等,返回结果为1,否则返回0.
strncmp(s1,s2)
用来比较两个字符串前n个字符是否相等,如果相等返回1,不相等返回0.
strcmpi(s1,s2)
在忽略字母大小写的前提下,比较字符串s1和s2是否相等,如果相等则返回1,否则返回0
strncmpi(s1,s2n)
在忽略字母大小写的前提下,比较字符串s1和s2前n个字符是否相等,如果相等则返回1,否则返回0 -
字符串的查找与替换
findstr(s1,s2)
返回短字符串在长字符串中的开始位置
strrep(s1,s2,s3)
将字符串s1中的所有子字符串s2替换为子字符串s3.
eg.