matlab对大小写敏感,首字母必须为字母,命名最长长度为63
1.计算语法
2^(3.5*1.7)
- 不是 e^sin(10)
而是
exp(sin(10))
- ln在matlab中表示为log,ln10用matlab语句表示为log10
- π用pi表示
- sinπ,sin2π分别表示为
sinpi(1) sinpi(2)
-
5%2可以表示为5/2或者2\5。(记忆方式,斜杠偏向哪个数,哪个数就是被除数)
-
科学计数法表示:如,可以表示为3e8,(e可以换成E,d,D)
- rem(x,y)与x符号一致。mod(x,y)与y的符号一致。
2.matlab软件使用技巧
- ctrl+c可以强制停止matlab正在运行的程序
- 在命令行按上下可以查看快捷显示运行过的语句
- 命令行输入clc清空窗口指令,输入clear清空工作区的所有变量
- 在命令行输入脚本名可以执行脚本
- whos查看现有的变量和类型
- format compact命令可以在窗口输入时没有多余的空格;fomat loose可以取消这个操作
- format long可以使浮点数输出更多位的小数
- 若一条命令太长,可以在这条命令的第一行行末输入...,然后换行继续输入后面的命令
- 了解函数功能的5 种方式
- help 函数名:了解某种函数的功能表
- help elfum:了解多种内置函数的功能
- 在matlab软件右上方的搜索框也可进行搜索函数名来对函数进行了解,比help展示的要更为详细
- 输入函数名,再按f1可进入matlab官方解释文档了解函数
- 点击命令行前面的fx可以寻找函数进行了解
- 命令行输入脚本的前几个字母再按tab键会弹出选择框进行选择,可以自动补全脚本名
3.数据类型
- 单引号输入cahr类型,如'apple'为char类型;双引号输入string类型,"apple"为字符串类型
- inf为正无穷,-inf为负无穷
4.函数/符号/数据操作
生成随机数
1. rand(n,m)
若只有一个参数n,则表示生成元素处于(0,1)间的n阶矩阵
若有两个参数n和m,则表示生成元素处于(0,1)间的n行m列的矩阵
2. randi(a,b,c)
- 若a为一个列表[x,y]
表示生成元素大小为[x,y]之间的b行c列矩阵。(若没有参数c,则矩阵为b阶矩阵)
- 若a为一个数
表示生成元素大小为[1,a]之间的b行c列矩阵。(若没有参数c,则矩阵为b阶矩阵)
旋转/翻转矩阵
- flipud(m):把矩阵m按照横向对称轴进行上下翻转
- fliplr(m):把矩阵m按照竖向对称轴进行左右翻转
- flip(m)
- 如果m为行向量那么进行左右翻转,列向量则进行上下翻转
- 如果m为矩阵,那么只会将m的每列单独进行列向量的翻转。
- rot90(m):把矩阵逆时针旋转90°
min(m):取m每列的最小值
min(m'):取m每行的最小值
prod(m):求m每列的乘积
prod(m'):求m每行的乘积
cumsum(m):每一列单独进行逐渐累加
cumsum(m'):每一行单独进行逐渐累加
cumprod(m):每一列单独进行逐渐累乘
cumprod(m'):每一行单独进行逐渐累乘
cummax(m):每一列单独遍历寻找当前最大值(意思是,比如第一列进行遍历时,第一行最大值是?继续遍历到第一列第二行的数,最大值是?继续遍历到第一列的第三行的数,目前最大的数是?......)
cummax(m'):每一行单独寻找目前最大值
cummin(m):每一列单独遍历寻找当前最小值
cummin(m'):每一行单独遍历寻找当前最小值
- repmat(A,x,y):以矩阵为单位进行重复,重复x行,y列
- repelem(A,x,y):以矩阵A的每个元素为单位进行重复,每个元素重复x行y列
创建行、列向量
[a,b,c,d,e...]创建行向量
[a;b;c;d;e...]创建列向量,也可[a,b,c,d,e...]'创建列向量
在这里";"的意思是换行。'的意思是矩阵转置
.'表示转置,'表示共轭转置(虚数先取共轭数,再将矩阵进行转置)。对于虚数来说,使用'和.'的效果是不一样的。
如何取行向量or列向量中的值
- 对于行向量v(end可以代指最后一个元素的位置)
v(a):取第a个元素
v([a b c d...]):取第a,b,c,d...个元素
v([a:b]):取[a,b]位置区间的元素
v([a:b c d]):取[a,b]位置区间,还有第c个和第d个位置的元素
总的来说就是v([......])取元素操作,位置索引可以是数字也可以是切片表示,也可以是二者的组合
如何取矩阵中的值
- 两个参数:若m为一个矩阵。则可以用m( _ , _ )方式对m中的元素进行访问。前面的参数代表行,后面的参数代表列。每个参数的填写方式和访问行(列)向量的方式是一样的
- 一个参数:
从左到右,从上到下对元素的位置进行编号。在下图中v(9)的值就是-1
注意: 获取矩阵元素时,索引必须为正整数或者是和矩阵形状相同的逻辑矩阵
更改矩阵的值
m(1,:)=[1,2,3] 正确
m(1,:)=[1;2;3] 正确
m(1:2,1:2)=[7,8;9,10] 正确
m(1:2,1:2)=[7,8,9,10] 错误
改变一行或一列的值时,保证等号两边的元素个数相同就可以。
改变非一维矩阵时,赋值的内容的形状要和所更改的部分矩阵形状保持一致。元素数量也要一致
特例:如果等号右边为一个数字,那么不管被更改部分的形状和元素个数是什么样子,都是可以的
如何对矩阵的对角线,次对角线以及次次对角线进行赋值
diag(v)表示生成对角线为v的矩阵。(v为行向量或列向量)
diag(v,-1)表示生成次对角线为v的矩阵(主对角线下面的一条对角线)
diag(v,1)表示生成上次对角线为v的矩阵(主对角线上面的一条对角线)
diag(v,-2)表示生成次次对角线为v的矩阵(主对角线下下面的一条对角线)
空矩阵
E=[]可以创建空矩阵,空矩阵可以和任何一个矩阵粘合。
nan(x,0):生成x行0列的空矩阵
nan(0,y):生成0行y列的空矩阵
矩阵横向拼接/纵向拼接
用[]来对矩阵进行拼接
矩阵之间用逗号(,)或空格( )进行连接都表示横向拼接,要求矩阵之间的行数相同才能进行横向拼接
分号(;)表示纵向拼接,要求矩阵之间的列数相同才能进行纵向拼接
diff()函数
diff(x,n,dim)
x为行向量或者列向量时。沿着行或列的方向进行n次差分。
x为矩阵时,沿着dim指定的维度进行n次差分。(dim为1时是在列上进行差分,dim为2时在行上进行差分)
其他操作or函数
- i和j可以用来表示虚数。如果自命名变量中i和j,如i=2,那么2+3*i不是虚数,而是计算出来的数,这时j可以用来表示虚数,如果j也成为了变量名。那么可以这样表示虚数:2+3*1i。(因为1i和1j永远不会成为一个自命名变量的名字,是绝对安全的。2i,3i....都是一样的)
- rng()抛种子,如果括号中输入小数,那么matlab会自动处理为整数。如rng(0.3)和rng(0)的效果一样
- eye(n)生成n维单位矩阵
- 不等于表示为~=;~表示否定
- sign()返回数的符号。NAN和0返回值为0,正数为1,负数为-1。
- nthroot(x,y)表示求x的y次根。nthroot(8,3)的结果为2
- deg2rad()度数转换为弧度;rad2deg()弧度转换为度数。
- linspace(start,end,num)返回从start到end,个数为num的等差数列
- logspace(start,end,num)返回 从到,个数为num的等比数列
- 在matlab中,切片法表示的索引为,start:step:end。step默认值为1(在python中是start:end:step)
- length(m):返回m矩阵行数和列数中较大的数
- size(m):返回矩阵m的行数和列数
- numel(m):返回矩阵m的元素个数
- reshape(m,2,6):将矩阵的形状变为2行6列
- find(w>0):找到w矩阵中值大于0的位置(返回的位置索引是一个数表示的,而不是行和列的组合进行表示的位置)
- find(v):v为逻辑矩阵,返回v中真值为1的位置索引
- find(v,2,'first'):v为逻辑矩阵,找到v矩阵中前两个真值为1的位置