MATLAB快速入门(二)

一.简介

本篇参考官方入门文档编写

前提准备:

  1. MATLAB

二. 快速入门(二)

1. 文本和字符

image-20220721202119421

image-20220721202131456

字符串数组中的文本

当您处理文本时,将字符序列括在双引号中。可以将文本赋给变量。

t = "Hello, world";

如果文本包含双引号,请在定义中使用两个双引号。

q = "Something ""quoted"" and something else."
q = 
	"Something "quoted" and something else."

与所有 MATLAB® 变量一样,tq 为数组。它们的或数据类型是 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. 调用函数

image-20220721202728086

image-20220721202749263

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)

Figure contains an axes object. The axes object contains an object of type line.

可以标记轴并添加标题。

xlabel("x")
ylabel("sin(x)")
title("Plot of the Sine Function")

Figure contains an axes object. The axes object with title Plot of the Sine Function contains an object of type line.

image-20220721203513898

通过向 plot 函数添加第三个输入参数,您可以使用红色虚线绘制相同的变量。

plot(x,y,"r--")

Figure contains an axes object. The axes object contains an object of type line.

image-20220721203556972

"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

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent sin, cos.

image-20220721204055402

三维绘图

三维图通常显示一个由带两个变量的函数 z=f(x,y) 定义的曲面图。例如,对于给定的行向量和列向量 xy,每个向量包含 [-2,2] 范围内的 20 个点,计算 z=x**ex2−y2 。

x = linspace(-2,2,20);
y = x';
z = x .* exp(-x.^2 - y.^2);

然后,创建曲面图。

surf(x,y,z)

Figure contains an axes object. The axes object contains an object of type surface.

surf 函数及其伴随函数 mesh 以三维形式显示曲面图。surf 使用颜色显示曲面图的连接线和面。mesh 生成仅以颜色标记连接线条的线框曲面图。

image-20220721204142769

多个绘图

您可以使用 tiledlayoutsubplot 在同一窗口的不同部分显示多个绘图。

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")

Figure contains 4 axes objects. Axes object 1 with title Sine contains an object of type line. Axes object 2 with title Cosine contains an object of type line. Axes object 3 with title Tangent contains an object of type line. Axes object 4 with title Secant contains an object of type line.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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

还可以使用编辑器中的运行按钮 img 运行脚本。

image-20220721205131278

实时脚本

您可以使用实时脚本中的格式设置选项来增强代码,而不是以纯文本编写代码和注释。实时脚本有助于您查看代码和输出并与之交互,还可以包含格式化文本、方程和图像。

例如,通过选择另存为并将文件类型更改为 MATLAB 实时代码文件 (*.mlx),将 mysphere 转换为实时脚本。然后,用格式化文本替换代码注释。例如:

  • 将注释行转换为文本。选择以百分比符号开头的每一行,然后选择文本img。删除百分比符号。
  • 重写文本以替换代码行末尾的注释。要将等宽字体应用于文本中的函数名,请选择 M。要添加方程,请在插入选项卡上选择方程

Text and font options are in the Text section of the Live Editor tab.

要使用 edit 命令创建新的实时脚本,请在文件名中包含 .mlx 扩展名:

edit newfile.mlx

image-20220721205642321

循环及条件语句

在任何脚本中,您都可以定义按循环重复执行或按条件执行的代码段。循环使用 forwhile 关键字,条件语句使用 ifswitch

循环在创建序列时很有用。例如,创建一个名为 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 文件夹位于此搜索路径中。如果要将程序存储在其他文件夹,或者要运行其他文件夹中的程序,请将其添加到此搜索路径。在当前文件夹浏览器中选中相应的文件夹,右键点击,然后选择添加到路径

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值