【Matlab入门】 第一章 Matlab基础

avatar
作者
猴君
阅读量:1

【Matlab入门】第一章 Matlab基础

引言

你好!欢迎查看此系列笔记。为何说是笔记而不是教程呢,是因为这就是真真切切的我自己学习的记录,从R2022a版本到R2024a,这意味着该系列笔记可能会一直更新下去,倘若有重大更迭,我也会及时更新。观看者遇到问题,可以在评论区反馈,我争取及时交流修改。初始笔记均以R2022a版本为基准,后续补充或修改内容将以最新版作为基准。此系列笔记可能不是全站最好的,但是我会努力做到最完备。笔记采用循序渐进的方式,譬如第一章我不会讲点乘,而是在第二章矩阵后才会讲。

第一章 Matlab基础

本章从初学者角度入手,从Matlab界面,运算符,数据类型,到基本函数和数学量,基本操作。让你能看懂matlab,会常识。

一、初识界面

R2022a界面

R2022a初始界面

我没有对界面做箭头标注,一是因为我懒(直言不讳,嘿嘿),二是避免许多人保存图片收藏学习的行为,知识只有学到脑子里才是知识,收藏和收集具有成瘾性。

在这里插入图片描述

R2022a菜单栏和工具栏

再回到界面来,最上方是菜单栏和工具栏(这一部分你们可能比我的格子多),包含了许多工具和附加计算器,由于本系列教程均由基本代码实现,所以你点击它的机会很少。可以看到官方将标题栏分为了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 
Ⅵ 符号变量

在本系列更新到第四章(方程求解)的时候,我认识到需要补充符号变量这一概念。在 MATLAB 中,syms()函数用于定义符号变量。符号变量是一种特殊类型的变量,用于表示数学表达式中的符号和变量,而不是数值。在定义符号变量之后,我们可以使用其进行计算,例如求解方程、求导、积分、求极限、求解线性代数问题等。需要注意的是,符号计算是一种复杂的运算,通常比数值计算更慢,并且可能会导致精度损失。因此,在使用符号计算时应该注意控制计算的复杂度和精度,以避免出现不必要的错误。
简单来说,符号变量就是为求未知量而生的,倘若用普通的变量,无法达到求未知的效果。
详细的符号变量使用方法请见第四章(解方程)和第五章(微积分计算和级数展开)。

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位)和分数形式:

1. 单精度形式

>> format short;pi  ans =      3.1416  

2.双精度形式

>> format long;pi  ans =     3.141592653589793 

3.分数形式

>> format rat;pi  ans =       355/113   

4.我为什么使用format函数来介绍小数类型

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。i和j都默认为虚数单位,自定义变量的时候注意避开。

10.disp函数(窗口显示函数)

disp 函数用于在命令窗口中显示数据。它可以接受各种类型的输入数据,包括数字、字符向量、字符数组、逻辑值、结构体、单元格数组、函数句柄等等(其中很多对于初学者都没必要了解)。
该函数的输出形式是根据输入数据的类型和大小自动确定的。对于单个数字或字符向量,输出结果是一行文本。对于多行文本或大型数据结构(譬如矩阵),输出结果可能会跨多行,并自动换行以适应命令窗口的大小。来个代码块试试看:

>> x = [1,2,3;4,5,6;7,8,9];y = 11;disp(x),disp(y)      1     2     3      4     5     6      7     8     9      11 

注意disp函数的输入内容是单一的,不能输入多个同时输出。

11.窗口小命令(软件交互)

clc函数清空命令行窗口内容,clear清除所有变量,close all关闭所有的figure窗口(譬如生成的函数图像窗口,第三章会讲到),clear all:清除工作空间的所有变量、函数。clear 变量名还可以清楚指定的变量;esc按钮:清除你正在编辑的命令行;按下tab:补全代码;quit:关闭matlab。

六、小技巧:极其方便的修正手法

有时输入表达式发生错误,当按下回车后认识到需要修改其中一点代码,只需要方向键向上移动,此时会自动补全上方的历史代码,修正错误,然后按下回车重新运行即可。

七、代码注释方法

1.我们为什么要注释代码

作为一个程序员(只要你使用的是高级语言),编写代码时,最好添加描述代码的注释。注释有助于其他人员理解代码,并且有助于我们在稍后返回代码时再度记起这段代码的作用。在代码开发和测试期间,还可以使用注释来注释掉任何不需要运行的代码。在实时编辑器中,可以在代码前后插入文本行来描述过程或代码。
由于matlab语言和其他高级语言的相似性,代码移植时展现的功能性说明显得必不可少。所以我们不光要做注释,还要做的好。同样的,matlab的代码注释也分单行和多行。

2.单行注释方式

既可以单起一行专门放注释,还可以在某一句代码后方跟一句注释,符号为%,单行注释内容在该符号的右侧添加:

>> % 定义变量x和y >> x = 5;y = 6 % 定义完毕 

3.多行注释方式

还是使用百分号,但是为了续行输入我们的注释,还需要用大括号括起来,格式为%{…内容…%}

>> %{ 这是一段代码注释 “Hello world!%} 

在为什么要添加注释的部分中,还提到了可以利用注释将不运行的代码"封装起来"。也是利用了多行注释的方式:

a = magic(3); %{ sum(a) diag(a) sum(diag(a)) %} sum(diag(fliplr(a))) 

3-5行的代码都不会被执行,如有运行需要,直接放出来即可。更加复杂的代码注释方式我不再介绍,对于语言学习者我更提倡直接输入注释代码。

八、文件基础(包括导入、保存等)

1.保存

Ⅰ 保存mat格式文件(位置参考第一部分的界面介绍)

  • 找到变量菜单区
  • 选择“保存工作区为”
  • 输入文件名点击保存

Ⅱ 变量的保存:使用命令save 文件名 变量名列表将变量存入指定的mat文件中。譬如:

>>save 'monosaka.mat' a b 

或者:

>>save ('file1.mat','p','q') 

2.读取

Ⅰ 从 excel 文件读取数据

>> A = xlsread('monosaka.xlsx') 

此处的A可以为数,也可以为数组或者矩阵

Ⅱ 读入txt文本(这个我没有试过,权当了解),以下三条代码为具体格式。

>>[A,B,C,...] = textread(filename,format) >>[A,B,C,...] = textread(filename,format,N) >>[...] = textread(...,param,value,...) 

Ⅲ 变量的读取:

>>load(filename,'-mat',variables)  

本章节更新记录

2024.2.13首次发布。
2024.2.14一次修订:优化了目录,便于查找。
2024.2.16二次修订:添加了符号变量内容和代码注释方法、disp显示函数。

[1]:Matlab公司Mathworks官网-帮助中心

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!