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