今天我们继续学习MATLAB中的数组
我们在学习MATLAB时了解到,MATLAB作者秉持着"万物皆可矩阵"的思想企图将数学甚至世间万物使用矩阵表示出来,而矩阵的处理,自然成了这门语言的重中之重。
数组基础
在MATLAB中,数组是一个基本的数据类型,用于存储数值型数据。数组可以是数字的集合,可以是一维的(行向量或列向量),也可以是多维的(如矩阵或更高维的张量)。
向量
- 维度:向量是特殊的数组,它只有一维。它可以是一个行向量或列向量。
- 大小:向量的维度是 𝑛×1n×1(列向量)或 1×𝑛1×n(行向量),其中 𝑛n 是向量中的元素数量。
- 用途:向量通常用于表示数学上的点、方向、或物理量,它们可以进行标量乘法、向量加法和点积等操作。
例如:
v_row = [1, 2, 3]; % 行向量
v_col = [1; 2; 3]; % 列向量
创建数组
- 使用方括号
[]
来创建数组。 - 在创建数组时","和"【空格】"来分隔相邻的元素,用";"来分隔相邻的每个列。
- 使用冒号
:
来创建等差数列。例如:D = 1:5
会创建一个行向量[1 2 3 4 5]
。D = 1:2:10会创建起始值为1步长为2,但不超过10的行向量[1 3 5 7 9]
- 使用
linspace
函数来创建包含指定数量元素的等差数列。例如:E = linspace(0,10, 5)
会创建一个从0开始到10结束,包含5个等间隔点的数列[0.0,2.5,5.0,7.5,10.0]。
特殊矩阵的创建(两行三列)
- 零矩阵
Matlab
Z = zeros(2, 3);
- 所有元素都是1的矩阵
Matlab
oneMatrix = ones(2, 3);
- eye:创建单位矩阵(对角线元素为1,其余为0)
I = eye(2, 3);
- rand:创建一个元素在[0,1]区间内均匀分布的随机矩阵
R = rand(2, 3);
- randn:创建一个元素为标准正态分布(均值为0,方差为1)的随机矩阵
RN = randn(2, 3);
- diag:创建对角矩阵或提取矩阵的对角线元素
D = diag([1 2 3]); % 创建对角矩阵
- magic:创建一个魔方矩阵(每行、每列和对角线上的元素和相等)
M = magic(3); % 注意:这里需要方阵的尺寸
每个函数都有其特定的用途,可以根据需要选择使用。
数组操作
- **查询:**A(m,n)
- **更改:**A(m,n)=2
- **删除:**A(m,n)=[](将对应位元素改为空)
- **提取:**A([1,3,2]),依次提取1,3,2位的元素
- 索引 :使用括号
()
来索引数组中的元素。例如:C(2,3)
会返回矩阵C
中第二行第三列的元素。 - 切片 :可以提取数组的一部分。例如:
C(1:2, 2:3)
会提取矩阵C
的第一和第二行以及第二和第三列的子矩阵。 - 连接 :使用方括号
[]
或函数如cat
、horzcat
(水平连接)和vertcat
(垂直连接)来连接数组。 - 转置 :使用单引号
'
来转置数组。例如:C'
。 - **计算数组尺寸:**size(A),返回2 3,意为两行三列。
- **计算向量尺寸:**length(A)(如果放入矩阵,则显示最长的行或列)
矩阵处理函数
sum:对每一列求和,求和后将每一列的和显示为行向量。
prod:对每一列求乘积。
min:求列的最小值
max:求列的最大值
数组的运算
基本运算
- A+B与A-B:加与减
- K**A或A**K:数乘矩阵
- K+A与K-A:K加(减)A的每个元素
- A.^K,K.^A:数组乘方
- A.*B:数组成数组
- K./A:数除以数组
- 左除A.\B=右除B./A:数组除法
数学函数
矩阵的数字函数也是按元素额运算,使其通常的函数号,如sin(A),cos(A),acos(A),tan(A),cot(A),exp(A),sqrt(A)等。
fix 向0取整
ceil 向+∞取整
floor:向-∞取整
rem 除法余数
mod:模除求余
abs:绝对值(模)
real 复数实部
imag:复数虚部
angle 复数幅角
conj:复数共轭
log 自然对数ln
log10:以10为底的对数
result = log10(3);
//以十为底三的对数
关系与逻辑运算
-
<、<= 小于、小于等于
-
>、>= 大于、大于等于
-
==、~= 等于、不等于
-
&(与)、|(或)、~(非)
-
any、all 、find
在MATLAB中,"真"用1表示,"假"用0,而逻辑运算中,所有非零元素作为1处理
今天我们学习到这里,明天继续学习MATLAB!