关于MATLAB的学习记录(纯⼊门⽤)
其实⼤⼆时有修过MATLAB这门课,但最终还是流于应付考试的表⾯。
今年终于决定试试美赛,于是乎⼜捡起来这门课,学习内容是按照bilibili上⾯中南⼤学的视频讲解,再加上⾃⼰编写代码和先前学习的印象做了⼀份笔记。
就当是存档,⽅便⽇后回忆查。如有侵权,纯属⽆⼼,联系删除。
专题⼀,MATLAB基础知识
⼀、数据类型:
1整型:带符号和⽆符号两种
(数值类型转换:int8函数转换为带符号的整型,uint8函数转化为不带符号的整型)
2、浮点型:单精度型和双精度型。(数值型数据默认为双精度)可采⽤single函数、double函数进⾏转换。
3、复型数据:包括实部和虚部两部分。(real函数求实部,imag函数求虚部。)
⼆、数值数据的输出格式
format函数来改变之后数值的输出格式,format long/format(默认是short),只影响输出格式,但不影响储存和计算。
format rat命令:以有理数形式输出。
三、常⽤的数学函数
函数的调⽤格式:函数名(⾃变量值)
函数的应⽤:
(1)三⾓函数:sin函数⾃变量采⽤弧度制,sind函数⾃变量采⽤⾓度制。例如:sin(pi/2)=sind(90)=1
(2)exp(x):求ex
(3)Abs函数,实数的绝对值,复数的摸,字符串的ASCII值。
(4)⽤于取整的函数:round函数(四舍五⼊)ceil函数(向上取整)
floor函数(向下取整)fix函数(向0取整)
(5)求余函数:rem函数:rem(被除数,除数)输出余数,
即:a=rem(345,10)输出a=5
(6)isprime函数:判断变量是否为素数,是返回1,否则返回0.
(7)find函数:查矩阵变量中的⾮零向量序号,利⽤数组输出,例:k=find(A)(查A矩阵中的⾮零向量序号),P=X(k)(将X矩阵中与上述查到的⾮零向量对应序号的元素输出为P矩阵)
四、变量与赋值语句
变量=内存单元,通过变量名访问内存单元。(MATLAB中,变量名以字母开头,后接字母、数字或下划线等字符。)
① 变量名区分字母的⼤⼩写,即A和a表⽰的是两个变量。
② 内部标准函数名及命令名必须采⽤⼩写字母,否则会出错。
赋值语句:变量=表达式,或直接输⼊表达式,采⽤系统默认ans。变量结果会在最后显⽰,若在赋值
语句最后加分号(;),则仅赋值,并不显⽰结果。
五、预定义变量
ans:默认赋值变量。
i和j:表⽰虚数单位,两者等价。
Pi:代表圆周率
NaN:代表⾮数
如:在绘图时,如果需要裁减图形,可将其相应坐标设置为NaN。
六、变量管理
Who命令、whose命令:显⽰驻留变量,前者只给名称,后者会显⽰名称和具体信息(例如:⼤⼩,格式等)
Save命令:创建内存变量⽂件
load命令:装⼊内存变量⽂件
七、矩阵
1)直接输⼊法:中括号外包,同⾏元素采⽤逗号分隔,不同⾏采⽤分号分隔。
2)利⽤已经建⽴好的矩阵,拼接成⼤矩阵,例:A、B分别为两个矩阵,可以创建C矩阵,即:C=[A,B;B,A]
3)也可以采⽤实部矩阵和虚部矩阵构成复数矩阵,例:
4)冒号表达式: 初始值:步长:终⽌值(默认步长=1)
5)linspace函数:⽣成等差数列⾏向量
linspace(第⼀个元素,最后⼀个元素,元素总数),总数省略时默认为100个元素。
6)结构矩阵:数据类型不同但逻辑相关的数据组成整体,结构矩阵内的元素均是结构数据类型。
格式:结构矩阵元素.成员名=表达式
7)单元矩阵:采⽤⼤括号包括,元素类型可以不限于数值。
⼋、矩阵元素的引⽤⽅式
(1)通过下标来引⽤元素:A(⾏,列),如果引⽤元素⾏列下标超过原引⽤矩阵的⾏列数,则MATLAB会⾃动对其进⾏扩展,并将之前不存在的⾏列中元素赋值为0。
(2)通过序号引⽤:元素存储是按列进⾏存储,故排序也是按列排序。序号与下标是⼀⼀对应的,例:m(⾏)×n(列)矩阵,元素
A(i,j)序号为(j-1)×m+i
sub2ind函数:将矩阵中指定元素的⾏列下标转换为存储序号,例:D=sub2ind(⾏列数组成的向量,⾏,列)9
可采⽤size函数获取⾏列数组成的向量。
ind2sub函数:将矩阵元素的序号转换为对应的下标。
[I,J]=ind2sub(S,D)(⾏数和列数组成的向量,序号)
(3)利⽤冒号表达式获得⼦矩阵:
A(i,:)第i⾏全部元素
A(:,J)第j列全部元素
A(i:i+m,k:k+m)第i k+m列的全部元素
i+m⾏,第k
(4)end运算符:表⽰某⼀维的末尾元素。
(5)利⽤空矩阵删除矩阵中的元素:即使相应位置的元素为空,使矩阵相应的发⽣改变。
(6)reshape函数:改变矩阵的形状,在矩阵总元素保持不变的前提下,将矩阵A重新排列为m×n的⼆维矩阵,例reshape(A,m,n)。只改变⾏列数,即结构,但不改变元素本⾝、个数、储存顺序。
(7)A(:):将矩阵A每⼀列元素堆叠起来,形成⼀个列向量。
九、算术运算
基本算术运算:加、减、乘、右除/、左除\、乘⽅^
① 加减运算:要求矩阵同型,即⾏列数要相同,若维数不同则出现错误。标量和矩阵也可以相运算,可看做矩阵每⼀个元素都与该标量进⾏⼀次运算。
② 乘法运算:A与B相乘,要求A的列数与B的⾏数相等,否则错误。称为A、B可乘,或两矩阵维数和⼤⼩相容。
③ 左除\和右除/:如果A为⾮奇异矩阵则B(右除)/A,则等于B*inv(A)(即B乘以A的逆矩阵)
④ 乘⽅运算:A^x,要求A为⽅阵,x为标量。
点运算:量矩阵的对应元素进⾏相关运算,要求进⾏运算的两矩阵同型。
关系运算符:
⼩于 <,⼩于或等于 <=,⼤于 >,⼤于或等于 >=,等于 ==,不等于 ~=
标量⽐较:直接⽐较,成⽴为1,不成⽴为0。
矩阵⽐较:同型基础上,相同位置元素按标量⽐较,输出结果以矩阵呈现,由0、1组成。
标量与矩阵⽐较:将标量与矩阵内每个元素进⾏⽐较,输出为矩阵,由0、1组成。
逻辑运算:与 & ,或 | 、⾮ ~
标量:
a&b 只有当ab全为0时,运算结果为1,否则为0。
a|b a、b任⼀为⾮零时,结果为1。
~a 当a为0时,运算结果为1。
矩阵:同型矩阵对应元素⽐较,输出由0、1组成的矩阵为结果。
⼗、字符串的运⽤处理
字符串的表⽰:⽤单引号括起来的字符序列。
字符串中的单引号作为字符本⾝需要⽤两个单引号表⽰。
将字符串A中的字符重新排列m=A(end:-1:1)
字符串的执⾏:
eval函数:eval(字符串),将字符串的内容作为MATLAB中相应的函数进⾏执⾏。
字符串与数值间的转换:
① abs和double函数都可以⽤于获取字符串矩阵所对应的ASCII码数值矩阵。
② char函数可以把ASCII码矩阵转换为字符串矩阵。同⼀个字符到⼩写ASCII的值相差32。
字符串的⽐较:⼀⼀对应相⽐较ASCII码的⼤⼩。
strcmp函数:strcmp(s1,s2)⽤于⽐较两字符串是否相等。相等返回1,不等返回0.
strcmpi函数:忽略字符中的⼤⼩写问题进⾏⽐较,是否相等。
strncmp函数:strncmp(s1,s2,n)⽤于⽐较两字符串前n个字符是否相等。
strncmpi函数:忽略⼤⼩写对函数前n项进⾏⽐较。
字符串的查与替换:
findstr(s1,s2):返回短字符串在长字符串中的开始位置。
strrep(s1,s2,s3):将字符串s1中所有⼦字符s2换为字符串s3.
专题⼆,MATLAB矩阵处理
⼀、特殊矩阵
1.通⽤特殊矩阵
①zero函数:产⽣全0矩阵,即0矩阵。
zero(m):产⽣m⾏m列矩阵;
zero(m,n):产⽣m⾏n列矩阵
zero(size(A)):产⽣与A矩阵同⼤⼩的0矩阵。
②ones函数:产⽣全1矩阵。
③eye函数:产⽣对⾓线为1的矩阵。当矩阵为⽅阵时,得到⼀个单位矩阵。
④rand函数:产⽣(0,1)区间均匀分布的随机矩阵。
要得到(a,b)区间上均匀分布的随机矩阵,可⽤:
fix(a+(b-a+1)*rand(x))
⑤randn函数:产⽣均值为0,⽅差为1的标准正态分布随机矩阵。
要得到均值为a,⽅差为b的正态分布随机矩阵,可⽤:
a+sqrt(b)*randn(x)
2.专⽤特殊矩阵
①魔⽅矩阵:n阶魔⽅阵由1,2,3…n2共n2个整数组成,且每⾏、每列以及主副对⾓线上各n个元素之和都相等 ;每⾏每列的元素之和均为(n+n3)/2;可由magic函数产⽣(n⼤于2时有很多不同的魔⽅阵,但magic函数只产⽣⼀种特定的魔⽅阵)。
②范德蒙矩阵:最后⼀列全为1,前⼀列为基础数,各列均以该列为底数,以其次⽅产⽣相应元素。
vander(V),产⽣以V为基础的范德蒙矩阵。
③希尔伯特矩阵:著名的病态矩阵,即任何⼀个元素发⽣较⼩的变化,矩阵的值和逆矩阵都会产⽣较⼤的变化,其病态程度与其的阶数有关,越⾼越病态。
hilb函数,例hilb(n),⽣产n阶希尔伯特矩阵。
④伴随矩阵:采⽤compan(p),⽣成伴随矩阵,p为多项式系数向量,⾼次幂系数排在前,低次在后。
伴随矩阵的特征值(即伴随矩阵第⼀⾏的值),为多项式⽅程的根。
⑤帕斯卡矩阵:根据⼆项式定理,(x+y)n展开后的系数随着n的增⼤组成⼀个三⾓形表,这个三⾓形称为杨辉三⾓形。
把⼆项式系数依次填写在矩阵的左侧对⾓线上,然后提取左侧的n⾏n列元素,即为n阶帕斯卡矩阵。
⼆、矩阵变换
1.矩阵举例
1.对⾓矩阵:只有对⾓线上有⾮零元素的矩阵。
①提取矩阵的对⾓线元素:
diag(A):提取矩阵A主对⾓线(k=0)元素,产⽣⼀个列向量。
diag(A,k):提取矩阵A第k条对⾓线的元素,产⽣⼀个列向量。
②构造对⾓阵矩阵:
diag(1:5):建⽴对⾓线元素为1,2,3,4,5的对⾓阵。
③使矩阵D各⾏元素乘以A的对⾓线元素:当对⾓矩阵A左乘⼀个矩阵D,即A*D,相当于让对⾓线上元素A1,1乘以D矩阵第⼀⾏每⼀个元素;同理相当于让An,n乘以矩阵D第n⾏每⼀个元素。
同理,要将D的各列元素乘以A的对⾓线元素,即采⽤右乘对⾓阵。
2.三⾓矩阵:
①上三⾓阵:矩阵的对⾓线以下的元素全为0的矩阵。
triu(A):提取矩阵A主对⾓线(k=0)及以上的元素。
triu(A,k)提取矩阵A第k条对⾓线及以上的元素。
②下三⾓阵:矩阵的对⾓线以上的元素全为0的矩阵,采⽤tril函数,⽤法同上述triu函数。
3.数量矩阵:对⾓线上的元素相等的对⾓矩阵。
4.单位矩阵:对⾓线上的元素为1的对⾓矩阵。
2.矩阵的转置
转置即将⾏元素变为列元素,运算符号我⼩数点后接单引号(.’);
若为共轭转置,其运算符是单引号(’),它在转置的基础上还要取每个数的复共轭(共轭是针对于复数⽽⾔:即实部不变,虚部前⾯加负号。)
3.矩阵的旋转
rot90(A,k):将矩阵逆时针旋转90°的k倍,当k为1时可以省略。
fliplr(A):对矩阵A实施左右翻转。
flipud(A):对矩阵A实施上线翻转。
4.矩阵的求逆
inv(A):求矩阵的逆,可利⽤逆矩阵求解线性⽅程组。
三、矩阵求值
1.⾏列式值
把⼀个⽅阵看作⼀个⾏列式,并对其按⾏列式的规则求值,这个值就称为⽅阵所对应的⾏列式的值。
det(A):求⽅阵A所对应的⾏列式值。
2.矩阵的秩
线性⽆关的⾏数或列数,⽤rank函数求解。例:
矩阵的迹:等于矩阵对⾓线元素之和,也等于矩阵的特征值之和。
可⽤函数trace(A)求解。
3.矩阵和向量的范数
⽤于度量矩阵或向量在某种意义下的长度。
(1)向量的3种常⽤范数:
①向量1-范数:向量元素的绝对值之和,例:可⽤norm(V,1)计算向量V的范数。
②向量2-范数:向量元素平⽅和的平⽅根,norm(V)或norm(V,2)。
③向量∞-范数:所有向量元素绝对值中的最⼤值,norm(V,inf)。
(2)矩阵的3种常⽤范数:(计算和调⽤函数与向量相同。)
①矩阵A的1-范数:所有矩阵列元素绝对值之和的最⼤值。
②矩阵A的2-范数:矩阵A的转置与矩阵A的乘积矩阵(A’A)的最⼤特征值的平⽅根。
③矩阵A的∞-范数:所有矩阵⾏元素绝对值之和的最⼤值。
4.矩阵的条件数
linspace函数调用的格式为矩阵A的条件数等于A的范数与A的逆矩阵的范数的乘积。条件数越接近1矩阵的性能越好(矩阵微变产⽣的误差较⼩),反之矩阵的性能越差。(应⽤:可以⽤来判断迭代的病态程度)
①cond(A,1)
②cond(A)或cond(A,2)
③cond(A,inf)
四、矩阵的特征值与特征向量
设A为n阶⽅阵,如果存在常数λ和n维⾮零列向量x,使得等式Ax=λx成⽴,则称λ为A的特征值,相应的x即为特征向量。
E=eig(A):求矩阵A的全部特征值,构成向量E。
[X,D]=eig(A):求矩阵A的全部特征值,构成对⾓阵D,并产⽣矩阵X,X各列是相应的特征向量。
同⼀特征值的特征向量的⾮零线性组合仍是这个特征值的特征向量。
eigshow函数可以绘制单位圆上向量x和Ax之间的关系,运⾏如下图;在变化过程中,x和Ax共线的⽅向,即成为特征⽅向,此时有
Ax=λx。
五、稀疏矩阵
是指零元素个数远远多于⾮零元素个数的矩阵。
1.矩阵的存储⽅式
完全存储⽅式:将矩阵的全部元素按列存储。
稀疏存储:只存储矩阵的⾮零元素的值及其位置,即⾏号和列号。
2.稀疏存储⽅式的产⽣
①完全存储⽅式与稀疏存储⽅式的转换:
sparse函数:将矩阵转化为稀疏⽅式存储。
full函数:将矩阵按完全⽅式存储。
②直接建⽴稀疏矩阵存储:
sparse(m,n):⽣成⼀个m×n的所有元素都是零的稀疏矩阵。
sparse(u,v,S):其中u、v、S是三个等长的向量。s是要建⽴的稀疏存储矩阵的⾮零元素,u(i)、v(i)分别是S(i)的⾏和列下标。spconvert(A):A为⼀个三列或四列矩阵,每⾏表⽰⼀个⾮零元素。A的第⼀列表⽰⾮零元素所在⾏号,第⼆列表⽰列号,第三列为⾮零元素实部,第四列为虚部。
③带状稀疏矩阵的存储:稀疏矩阵有两种基本类型(⽆规则结构的稀疏矩阵与有规则结构的稀疏矩阵)。⽽带状稀疏矩阵是指所有⾮零元素集中在对⾓线上的矩阵。例:
[B,d]=spdiags(A):从带状稀疏矩阵中提取全部⾮零对⾓线元素赋给矩阵B及其这些⾮零对⾓线的位置向量d。
A=spdiags(A):产⽣带状稀疏矩阵的稀疏存储矩阵A,其中m、n为原带状稀疏矩阵的⾏列数,B矩阵的第i列为原带状稀疏矩阵的第i条⾮零对⾓线,向量d为原带状稀疏矩阵所有⾮零对⾓线的位置。
专题三,程序流程控制
脚本⽂件:可在命令⾏窗⼝直接执⾏的⽂件,也称命令⽂件。M⽂件。
函数⽂件:定义⼀个函数,不能直接执⾏,⽽必须以函数调⽤的⽅式来调⽤它。利⽤function建⽴,例: function C = f2(A,B),C为输出量,A、B为输⼊量,f2必须与⽂件名相同。建⽴后可在窗⼝或其他M⽂件中调⽤。
⼀、顺序结构
(1)数据的输⼊:input函数,A=input(‘提⽰信息’)
(2)数据的输出:disp(输出项)
(3)程序的暂停:pause(延迟秒数),若在执⾏过程中强⾏终⽌程序,可以采⽤ctrl+c。
(4)步骤:
输⼊原始数据
对原始数据进⾏处理
输出处理结果
⼆、选择结构
1.if语句
语句格式: if 条件(关系运算或逻辑运算,⽤以判断)
语句组
end
单分⽀if语句:当条件结果为标量时,⾮零表⽰条件成⽴,零表⽰条件不成⽴;
当条件结果为矩阵时,如果矩阵为⾮空,且不包含零元素,则条件成⽴,否则不成⽴。
双分⽀if语句: if 条件
语句组
else
语句组
End
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论