你好!欢迎查看此系列笔记。为何说是笔记而不是教程呢,是因为这就是真真切切的我自己学习的记录,从R2022a版本到R2024a,这意味着该系列笔记可能会一直更新下去,倘若有重大更迭,我也会及时更新。观看者遇到问题,可以在评论区反馈,我争取及时交流修改。初始笔记均以R2022a版本为基准,后续补充或修改内容将以最新版作为基准。此系列笔记可能不是全站最好的,但是我会努力做到最完备。笔记采用循序渐进的方式,譬如第一章我不会讲点乘,而是在第二章矩阵后才会讲。
本章从初学者角度入手,从Matlab界面,运算符,数据类型,到基本函数和数学量,基本操作。让你能看懂matlab,会常识。
我没有对界面做箭头标注,一是因为我懒(直言不讳,嘿嘿),二是避免许多人保存图片收藏学习的行为,知识只有学到脑子里才是知识,收藏和收集具有成瘾性。
再回到界面来,最上方是菜单栏和工具栏(这一部分你们可能比我的格子多),包含了许多工具和附加计算器,由于本系列教程均由基本代码实现,所以你点击它的机会很少。可以看到官方将标题栏分为了6个部分,第一个部分是文件处理类,参考各类办公软件,不再赘述,注意新建或者打开的格式通常都是mat格式;第二个部分是数据的导入和导出,通常也使用mat格式文件;第三部分比较重要的是代码效率分析;Simulink不用管,暂时用不到;然后是布局和路径设置;最后是在线帮助。
向下的部分比较单调,不再用单独的图片演示。左侧显示的是当前路径,中间的附带fx的窗口是命令行窗口,fx后有两个>,我们的代码就在这两个符号之后输入;右侧上下两栏分别是工作区栏(存放变量信息的)和历史记录栏(显示你用过的命令)。
1.变量
Ⅰ 命名原则:以字母或者下划线开头,但是很少用下划线开头,后面可以跟字母、数字和下划线,变量名严格区分字母的大小写(学过C语言的一定是倒背如流)。
Ⅱ通常的赋值格式:变量=表达式。右边的表达式,小到一个数字,大到一个方程或者矩阵,引用变量前必须赋值。
Ⅲ Matlab有一个内置的变量ans,倘若你没有定义新变量,值默认赋给ans,所以自己定义变量的时候要规避ans,以防发生混乱。本例计算了7和8的乘积并自动赋值给了ans:
>> 7*8
ans =
56
Ⅳ 变量的查询:who命令用于查看现实工作空间中的所有变量,whos可以用于查看工作空间中变量的详细属性:
>> a = 6
a =
6
>> b = 7
b =
7
>> who
您的变量为:
a b
>> whos
Name Size Bytes Class Attributes
a 1x1 8 double
b 1x1 8 double
运行完这一块代码,我们看到,matlab也是有数据类型的。
Ⅴ 引用变量的方式:直接调用变量名即可,其实matlab也有类似于C语言指针和JAVA类的东西,但是目前为止无需了解。例如,计算x = 56和3.5的乘积:
>>y = x * 3.5
y =
196
2.算数运算符
老生常谈,无非加减乘除幂运算
Ⅰ 一般的:加和减的优先级最低,乘和除的优先级第二,幂运算的优先级最高。除法运算中,右除\优先于左除/,同样的,优先级可以通过圆括号来改变,无需过于纠结。右除和左除需要严格区分,被除数和除数是完全相反的:
>>9/3
ans =
3
>> 9\3
ans =
0.3333
Ⅱ Matlab中没有求余运算符号,%并不代表求余。rem()和mod()函数专门用于求余(在本章第五部分再介绍)。作为一门语言,它和C类似,但是也有不同,切记不可过度联想,张冠李戴。
Ⅲ 补充:分号、续行符。在上方的代码示例中,每一句代码后方没有任何符号,赋一个值,后方输出重复一次,再输入大量代码的时候,显然会占用很大篇幅,可以在语句末尾加一个分号,仅赋值,但不求屏幕输出;续行符为三个点:… 用于屏幕换行的接续输入,接下来是代码展示:
>> a = 6;
>> b = 123 + 245 + ...
12345
b =
12713
“=”赋值运算符,介绍变量的时候已经提到过。我们这里还要介绍递归赋值这个特殊用法:
>> x = 86;x = x + 4
x =
90
作为初学者,我不会详细介绍Matlab中无关紧要的数值类型,这里仅对分数的表达方式做一定的区分,主要是单精度(4位)、双精度(15位)和分数形式:
Ⅰ 单精度形式:
>> format short;pi
ans =
3.1416
Ⅱ 双精度形式:
>> format long;pi
ans =
3.141592653589793
Ⅲ 分数形式:
>> format rat;pi
ans =
355/113
Ⅳ format函数主要用于设置输出格式,可以将数值用特定的方式来展示,所以此处用了format 格式;变量名的代码来展示不同的小数格式。根据官网,格式处的类型还可以为hex(16进制格式)、自定义的格式,在此不再介绍,感兴趣可自行研究。
1.上文中出现的pi:圆周率,使用时直接调用。
2.自然指数:exp(x),处为待定数,表示自然指数的x次方。特殊的,matlab中输入e不可直接输入,而要输入exp(1),如代码块所示,做个简单的运算验证一下:
>> log(exp(1))
ans =
1
3.对数:log(x) ,这是以e为底的对数函数。以其它为底时的格式:log底(x),譬如有log2(2)=1。
4.平方根:sqrt(x),x可以为负数,matlab会输出复数形式。
5.三角函数:和现实一样,直接按照现实的来表示,但是要注意反三角函数前缀不是arc,而是a。
6.inf和NaN:前者表示无穷大,除以0或者溢出等运算会产生inf,其次在变上限积分的运算中非常有用;后者表示既不是实数也不是复数的非数字值,比如0除以0或者inf除以inf的时候会产生NaN。
7.绝对值:函数为abs(),括号里内容为现实中绝对值号里的东西。
8.求余函数:rem(m,n)表示m除以n所得的余数,rem(x,0)的值是多少呢,你们自己想一下。还有mod(m,n)函数,也表示m除以n所得的余数。这两个函数有何区别呢。主要体现在符号上,rem的结果正负会随着m的正负变化而变化,对于n的符号变化爱答不理。而mod正好相反。
9.复数的表示:和现实一样,直接在虚部补个i。
10.窗口小命令(直接输入即可使用的):clc函数清空命令行窗口内容,clear清除所有变量,close all关闭所有的figure窗口(譬如生成的函数图像窗口,第三章会讲到),clear all:清除工作空间的所有变量、函数。clear 变量名还可以清楚指定的变量;esc按钮:清除你正在编辑的命令行;按下tab:补全代码;quit:关闭matlab。
有时输入表达式发生错误,当按下回车后认识到需要修改其中一点代码,只需要方向键向上移动,此时会自动补全上方的历史代码,修正错误,然后按下回车重新运行即可。
Ⅰ 保存:
1.保存mat格式文件(位置参考第一部分的界面介绍)
2.变量的保存:使用命令save 文件名 变量名列表将变量存入指定的mat文件中。譬如:
>>save 'monosaka.mat' a b
或者:
>>save ('file1.mat','p','q')
Ⅱ 读取:
1.从 excel 文件读取数据
>> A = xlsread('monosaka.xlsx')
此处的A可以为数,也可以为数组或者矩阵
2.读入txt文本(这个我没有试过,权当了解),以下三条代码为具体格式。
>>[A,B,C,...] = textread(filename,format)
>>[A,B,C,...] = textread(filename,format,N)
>>[...] = textread(...,param,value,...)
3.变量的读取:
>>load(filename,'-mat',variables)
[1]:Matlab公司Mathworks官网-帮助中心