MATLAB 随笔 1

一、界面使用

1. clear 命令——从工作区中删除项目、释放系统内存

此 MATLAB 函数从当前工作区中删除所有变量,并将它们从系统内存中释放。

语法

clear
clear name1 ... nameN
clear -regexp expr1 ... exprN
clear ItemType

2. clc 命令——清空命令行窗口

此 MATLAB 函数 清除命令行窗口中的所有文本,让屏幕变得干净。运行 clc 后,您不能使用命令行窗口中的滚动条查看以前显示的文本。但您可以在命令行窗口中使用向上箭头键 ↑ 从命令历史记录中重新调用语句。

语法: clc

3. CTRL + T ——多行注释

选中多行后使用快捷键,可对选中的多行进行注释,可重复注释。

4. CTRL + R ——取消多行注释

选中多行后使用快捷键,可对选中的多行取消一次注释,可重复取消多次注释。

二、运算基础

1. MATLAB的变量

  • 变量名必须以字母开头,之后可以是任意的字母、数字、下划线。
  • 变量名中字母区分大小写。
  • 变量名不能超过63个字符,第63个字符之后的将会被忽略
  • 变量不能和MATLAB的关键字同名,关键字完整列表可以通过 iskeyword 获取。
  • 特殊变量:anspiinf等。

三、矩阵基础

1. 矩阵的创建:

①直接输入法——适合矩阵中元素较少的情况

输入矩阵时,用 [] 作为标识符号,矩阵内的所有元素都要在中括号内。矩阵的同行元素用逗号分隔,行与行之间用分号或者回车分隔,例:

a = [1 , 2 , 3; 4 , 5 , 6]

在MATLAB中,将一个或多个元素插入到已有矩阵现有的行列索引边界外,此时会自动对矩阵的大小进行拓展,未进行赋值的元素默认为0。例:

A=[1 , 2; 3 , 4];
A(3,3) = 9

此时:

  

②函数创建法——生成特定或者常用的矩阵。

函数作用说明
zeros生成一个全为0的矩阵
ones生成一个全为1的矩阵
eye生成一个对角线全是1,其余元素全是0的单位矩阵
rand生成一个0-1之间均匀分布的随机小数
randi生成一个指定范围内均匀分布的随机整数
randn生成一个服从标准正态分布,即的随机数

例:

zeros(10)  %生成一个10行10列,且元素都为0的方阵
zeros(10,9)  %生成一个10行9列,且元素都为0的矩阵
rand(m,n) %生成一个m行n列,元素为0到1之间随机小数的矩阵
randi([imin,imax],m,n) %生成一个m行n列,元素为imin到imax之间随机整数的矩阵
randn(m,n) %生成一个m行n列,元素服从标准正态分布N(0,1)的矩阵

③本地文件导入

支持格式:

  • .txt、.dat、.csv等(逗号分隔)
  • .xlsx、.xls、.obs等(电子表格)

2. 矩阵的修改和删除:

修改

A = [1 , 2 , 3; 4:6 , 7:9]; %创建矩阵A
A(2,2) = 10;  %将第2行第2列的元素修改为10
A(2,:)= 0 ; %将第2行的全部元素修改为0
A([1,2];[2,3]) = 1; %把(1,2)(1,3)(2,2)(2,3)的元素修改为1

删除

在MATLAB里,如果把等号右边设为一个空向量 [],就能实现“删除”的效果,如:

A = [1:3;
     4:6;
     7:9];
A(:,2) = []
A(end,:) = [] %删除矩阵A的最后一行

此时:

    

这样操作时,只能一次删除整行或整列,不能删除单个元素,否则会破坏矩阵的长方形结构;若要灵活访问单个元素,可以用线性索引来实现。

线性索引

在 MATLAB 中,除了用 (行,列) 的方式访问元素外,还可以把整个矩阵当作一个按列优先排成的 “长向量” 来编号,这种方式叫做线性索引,即先把第一列从上到下编号完,再接着编号第二列,依次类推。我们可以使用线性索引来对单个元素进行修改删除

A = [1:3; 4:6; 7:9];
A(4) = 0
A(7) = []; 

此时输出:

A =

     1     0     3
     4     5     6
     7     8     9


A =

     1     4     7     0     5     8     6     9

当用 A(k)=[] 删除元素时,MATLAB会先把矩阵按列展开成一个长向量,再删掉第k个位置的元素;这样删除后结果不再是二维矩阵,而会被压缩成一个行向量。

3. 矩阵的拼接重构重排

矩阵的拼接

①横向拼接

将两个矩阵在列方向并排放置,即左右相接,要求两者行数相同。可用 [A, B][A B]cat(2, A, B) 将矩阵AB横向拼接为更大的矩阵。

Horizontal Concatenation

②纵向拼接

将两个矩阵沿行方向上下连接,即上下拼接,要求两者列数相同。可使用 [A; B]cat(1, A, B) 将矩阵AB纵向拼接为一个更大的矩阵。

Vertical Concatenation

矩阵的重构重排

reshape 函数 —— 通过重新排列现有元素来重构数组

reshape 函数用来改变数组或矩阵的形状,但不会改变里面的数据。比如,reshape(A, [2,3]) 会把数组 A 重新排成一个 2 行 3 列的矩阵。给定的大小向量 sz 至少要有两个数,而且这些数相乘的结果必须等于 A 里的元素总数。重构前后,矩阵的线性索引顺序保持不变,只是元素在行列中的排列方式不同。

例:

A = randi([1,10],2,6)
B = reshape(A, [3 , 4 ])

输出:

A =

    10     9     5     8     7     9
     5     2    10    10     1    10

B =

    10     2     8     1
     5     5    10     9
     9    10     7    10

reshape 中,如果不想手动计算元素总数,可以在大小向量 sz 里用一个 空向量 [] 来让MATLAB自动推算对应的维度。

比如:

B = reshape(A, [2, []])

这表示把A改成 2 行,列数由MATLAB自动计算,使得元素总数不变。

sort 函数 —— 对向量或矩阵的元素进行排序

sort 函数用于对向量或矩阵中的元素按大小进行排序。 基本用法为 sort(A, dim),其中 dim 表示排序的方向。 在函数后面加上 'descend' 参数,可以把默认的升序改为降序。

  • dim = 1 或省略时,沿着**行方向(从上到下)**对矩阵的每一列进行排序;
  • dim = 2 时,沿着**列方向(从左到右)**对矩阵的每一行进行排序。

例如:

sort(A,1)         % 每一列按升序排列  
sort(A,2)         % 每一行按升序排列  
sort(A,'descend') % 每一列按降序排列

sortrows 函数 —— 按某一列对整个矩阵的行进行排序

sortrows 函数用于根据矩阵中某一列的大小,对整行数据进行排序。它与 sort 不同:sort 是单独对每一列或每一行排序,而 sortrows整行移动,保持行内元素之间的对应关系。

基本语法:

sortrows(A, col)
sortrows(A, col, 'descend')

其中

  • A 为要排序的矩阵;
  • col 表示按照第几列进行排序;
  • 'descend' 表示按**降序(从大到小)**排列,默认是升序(从小到大)。

4. 矩阵的计算

调用函数运算

函数名函数的作用英文含义
sum求和函数sum
prod求乘积函数product
cumsum计算累积和cumulative sum
diff计算差分difference
mean计算平均值mean
median计算中位数median
mode计算众数mode
var计算方差variance
std计算标准差standard deviation
min求最小值minimum value
max求最大值maximum value

大部分矩阵统计类函数(如 summeanmaxminstd 等)都可以使用参数 'all''omitnan' 来分别对全部元素计算忽略缺失值(NaN)

sum(A,1)           % 显式沿列计算,1 可省略
sum(A,2)           % 沿行计算,每行分别求和
sum(A,'all')       % 将所有元素相加
sum(A,2,'omitnan') % 沿行求和且忽略 NaN(有缺失值时常用)

算数运算


喵~内容更新中 ……

最后更新时间 2025-10-15 20:20正在统计阅读次数...