第 4 章 编程基础
- 作者
- Name
- 青玉白露
- Github
- @white0dew
- Modified on
- Reading time
- 11 分钟
阅读:.. 评论:..
在前面的章节中,我们已经初步了解了 MATLAB 的基本操作和数据可视化功能。现在,让我们进一步探索 MATLAB 作为一种编程语言的强大功能。本章将介绍 MATLAB 编程的基础知识,包括变量与数据类型、流程控制、函数以及脚本文件的使用。通过学习这些内容,你将能够编写出更加复杂和实用的 MATLAB 程序。
4.1 变量与数据类型
在编程的世界里,变量就像是一个个存储数据的容器。MATLAB 支持多种数据类型,了解它们的特点和用法是编写高效代码的基础。
4.1.1 变量的定义和使用
在 MATLAB 中,定义一个变量非常简单,只需要给它一个合法的名称并赋予某个值即可。变量名需要以字母开头,可以包含字母、数字和下划线,但不能使用 MATLAB 的关键字。下面是一个变量定义的例子:
x = 10; y = 'Hello, MATLAB!';
在这个例子中,我们定义了一个数值变量 x
和一个字符串变量 y
。你可以在命令行窗口中输入变量名并按下回车键来查看变量的值:
>> x x = 10 >> y y = 'Hello, MATLAB!'
变量的值可以被重新赋值,例如:
x = 20;
这样,变量 x
的值就被更新为 20
了。
4.1.2 常见数据类型
MATLAB 支持多种数据类型,下面是一些常见的数据类型:
- 数值型: 包括整数和浮点数。例如
1
,3.14
,-2.5
等。 - 字符串型: 由单引号括起来的字符序列。例如
'Hello, world!'
。 - 逻辑型: 只有两个可能的值,
true
和false
。 - 单元数组: 用花括号
{}
括起来的、可以包含不同类型元素的数据容器。 - 结构体: 一种把多个不同类型的数据组合成一个整体的数据类型。
下面是这些数据类型的一些示例:
% 数值型 x = 10; y = 3.14; % 字符串型 str = 'I love MATLAB!'; % 逻辑型 a = true; b = false; % 单元数组 cell_arr = {'Hello', 123, [1, 2, 3]}; % 结构体 student.name = 'John'; student.age = 18; student.scores = [85, 92, 88];
4.1.3 数据类型的转换
有时候,我们需要将一种数据类型转换为另一种数据类型。MATLAB 提供了一系列的转换函数,例如:
num2str
: 将数值转换为字符串。str2num
: 将字符串转换为数值。int2str
: 将整数转换为字符串。mat2cell
: 将矩阵转换为单元数组。cell2mat
: 将单元数组转换为矩阵。
下面是一个类型转换的例子:
x = 10; str = num2str(x); disp(['x is ' str]); % 输出 "x is 10"
在这个例子中,我们首先定义了一个数值变量 x
,然后使用 num2str
函数将其转换为字符串 str
,最后使用 disp
函数将转换后的结果输出。
掌握数据类型的使用和转换,能够帮助我们更加灵活地处理各种类型的数据。
4.2 流程控制
在编程中,我们常常需要根据不同的条件执行不同的操作,或者重复执行某些操作。这就需要用到流程控制语句。MATLAB 提供了多种流程控制语句,包括条件语句和循环语句。
4.2.1 条件语句
条件语句允许我们根据某个条件的真假来决定执行哪些代码。MATLAB 主要有以下几种条件语句:
if
if-else
if-elseif-else
switch-case
下面是一个 if-else
语句的例子:
x = 10; if x > 5 disp('x is greater than 5'); else disp('x is less than or equal to 5'); end
在这个例子中,如果 x
的值大于 5,就会输出 "x is greater than 5",否则会输出 "x is less than or equal to 5"。
switch-case
语句可以处理多个条件,例如:
grade = 'B'; switch grade case 'A' disp('Excellent!'); case 'B' disp('Good job!'); case 'C' disp('Well done!'); case 'D' disp('You passed!'); case 'F' disp('Better luck next time!'); otherwise disp('Invalid grade'); end
在这个例子中,根据 grade
的值的不同,会输出不同的结果。
4.2.2 循环语句
循环语句允许我们重复执行某些代码。MATLAB 主要有以下两种循环语句:
for
循环: 重复执行指定次数。while
循环: 当某个条件为真时重复执行。
下面是一个 for
循环的例子,计算从 1 加到 10 的结果:
sum = 0; for i = 1:10 sum = sum + i; end disp(sum); % 输出 55
下面是一个 while
循环的例子,计算从 1 加到 10 的结果:
sum = 0; i = 1; while i <= 10 sum = sum + i; i = i + 1; end disp(sum); % 输出 55
4.2.3 跳出循环
有时候,我们需要在满足某个条件时提前跳出循环。MATLAB 提供了 break
和 continue
两个关键字来实现这个功能:
break
: 跳出当前循环。continue
: 跳过当前循环的剩余部分,直接进入下一次循环。
下面是一个使用 break
的例子,找出第一个大于 5 的数:
for i = 1:10 if i > 5 break; end end disp(i); % 输出 6
下面是一个使用 continue
的例子,计算 1 到 10 之间所有奇数的和:
sum = 0; for i = 1:10 if mod(i, 2) == 0 % 如果 i 是偶数 continue; end sum = sum + i; end disp(sum); % 输出 25
4.3 函数
函数是一段可重复使用的代码,它接受某些输入,执行特定的操作,然后返回结果。使用函数可以让我们的代码更加模块化和易于维护。
4.3.1 函数的定义和调用
在 MATLAB 中,我们可以使用 function
关键字来定义一个函数。函数可以接受多个输入参数,并通过 return
语句返回结果。下面是一个简单的函数定义的例子:
function result = add(a, b) result = a + b; end
这个函数名为 add
,接受两个输入参数 a
和 b
,返回它们的和。
要调用一个函数,只需要在命令行或其他代码中输入函数名和括号,并提供必要的输入参数即可。例如:
>> result = add(1, 2) result = 3
4.3.2 函数参数和返回值
函数可以接受多个输入参数,也可以返回多个值。多个输入参数之间用逗号分隔,多个返回值也用逗号分隔,或者使用方括号括起来。下面是一个接受两个参数并返回两个值的函数的例子:
function [sum, diff] = sumAndDiff(a, b) sum = a + b; diff = a - b; end
这个函数接受两个输入 a
和 b
,返回它们的和与差。调用这个函数的方式如下:
>> [sum, diff] = sumAndDiff(10, 5) sum = 15 diff = 5
4.3.3 局部变量和全局变量
在函数内部定义的变量称为局部变量,它们只在函数内部有效。在函数外部定义的变量称为全局变量,它们可以在所有函数中访问。
默认情况下,在函数内部定义的变量都是局部变量。如果要在函数内部访问全局变量,需要使用 global
关键字。下面是一个使用全局变量的例子:
global count; % 声明全局变量 count function increment() global count; % 在函数内部声明 count 为全局变量 count = count + 1; end count = 0; % 初始化全局变量 increment(); increment(); disp(count); % 输出 2
在这个例子中,我们首先声明了一个全局变量 count
,然后在函数 increment
内部对其进行自增操作。
4.3.4 匿名函数和嵌套函数
除了使用 function
关键字定义的普通函数外,MATLAB 还支持匿名函数和嵌套函数。
匿名函数是一种没有函数名的函数,它们通常用于一次性的小任务。下面是一个匿名函数的例子:
square = @(x) x^2; disp(square(5)); % 输出 25
在这个例子中,我们定义了一个计算平方的匿名函数,并将其赋值给变量 square
。然后,我们就可以像调用普通函数一样调用这个匿名函数了。
嵌套函数是定义在另一个函数内部的函数。它们可以访问父函数的变量。下面是一个嵌套函数的例子:
function outer x = 10; inner(); function inner disp(x); end end outer(); % 输出 10
在这个例子中,函数 inner
定义在函数 outer
内部。inner
可以直接访问 outer
中定义的变量 x
。
4.4 脚本与函数文件
除了在命令行窗口中直接执行代码外,我们还可以将代码保存到文件中,然后运行这些文件。MATLAB 支持两种类型的代码文件:脚本文件和函数文件。
4.4.1 脚本文件的创建和运行
脚本文件是一种包含一系列 MATLAB 命令的文本文件,它们通常用于执行一些简单的、线性的任务。脚本文件的扩展名为 .m
。
要创建一个脚本文件,可以使用 MATLAB 的编辑器。在命令行窗口中输入 edit
命令,然后在打开的编辑器中输入代码,最后保存文件即可。例如,我们可以创建一个名为 hello.m
的脚本文件,其内容如下:
disp('Hello, MATLAB!');
要运行一个脚本文件,只需在命令行窗口中输入文件名(不带扩展名)即可。例如,要运行 hello.m
,只需输入:
>> hello Hello, MATLAB!
4.4.2 函数文件的创建和调用
函数文件也是一种 .m
文件,但它们主要用于定义函数。每个函数文件应该只包含一个同名的主函数,以及任意数量的局部函数。
要创建一个函数文件,过程与创建脚本文件类似。唯一的区别是,函数文件的第一行应该是函数定义。例如,我们可以创建一个名为 add.m
的函数文件,其内容如下:
function result = add(a, b) result = a + b; end
要调用一个函数文件中定义的函数,只需在命令行或其他代码中输入函数名和括号,并提供必要的输入参数即可。例如:
>> result = add(1, 2根据您的要求,我将继续输出第4章节的剩余内容。以下是从上一次输出的内容开始的延续: ```matlab >> result = add(1, 2) result = 3
4.4.3 脚本与函数的区别和应用
虽然脚本文件和函数文件都可以用来组织和执行 MATLAB 代码,但它们有一些重要的区别:
- 脚本文件中的代码在当前工作区间执行,可以直接访问和修改工作区间中的变量。而函数文件有自己独立的工作区间,不能直接访问外部的变量。
- 脚本文件通常用于执行一些简单的、线性的任务,如数据处理、结果分析等。而函数文件通常用于定义可重复使用的功能模块。
- 脚本文件可以直接运行,而函数文件需要被调用。
在实际应用中,我们通常将一些通用的、可重复使用的功能定义在函数文件中,然后在脚本文件中调用这些函数来完成特定的任务。这样可以使我们的代码更加模块化和易于维护。
小结
在本章中,我们深入探讨了 MATLAB 编程的基础知识,包括:
- 变量与数据类型的定义和使用。
- 流程控制语句,包括条件语句和循环语句。
- 自定义函数的创建和调用。
- 脚本文件和函数文件的区别和应用。
掌握这些内容,你就可以使用 MATLAB 编写出功能强大的程序了。在接下来的章节中,我们将继续探讨 MATLAB 的更多高级主题,如数据处理、信号分析、图像处理等。让我们继续前进,成为 MATLAB 编程的高手吧!
练习题
-
创建一个函数
calculateBMI
,接受两个参数:身高(单位:米)和体重(单位:千克),计算并返回 BMI 值(Body Mass Index,体重除以身高的平方)。 -
创建一个脚本文件
calculateGrade
,根据学生的分数(0-100)输出相应的等级:- 90-100: A
- 80-89: B
- 70-79: C
- 60-69: D
- 0-59: F
-
创建一个函数
isPrime
,接受一个正整数作为参数,如果该数是质数则返回true
,否则返回false
。 -
创建一个脚本文件
区间内的图像。plotSinCos
,绘制正弦函数和余弦函数在 -
创建一个函数
factorial
,使用递归计算非负整数的阶乘。