MATLAB快速入门(二)
一.简介
本篇参考官方入门文档编写
前提准备:
- MATLAB
二. 快速入门(二)
1. 文本和字符
字符串数组中的文本
当您处理文本时,将字符序列括在双引号中。可以将文本赋给变量。
1 | t = "Hello, world"; |
如果文本包含双引号,请在定义中使用两个双引号。
1 | q = "Something ""quoted"" and something else." |
1 | q = |
与所有 MATLAB® 变量一样,t
和 q
为数组。它们的类或数据类型是 string
。
1 | whos t |
注意
使用双引号创建字符串数组是在 R2017a 中引入的。如果您使用的是更早期的版本,请创建字符数组。有关详细信息,请参阅字符数组中的数据。
要将文本添加到字符串的末尾,请使用加号运算符 +
。
1 | f = 71; |
1 | tempText = |
与数值数组类似,字符串数组可以有多个元素。使用 strlength
函数求数组中每个字符串的长度。
1 | A = ["a","bb","ccc"; "dddd","eeeeee","fffffff"] |
1 | A = |
1 | strlength(A) |
1 | ans = |
字符数组中的数据
有时,字符表示的数据并不对应到文本,例如 DNA 序列。您可以将此类数据存储在数据类型为 char
的字符数组中。字符数组使用单引号。
1 | seq = 'GCTAGAATCC'; |
whos seq
1 | Name Size Bytes Class Attributes |
数组的每个元素都包含单个字符。
1 | seq(4) |
1 | ans = |
使用方括号串联字符数组,就像串联数值数组一样。
1 | seq2 = [seq 'ATTAGAAACC'] |
1 | seq2 = |
在字符串数组引入之前编写的程序中,字符数组很常见。接受 string
数据的所有 MATLAB 函数都能接受 char
数据,反之亦然。
2. 调用函数
MATLAB® 提供了大量执行计算任务的函数。在其他编程语言中,函数等同于子例程或方法。
要调用函数,例如 max
,请将其输入参数括在圆括号中:
1 | A = [1 3 5]; |
1 | ans = 5 |
如果存在多个输入参数,请使用逗号加以分隔:
1 | B = [3 6 9]; |
1 | ans = 1×5 |
通过将函数赋值给变量,返回该函数的输出:
1 | maxA = max(A) |
1 | maxA = 5 |
如果存在多个输出参数,请将其括在方括号中:
1 | [minA,maxA] = bounds(A) |
1 | minA = 1 |
用引号将任何文本输入括起来:
1 | disp("hello world") |
1 | hello world |
要调用不需要任何输入且不会返回任何输出的函数,请只键入函数名称:
1 | clc |
clc
函数清空命令行窗口。
3. 二维图和三维图
线图
要创建二维线图,请使用 plot
函数。例如,绘制在从 0 到 2π 的值组成的线性间距向量上的正弦函数:
1 | x = linspace(0,2*pi); |
可以标记轴并添加标题。
1 | xlabel("x") |
通过向 plot
函数添加第三个输入参数,您可以使用红色虚线绘制相同的变量。
1 | plot(x,y,"r--") |
"r--"
为线条设定。每个设定可包含表示线条颜色、样式和标记的字符。标记是在绘制的每个数据点上显示的符号,例如,+
、o
或 *
。例如,g:*"
请求绘制使用 *
标记的绿色点线。
请注意,为第一幅绘图定义的标题和标签不再被用于当前的图窗窗口中。默认情况下,每次调用绘图函数、重置坐标区及其他元素以准备新绘图时,MATLAB® 都会清空图窗。
要将绘图添加到现有图窗中,请使用 hold on
。在使用 hold off
或关闭窗口之前,当前图窗窗口中会显示所有绘图。
1 | x = linspace(0,2*pi); |
三维绘图
三维图通常显示一个由带两个变量的函数 z=f(x,y) 定义的曲面图。例如,对于给定的行向量和列向量 x
和 y
,每个向量包含 [-2,2] 范围内的 20 个点,计算 z=x**e−x2−y2 。
1 | x = linspace(-2,2,20); |
然后,创建曲面图。
1 | surf(x,y,z) |
surf
函数及其伴随函数 mesh
以三维形式显示曲面图。surf
使用颜色显示曲面图的连接线和面。mesh
生成仅以颜色标记连接线条的线框曲面图。
多个绘图
您可以使用 tiledlayout
或 subplot
在同一窗口的不同部分显示多个绘图。
tiledlayout
函数是在 R2019b 中引入的,该函数比 subplot
提供更多对标签和间距的控制。例如,在图窗窗口中创建 2×2 布局。然后,每当您要某个绘图出现在下一区域中时,请调用 nexttile
。
1 | t = tiledlayout(2,2); |
4. 编程和脚本
脚本是最简单的一种 MATLAB® 程序。脚本是一个包含多行连续的 MATLAB 命令和函数调用的文件。在命令行中键入脚本名称即可运行该脚本。
脚本
要创建脚本,请使用 edit
命令。
1 | edit mysphere |
该命令会打开一个名为 mysphere.m
的空白文件。输入代码,以创建一个单位球、将半径加倍并绘制结果图:
1 | [x,y,z] = sphere; |
接下来,添加代码以计算球的表面积和体积:
1 | A = 4*pi*r^2; |
编写代码时,最好添加描述代码的注释。注释能够让其他人员理解您的代码,并且有助于您在稍后返回代码时再度记起。使用百分比 (%
) 符号添加注释。
1 | % Create and plot a sphere with radius r. |
将文件保存在当前文件夹中。要运行脚本,请在命令行中键入脚本名称:
1 | mysphere |
还可以使用编辑器中的运行按钮 运行脚本。
实时脚本
您可以使用实时脚本中的格式设置选项来增强代码,而不是以纯文本编写代码和注释。实时脚本有助于您查看代码和输出并与之交互,还可以包含格式化文本、方程和图像。
例如,通过选择另存为并将文件类型更改为 MATLAB 实时代码文件 (*.mlx
),将 mysphere
转换为实时脚本。然后,用格式化文本替换代码注释。例如:
- 将注释行转换为文本。选择以百分比符号开头的每一行,然后选择文本、。删除百分比符号。
- 重写文本以替换代码行末尾的注释。要将等宽字体应用于文本中的函数名,请选择 。要添加方程,请在插入选项卡上选择方程。
要使用 edit
命令创建新的实时脚本,请在文件名中包含 .mlx
扩展名:
1 | edit newfile.mlx |
循环及条件语句
在任何脚本中,您都可以定义按循环重复执行或按条件执行的代码段。循环使用 for
或 while
关键字,条件语句使用 if
或 switch
。
循环在创建序列时很有用。例如,创建一个名为 fibseq
的脚本,该脚本使用 for
循环来计算斐波那契数列的前 100 个数。在这个序列中,最开始的两个数是 1,随后的每个数是前面两个数的和,即 Fn = Fn-1 + Fn-2。
1 | N = 100; |
运行该脚本时,for
语句定义一个名为 n
的计数器,该计数器从 3 开始。然后,该循环重复为 f(n)
赋值,n
在每次执行中递增,直至达到 100。脚本中的最后一条命令 f(1:10)
显示 f
的前 10 个元素。
1 | ans = |
条件语句仅在给定表达式为 true 时执行。例如,根据随机数的大小为变量赋值:'low'
、'medium'
或 'high'
。在本例中,随机数是在 1 和 100 之间的一个整数。
1 | num = randi(100) |
语句 sz = 'high'
仅在 num
大于或等于 67 时执行。
脚本位置
MATLAB 在特定位置中查找脚本及其他文件。要运行脚本,该文件必须位于当前文件夹或搜索路径中的某个文件夹内。
默认情况下,MATLAB 安装程序创建的 MATLAB
文件夹位于此搜索路径中。如果要将程序存储在其他文件夹,或者要运行其他文件夹中的程序,请将其添加到此搜索路径。在当前文件夹浏览器中选中相应的文件夹,右键点击,然后选择添加到路径。