MATLAB 期末复习知识点总结【上】

MATLAB 期末复习知识点总结

一、MATLAB 操作界面的窗口
MATLAB 操作界面主要包含以下几个核心窗口,熟练掌握各窗口功能是高效使用 MATLAB 的基础。

  1. 主窗口
    主窗口是 MATLAB 的核心界面,集成了菜单栏、工具栏和各种功能区。用户可以通过菜单栏执行文件操作、编辑、调试等命令;工具栏则提供了常用功能的快捷按钮,如新建、打开、保存文件等。此外,主窗口还可以根据用户需求自定义布局,方便同时查看多个工具窗口。
  2. 命令窗口(Command Window)
    命令窗口是与 MATLAB 进行交互的主要场所。用户可以在此输入各种 MATLAB 命令、函数调用和表达式,并立即获得计算结果。例如:
>> a = 5;       % 定义变量a
>> b = 3;       % 定义变量b
>> c = a + b    % 计算a+b的值并赋给c
c =    
     8

在命令窗口中,以%开头的内容为注释,用于解释代码功能,不会被 MATLAB 执行。
3. 工作空间窗口(Workspace)
工作空间窗口显示当前 MATLAB 会话中所有变量的信息,包括变量名、大小、类型、字节数和值。用户可以在此查看、修改或删除变量。例如,在命令窗口中定义变量后,工作空间窗口会相应显示这些变量的信息。双击变量还可以打开变量编辑器,直观地查看和编辑数组、矩阵等复杂数据结构。
4. 当前目录窗口(Current Folder)
当前目录窗口显示当前工作目录下的所有文件和文件夹。MATLAB 在执行文件操作时,会默认在当前工作目录中查找文件。用户可以通过该窗口浏览文件、切换工作目录,或对文件进行复制、粘贴、删除等操作。设置合适的工作目录可以避免文件路径错误,提高编程效率。
5. 命令历史窗口(Command History)
命令历史窗口记录了用户在命令窗口中输入的所有命令。用户可以双击历史命令来重新执行,或通过右键菜单对命令进行编辑、复制等操作。这对于重复执行相同命令或修改之前的命令非常方便,避免了重复输入的麻烦。
二、函数文件的命名和存储规则

  1. 命名规则
    函数文件名必须与函数名一致,且以.m为扩展名。例如,定义一个名为myFunction的函数,其文件必须命名为myFunction.m。
    函数名必须以字母开头,可以包含字母、数字和下划线,但不能包含空格或其他特殊字符。例如,calcSum_2是合法的函数名,而2calcSum或calc Sum是不合法的。
  2. 存储规则
    函数文件通常存储在 MATLAB 的搜索路径下,以便 MATLAB 能够找到并调用它们。用户可以通过addpath命令将自定义函数所在目录添加到搜索路径中。
    函数文件也可以存储在当前工作目录下,但这种方式不够灵活,建议将常用函数放在固定的搜索路径目录中。
    三、Inf,NaN,nargout,nargin 的含义
  3. Inf(无穷大)
    Inf表示数学中的无穷大,通常在计算结果超出 MATLAB 所能表示的数值范围时出现。例如:
>> 1/0
ans =
   Inf

Inf可以参与数学运算,其运算规则遵循数学中无穷大的运算规则。
2. NaN(非数)
NaN表示 “非数”(Not a Number),通常在计算结果无意义时出现。例如:

>> 0/0
ans =
   NaN

NaN的存在表示计算过程中出现了问题,需要检查输入数据或算法逻辑。
3. nargout(输出参数个数)
nargout是 MATLAB 中的一个特殊变量,用于在函数内部获取调用该函数时指定的输出参数个数。例如:

function [a, b] = myFunction(x)
    if nargout == 1
        a = x;
    elseif nargout == 2
        a = x;
        b = x^2;
    end
end

在这个例子中,函数myFunction根据nargout的值决定返回一个还是两个输出参数。
4. nargin(输入参数个数)
nargin是 MATLAB 中的另一个特殊变量,用于在函数内部获取调用该函数时提供的输入参数个数。例如:

function result = sumNumbers(a, b, c)
    if nargin == 2
        result = a + b;
    elseif nargin == 3
        result = a + b + c;
    end
end

在这个例子中,函数sumNumbers根据nargin的值决定执行不同的计算逻辑。
四、变量命名法则
MATLAB 中变量命名需要遵循以下规则:

变量名必须以字母开头,不能以数字或其他字符开头。例如,var1是合法的,而1var是不合法的。
变量名可以包含字母、数字和下划线,但不能包含空格或其他特殊字符。例如,my_var_2是合法的,而my-var或my var是不合法的。
变量名区分大小写。例如,Var和var是两个不同的变量。
变量名不能与 MATLAB 的内置函数名或关键字相同。例如,不能使用sin、if、for等作为变量名。
五、MATLAB 程序文件和 Simulink 模型文件的扩展名

  1. MATLAB 程序文件
    MATLAB 程序文件的扩展名为.m,包括脚本文件和函数文件。脚本文件是一系列 MATLAB 命令的集合,执行时按顺序逐行执行;函数文件则定义了一个或多个函数,需要通过函数调用才能执行。
  2. Simulink 模型文件
    Simulink 模型文件的扩展名为.slx,用于创建和仿真动态系统模型。Simulink 提供了直观的图形化界面,用户可以通过拖放模块、连接信号线来构建系统模型,并进行仿真分析。
    六、常见标点符号的用法
  3. 分号(;)
    用于语句结尾,表示不显示该行的执行结果。例如:
a = 5;  % 定义变量a,但不显示其值

用于矩阵或数组元素的分隔。例如:

A = [1 2 3; 4 5 6];  % 创建一个2x3的矩阵
  1. 逗号(,)
    用于函数参数的分隔。例如:
result = sum(a, b);  % 调用sum函数,传入两个参数

用于同一行中多个语句的分隔。例如:

a = 1, b = 2;  % 定义两个变量,在同一行中执行
  1. 百分号(%)
    用于注释,其后的内容不会被 MATLAB 执行。例如:
% 这是一个注释,解释下面代码的功能
a = 5;
  1. 圆括号(())
    用于函数调用的参数列表。例如:
sin(pi/2);  % 调用sin函数,计算sin(π/2)

用于数组或矩阵的索引。例如:

A(2, 3);  % 访问矩阵A的第2行第3列元素
  1. 冒号(:)
    用于创建等差数列。例如:
x = 1:5;  % 创建从1到5的等差数列,步长为1

用于数组或矩阵的切片操作。例如:

A(:, 2);  % 提取矩阵A的第2列所有元素
  1. 方括号([])
    用于创建数组或矩阵。例如:
a = [1 2 3];  % 创建一个行向量
A = [1 2; 3 4];  % 创建一个2x2的矩阵
  1. 花括号({})
    用于细胞数组(Cell Array)的创建和访问。例如:
C = {1, 'hello', [2 3 4]};  % 创建一个细胞数组
C{2};  % 访问细胞数组C的第2个元素

七、常见工具箱(Toolbox)
MATLAB 提供了丰富的工具箱,用于不同领域的专业计算和分析。以下是一些常见的工具箱:

  1. Signal Processing Toolbox
    信号处理工具箱,提供了各种信号处理算法和工具,用于信号滤波、频谱分析、小波变换等。适用于通信、音频处理、图像处理等领域。
  2. Image Processing Toolbox
    图像处理工具箱,用于图像增强、分割、特征提取和分析等。提供了丰富的图像处理函数和算法,广泛应用于计算机视觉、医学图像处理等领域。
  3. Control System Toolbox
    控制系统工具箱,用于控制系统的建模、分析和设计。支持传递函数、状态空间模型等多种表示方法,提供了稳定性分析、PID 控制器设计等功能。
  4. Optimization Toolbox
    优化工具箱,提供了各种优化算法,用于求解线性规划、非线性规划、整数规划等优化问题。适用于工程设计、经济分析、机器学习等领域。
  5. Statistics and Machine Learning Toolbox
    统计和机器学习工具箱,提供了统计分析、数据挖掘和机器学习算法。支持分类、回归、聚类、降维等任务,可用于数据分析、模式识别等领域。
    八、常见运算符的优先级
    MATLAB 中运算符的优先级决定了表达式中各运算符的计算顺序。以下是常见运算符的优先级列表,从高到低排列:

括号(())
幂运算(^)
一元运算符(+、-)
乘除运算(*、/、\)
加减运算(+、-)
关系运算符(<、>、<=、>=、==、~=)
逻辑非(~)
逻辑与(&)
逻辑或(|)
短路逻辑与(&&)
短路逻辑或(||)

在复杂表达式中,建议使用括号明确指定计算顺序,以避免因优先级问题导致的错误。
九、数组操作函数

  1. 创建数组
    zeros(m, n):创建 m 行 n 列的全零数组。
    ones(m, n):创建 m 行 n 列的全 1 数组。
    eye(n):创建 n 阶单位矩阵。
    linspace(a, b, n):创建从 a 到 b 的 n 个等距点的数组。
    logspace(a, b, n):创建从 10^a 到 10^b 的 n 个对数等距点的数组。
  2. 数组操作
    size(A):返回数组 A 的大小。
    length(A):返回数组 A 的长度(最大维度的大小)。
    reshape(A, m, n):将数组 A 重新调整为 m 行 n 列的数组。
    transpose(A)或A’:返回数组 A 的转置。
    flipud(A):上下翻转数组 A。
    fliplr(A):左右翻转数组 A。
    sort(A):对数组 A 进行排序。
    sum(A):计算数组 A 的元素和。
    prod(A):计算数组 A 的元素积。
    mean(A):计算数组 A 的元素平均值。
    std(A):计算数组 A 的元素标准差。
    十、数值的创建、代数运算、关系运算和逻辑运算
  3. 数值的创建
    直接赋值:a = 5;
    科学计数法:b = 3.2e-4;(表示 3.2×10^-4)
    特殊数值:pi(圆周率 π)、i或j(虚数单位)
  4. 代数运算
    加法:a + b
    减法:a - b
    乘法:a * b
    除法:a / b(右除)、a \ b(左除,相当于 b/a)
    幂运算:a ^ b
  5. 关系运算
    小于:a < b
    大于:a > b
    小于等于:a <= b
    大于等于:a >= b
    等于:a == b
    不等于:a ~= b
  6. 逻辑运算
    逻辑非:~a
    逻辑与:a & b
    逻辑或:a | b
    短路逻辑与:a && b(只有当 a 为真时才会计算 b)
    短路逻辑或:a || b(只有当 a 为假时才会计算 b)
    十一、数组的寻址
  7. 单下标寻址
    在 MATLAB 中,多维数组可以通过单下标进行寻址。数组元素按列优先存储,即先存储第一列的元素,再存储第二列的元素,依此类推。例如:
A = [1 2 3; 4 5 6];  % 创建一个2x3的矩阵
A(4);  % 访问第4个元素,结果为5
  1. 双下标寻址
    双下标寻址使用行和列的索引来访问数组元素。例如:
A = [1 2 3; 4 5 6];
A(2, 3);  % 访问第2行第3列的元素,结果为6
  1. 冒号操作符
    冒号操作符可用于选择多行或多列。例如:
A = [1 2 3; 4 5 6; 7 8 9];
A(:, 2);  % 选择第2列的所有元素,结果为[2; 5; 8]
A(2, :);  % 选择第2行的所有元素,结果为[4 5 6]
A(1:2, 2:3);  % 选择第1到2行、第2到3列的元素,结果为[2 3; 5 6]

十二、MATLAB 数据类型

  1. 数值型
    整数类型:int8、uint8、int16、uint16、int32、uint32、int64、uint64
    浮点类型:single(单精度)、double(双精度,默认类型)
  2. 逻辑型
    逻辑型数据只有两个值:true(真)和false(假)。逻辑型变量通常用于条件判断和逻辑运算。
  3. 字符型
    字符型数据用于表示文本,使用单引号括起来。例如:s = ‘hello’;。多个字符组成的数组称为字符串,MATLAB 提供了丰富的字符串处理函数。
  4. 细胞型(Cell Array)
    细胞数组是一种特殊的数组,其元素可以是不同类型的数据。细胞数组使用花括号{}创建和访问。例如:
C = {1, 'hello', [2 3 4]};  % 创建一个细胞数组
C{2};  % 访问第2个元素,结果为'hello'
  1. 结构型(Structure)
    结构数组是一种将不同类型的数据组织在一起的数据类型,每个元素可以有不同的字段。结构数组使用点号.访问字段。例如:
student.name = 'John';  % 创建一个结构数组student,添加name字段
student.age = 20;       % 添加age字段
student.grades = [85 90 92];  % 添加grades字段
student.name;  % 访问name字段,结果为'John'

十三、细胞数组的操作

  1. 创建方法
    直接赋值:C = {1, ‘hello’, [2 3 4]};
    使用cell函数预分配空间后赋值:
C = cell(2, 3);  % 创建一个2x3的空细胞数组
C{1, 1} = 10;    % 给第1行第1列的元素赋值
C{1, 2} = 'abc'; % 给第1行第2列的元素赋值
  1. 访问方法
    圆括号():返回一个子细胞数组。例如:
C = {1, 'hello', [2 3 4]};
C(1:2);  % 返回包含第1和第2个元素的子细胞数组

花括号{}:返回细胞数组中的实际元素。例如:

C = {1, 'hello', [2 3 4]};
C{2};  % 返回'hello'
  1. 扩充和收缩
    扩充:可以通过直接赋值的方式扩充细胞数组。例如:
C = {1, 2};
C{3} = 3;  % 扩充细胞数组,添加第3个元素

收缩:可以使用celldisp函数显示细胞数组的内容,使用clear函数删除指定元素。例如:

clear C{2};  % 删除第2个元素
  1. 重组
    使用reshape函数重新调整细胞数组的大小。例如:
C = {1, 2, 3, 4};
C = reshape(C, 2, 2);  % 重新调整为2x2的细胞数组

十四、结构数组的操作

  1. 创建
    直接赋值:
student.name = 'John';
student.age = 20;
student.grades = [85 90 92];

创建多个元素的结构数组:

students(1).name = 'John';
students(1).age = 20;
students(2).name = 'Mary';
students(2).age = 21;
  1. 访问
    使用点号.访问结构数组的字段。例如:
students(1).name;  % 访问第一个学生的姓名

使用fieldnames函数获取结构数组的所有字段名。例如:

fields = fieldnames(students);  % 获取所有字段名
  1. 删除域
    使用rmfield函数删除结构数组的指定字段。例如:
students = rmfield(students, 'age');  % 删除age字段

十五、矩阵及其运算

  1. 基本运算
    加法和减法:两个矩阵必须具有相同的大小。例如:
A = [1 2; 3 4];
B = [5 6; 7 8];
C = A + B;  % 矩阵加法
D = A - B;  % 矩阵减法

乘法:矩阵 A 的列数必须等于矩阵 B 的行数。例如:

A = [1 2; 3 4];
B = [5 6; 7 8];
C = A * B;  % 矩阵乘法

左除和右除:
右除A/B等价于A*inv(B)(B 的逆矩阵右乘 A)。
左除A\B等价于inv(A)*B(A 的逆矩阵左乘 B)。
乘方和开方:

A = [1 2; 3 4];
B = A^2;  % 矩阵乘方,等价于A*A
C = sqrtm(A);  % 矩阵开方,计算A的平方根矩阵
  1. 特殊运算
    逆矩阵:inv(A)计算矩阵 A 的逆矩阵。
    迹:trace(A)计算矩阵 A 的迹(主对角线元素之和)。
    秩:rank(A)计算矩阵 A 的秩。
    行列式:det(A)计算矩阵 A 的行列式。
    特征值和特征向量:eig(A)计算矩阵 A 的特征值和特征向量。
  2. 取整函数
    fix(x):向零取整,即舍去小数部分。例如:fix(3.8)结果为 3,fix(-3.8)结果为 - 3。
    round(x):四舍五入取整。例如:round(3.4)结果为 3,round(3.6)结果为 4。
    floor(x):向下取整,即取不大于 x 的最大整数。例如:floor(3.8)结果为 3,floor(-3.8)结果为 - 4。
    ceil(x):向上取整,即取不小于 x 的最小整数。例如:ceil(3.2)结果为 4,ceil(-3.2)结果为 - 3。
  3. 求余函数
    mod(x, y):计算 x 除以 y 的余数,结果的符号与 y 相同。例如:mod(7, 3)结果为 1,mod(-7, 3)结果为 2。
    rem(x, y):计算 x 除以 y 的余数,结果的符号与 x 相同。例如:rem(7, 3)结果为 1,rem(-7, 3)结果为 - 1。
    十六、数值型数据的类型及转换
  4. 数值型数据类型
    整数类型:
    int8:8 位有符号整数,取值范围为 - 128 到 127。
    uint8:8 位无符号整数,取值范围为 0 到 255。
    int16:16 位有符号整数,取值范围为 - 32768 到 32767。
    uint16:16 位无符号整数,取值范围为 0 到 65535。
    int32:32 位有符号整数,取值范围为 - 2147483648 到 2147483647。
    uint32:32 位无符号整数,取值范围为 0 到 4294967295。
    int64:64 位有符号整数,取值范围为 - 9223372036854775808 到 9223372036854775807。
    uint64:64 位无符号整数,取值范围为 0 到 18446744073709551615。
    浮点类型:
    single:单精度浮点数,占 4 个字节,精度约为 7 位有效数字。
    double:双精度浮点数,占 8 个字节,精度约为 15 位有效数字,是 MATLAB 的默认数值类型。
  5. 类型转换函数
    int8(x):将 x 转换为 8 位有符号整数。
    uint8(x):将 x 转换为 8 位无符号整数。
    single(x):将 x 转换为单精度浮点数。
    double(x):将 x 转换为双精度浮点数。
    logical(x):将 x 转换为逻辑型数据,非零值转换为true,零值转换为false。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值