Matlab[入门向]攻略

首先自我介绍一下,我是即将升入大二的学生党,为了准备数学建模比赛而学的matlab,这篇文章呢其实类似于我的学习笔记吧,一开始我只是想把它用来记录各种各样的函数方便以后查找,写着写着就变成这样了。我是一边看网课一边把函数记下来在CSDN上搜,也写进了我的一些理解,因为主要是为了建模所以略有侧重,请谅解!

首先熟悉界面:中间的命令行窗口,就是输入指令的地方,可以打入代码也可以利用已经做好的脚本来直接进行运算。
右上角的工作区可以看自己已经命令的变量(区分大小写)的具体值,而赋值的方法就是在命令行窗口打入(变量名=…),删除变量的方式为 clear+变量名。(全部清除可以clear all)
如果没有明确的赋给某一个变量,系统会储存在ans里面
若变量名和函数名重复,则优先使用变量。
标准函数名和命令名必须小写。
右下角的命令历史记录可以看见自己曾经做过什么,具体到每一步。

首先matlab可以直接进行数学运算,只需要打入表达式,就可以得到答案。
在这里插入图片描述
但是需要注意的是,在对数运算中,并不是所有的数都可以当底,可以用的有三个:e,2,10
其形式分别为:log();log2();log10();
如果想引用自然常数e,直接用e是肯定不行的,因为matlab将他认定为一个变量而并非数值,所以这里要引用一个函数:exp(),它的具体意思是以e为底的指数函数(不能只输入exp)
在这里插入图片描述
为了引用方便,可以设置一个变量等于exp(1)
至于其他的对数函数,基本可以用换底公式写出,比如log3(6),可以写成log6/log3
当屏幕上的指令太多时,可以直接输入clc清空指令。

数组
直接输入法:
在这里插入图片描述
逗号可以用空格代替(有的说;可以用回车代替,但是目前我做的每次回车都直接输入完成)
如果直接输入可能会出错的话,那第二种就比较方便了
首先创建一个空数组
在这里插入图片描述
再右上角双击你创建的变量(方向键)
在这里插入图片描述
接着输入就可以了
空数组其实很实用
可以这样
在这里插入图片描述
这样是去掉第三行的数
引申一下可以这样
在这里插入图片描述
这样可以单独换某一行(列)

[m,n]=size(a)获取数组的行列

冒号表达式
e1:e2:e3—e1开始e3结束,步长为e2的行向量
Linspace(a,b,n)
第一个元素,最后一个元素,元素总数

结构矩阵
格式:结构矩阵元素.成员名=表达式(可输入不同数值类型赋值),使用时,也只需输入类似的结构体代码即可调用。
单元矩阵
用{}代替[]直接输入
引用矩阵元素:
1.通过下标引用
可以改变单个元素:A(3,2)=
可以拓展矩阵(给未定义到的元素赋值,从而拓展矩阵)
2.序号
矩阵元素按列储存
在这里插入图片描述
m*n矩阵元素A(i,j)的序号为(j-1)m+i
Reshape改变矩阵形状
Reshape(x,a,b)将x变为a行b列的矩阵
在这里插入图片描述
B/A等效于B
inv(A)
A\B等效于inv(A)*B
范德蒙矩阵:vander(v)形成以向量V为基础的范德蒙矩阵
点运算
n阶希尔伯特矩阵:行数的倒数一直到(行数+n-1)的倒数
H(i,j)=(i+j-1)
Hilb(n)
伴随矩阵:campan
帕斯卡矩阵(根据二项式定理,(x+y)^n展开后系数随着n的增大组成一个三角形,
这个三角成为杨辉三角形)
把二项式系数依次填写在矩阵的左侧对角线上,然后提取左侧的n行n列元素即为帕斯卡矩阵
Pascal(n)

提取矩阵的对角线元素
Diag(a):提取a主对角线元素,产生一个列向量
在这里插入图片描述在这里插入图片描述
Diag(a,k):提取矩阵a第k条对角线的元素,产生一个列向量(k应该是从除主对角线开始第几条)
构造对角矩阵
Diag(v)%v是向量
以向量v为主对角线元素,产生对角矩阵
Diag(v,k)以向量v为第k条对角线元素,产生对角矩阵
上三角矩阵:triu
Triu(a):提取矩阵A的主对角线及以上的元素
Triu(a,k)提取第k条对角线及以上的元素
下三角:tril(用法同triu)
转置运算符(.’)
矩阵的旋转:rot90(a,k)将矩阵a逆时针选抓90的k倍,k为1可以省略
矩阵的翻转:fliplr(a)左右翻转
上下翻转:flipud(a)

行列式det
特征值eig
秩rank
逆inv
迹trace(等于矩阵的对角线元素之和,也等于矩阵的特征值之和)
范数:向量1-范数:向量元素的绝对值之和----norm(v,1)
向量2-范数:向量元素平方和的平方根—norm(v)或norm(v,2)
向量∞-范数:所有向量元素绝对值中的最大值—norm(v,inf)
矩阵的1-范数:矩阵列元素绝对值之和的最大值
矩阵2-范数A’A矩阵的最大特征值的平方根
矩阵的∞范数:所有矩阵行元素绝对值之和的最大值
条件数cond
矩阵A的条件数等于A的范数与A的逆矩阵的范数的乘机
条件数越接近1,矩阵性能越好,反之,矩阵性能越差
(性能越好代表解出的值越准确?我看了百度大概是这么理解的。。。)
Cond(A,1)计算A的1-范数下的条件数
Cond(A)或cond(A,2)计算A的2-范数下的条件数
Cond(A,inf)计算A的∞-范数下的条件数
特征值与特征向量
作为学生党,主要是为了建模才接触的matlab,跟老师沟通后发现矩阵这些并不是很重要,所以就记到这里,主要学习的还是编程方面的知识。

程序文件:脚本文件(命令文件)和函数文件(定义一个函数,必须以函数调用的方式来调用)
创建:1.用命令按钮
3.用edit(直接edit接文件名,选定文件位置后会直接开始输入)

建立函数文件:在新建中选择函数
格式:函数声明行:function 因变量=函数名(自变量)
H1行:以%开头作为注释,包括大写函数名和函数功能的主要描述,采用lookfor命令可在命令行窗口显示H1行信息,尽量用英文表述。
在线帮助文本区:包括H1行以及H1之后的连续的以%开头的注释行,通常包括函数输入变量和输出变量的含义以及调用说明
编写以及修改记录:。。。。
函数主体:记录函数功能
(啊,我原来只是想看看有什么没见过的函数啥的,怎么说,这个如果一直保持正确的习惯总是一件好事ovo)
匿名函数:
函数句柄变量=@(匿名函数输入参数)匿名函数表达式

1.顺序结构
按顺序执行命令:
[1]数据的输入:A=input(提示信息,选项);%提示信息是字符串,用于提示
[2]数据的输出:disp(输出项)
[3]程序的暂停:pause(延迟秒数),若不打秒数则一直暂停直到按任意键;强行中止可以用CTRL+C
2.If实现选择结构
由给定条件来决定程序的执行流程
[1]单分支if;若条件成立,执行语句组,不成立跳过,判断条件成立不成立看是不是0(和C语言很像…没学过其他的)%若条件为矩阵,矩阵非空且不包含0元素(一!个!都!不!能!有!),则成立%
格式:if 条件(关系运算或逻辑运算)
语句组
End
[2]双分支if;成立走if的语句组,不成立走else的语句组(if else)。
[3]多分支if:只会执行一个分支
if
elseif
Else

Break 和continue
Break 语句用来跳出循环体
continue用来结束本次循环,接着判断下一个(拓宽定义域)
3.Switch选择
Switch
case结果表1
语句组1
Case 结果表2
语句组2

Otherwise
语句组n
End
Case只要符合条件就跳出

4.For实现循环(明确循环次数)
For 循环变量=初值:步长:中值
循环语句
End
for 循环变量=矩阵
将矩阵每个列向量依次赋给变量
For语句针对向量的每一个元素执行一次循环体,退出循环后,循环变量的值就是向量中最后的元素值
可用于算积分
蒙特卡洛我打算在下一篇里写,因为这篇主要是介绍matlab就不赘述了

5.While实现循环
While 条件
循环体语句
End

6.函数文件的定义和调用
在!上!边!
7.函数的递归和调用
8.函数参数与变量的作用域
这些在我看来都是比较偏向于技巧方面的,所以就不写了,可能下一篇会写。。。

俩矩阵点运算是指对应元素进行运算(向量)
若变量为向量形式,函数表达式中应用点运算才可以对应的上
关系运算:<,<=,>,>=,==,~=判断成立输出1,不成立输出-
运算优先级:算数>关系>逻辑
find函数找到的是序号。(x=find(…)s=f(x)可以求出所需值)
在这里插入图片描述
在这里插入图片描述
数值型数据
字符型(字符串)数据
用单引号括起来的字符序列
X=’’
X()表示第几个东西(包括空格)
X(;)表示取‘’中的前一位到后一位的元素
若字符串中含有单引号,则要用俩个单引号表示
字符串矩阵若各行数量不相等时,要用空格填补上
在这里插入图片描述
字符串的执行:eval(字符串)
在这里插入图片描述
Abs函数绝对值
在这里插入图片描述
Double函数将字符串转化为数字
在这里插入图片描述
Char函数将数字转化为字符串(0~255)
在这里插入图片描述
Acos反余弦
Asin反正弦
Atan反切

rem(x,y):求整除x/y的余数
在这里插入图片描述
Mod(x,y):求模
Rem(x,y)=x-y.*fix(x./y)(fix()向0取整)
Mod(x,y)=x-y.*floor(x./y)(floor()向左取整)
若x,y符号相同,则rem(x,y)=mod(x,y);
若符号相反,则mod(x,y)=rem(x,y)+y
1.Strcmp(s1,s2)判断字符串是否相等
在这里插入图片描述
2.strncmp(s1,s2,n)判断字符串前n个字符是否相等
在这里插入图片描述
3.strcmpi(s1,s2)在忽略字母大小写判断字符串是否相等
在这里插入图片描述
4.strncmpi(s1,s2,n)在忽略大小写判断字符串前n个是否相等
长度函数:length

在这里插入图片描述
平方根函数:sqrt
Ceil向正无穷取整
Fix向零取整
Floor向负无穷取整
Round四舍五入取整
自然指数函数:exp
Findstr(,)返回短字符串在长字符串的开始位置
在这里插入图片描述
Strrep(s1,s2,s3)将字符串s1中的所有s2替换为s3
在这里插入图片描述
i和j代表虚数单位
Pi代表圆周率

非:~ 、与 :&、 或:|、 不等于 : ~=
:(省略号)
画图:
线型 线方式: - 实线 :点线 -. 虚点线 - - 波折线。
线型 点方式: . 圆点 +加号 * 星号 x x形 o 小圆
颜色: y黄; r红; g绿; b蓝; w白; k黑; m紫; c青.

Plot
用法1:描绘点的轨迹
在这里插入图片描述
这里的横坐标默认为第几个数字。
2:plot(,)
俩变量前横后纵在这里插入图片描述
3#grid 网格
xlabel()ylabel()x轴y轴标记
加入字符串
Text(,,)
前两个俩坐标,最后一个输入的内容
Gtext()直接选择输入点
控制坐标系
Axis[xmin xmax ymin ymax]
Axis equal xy轴单位长度相等
Axis square正方形
Axis off 清除坐标
Plotyy:可以表示出有俩个不同y轴标度的函数

在这里插入图片描述
bar(柱形图)柱形图
stairs(阶梯图)在这里插入图片描述
stem(俺也不知道这叫啥图反正很好看233333~)在这里插入图片描述
Title
用于标注图形的名称,必须在plot之后(可在hold on之前)
在这里插入图片描述
Hold on/off(plot第二个中有用到,可以参考那张图)
ON:保持原图并绘制新的函数
Off:刷新图形,显示中间绘制的函数
Legend(不适用于三维)
在这里插入图片描述
figure

Figure的用法:
1.创建一个窗口(直接figure)
2.可以添加标题之类的
Figure(‘name’,‘’)
figure
在这里插入图片描述
3.转入某个窗口或者创建某个窗口
Figure()
4.figure和contour的用法
看不懂contour啥意思就没写

subplot
在这里插入图片描述
(请忽略中间的错误,写错了我也觉得很羞耻,但是刚学是真的记不清楚,还有有的时候手快了拦不住23333~第二张图那个点是我为了验证一下有没有画错看看的)
这个大致格式就是subplot(a,b,c)a和b是图的行数和列数,c则是从左往右从上往下第几个,其他的都不变。
Subplot(a,b,[])若[]中为1,3则一和三合在一起成为一个大图
polar函数用来绘制极坐标图,调用格式为:polar(theta,rho,选项)
其中,theta为极坐标极角,rho为极径,选项的内容和plot函数相似。

在这里插入图片描述
饼图(各元素的比值)
Pie()
在这里插入图片描述
Pie(,explode)(个人猜测判断是否突起应该是0和非0,与具体数字无关
在这里插入图片描述
隐函数
Ezplot
三维图
Plot3(x,y,z)参数x,y,z组成一组曲线的坐标
Plot3(x,y,z,选项)
也可以xyz都是函数表达式,最后跟个定义域
三维曲面:mesh和surf
我的理解是以x,y为自变量来画z作为因变量函数的图
需要定义x和y的向量
Mesh和surf的区别,我查了一下子,没怎么看懂,大概是精细度不同,着色不同,
属性不同
剩下的我就不写了,这篇也到此为止,因为我发现这个课程和我参加比赛要用的东西有一定的出入。
不是说matlab的学习就到此为止了,以后我会就数学建模里常用的matlab再出一篇文章的。

猜你喜欢

转载自blog.csdn.net/qq_47482548/article/details/106908087
今日推荐