Matlab学习入门篇(三)—— 矩阵和数组

本文介绍了MATLAB中矩阵的创建,包括简单矩阵、特殊矩阵的创建方法,以及矩阵的合并规则。此外,还详细讲解了矩阵的寻访与赋值的不同方式,以及如何进行数组运算,包括基本数学函数、三角函数和向量函数的使用。同时,文章还涉及查询矩阵信息的函数和多维数组的创建与访问。
摘要由CSDN通过智能技术生成

在matlab中,一般情况下矩阵就是指一个长方形的数组,这里分为两种情况:一是单一元素的标量,二是只有一行或者一列的矩阵,也就是向量

一、矩阵的创建与合并

一个二维、长方形形状的数据,可以用易于使用的矩形形式来存储,这些数据可以是数字、字符、逻辑形态(true或false),甚至是Matlab的结构数组类型。Matlab使用二维的矩阵来存储单个数值或者线性数列,也同时支持多于二维的数据结构。

1.1 创建简单矩阵

Matab是基于矩阵的计算环境。所有用户输入的数据都将会以矩阵的形式或者是多维数组来存储。即使是一个数值型的标量,例如100,也会以矩阵的形式来存储

>> a = 100;%单个标量的输入
>> whos
  Name      Size            Bytes  Class     Attributes

  a         1x1                 8  double              

从上例中可以知晓标量a的存储格式为1X1的矩阵,占用了8字节的内存空间,数据的类型是双精度浮点数。
创建二维矩阵的语法格式:row = [E1,E2,...,En]

>> b = [12 62 93 -8 22];%单行矩阵
>> whos
  Name      Size            Bytes  Class     Attributes

  b         1x5                40  double              

在mtalab中也可以用“初值:步长:终值”方式创建2~20区间内以2为步长的向量。注:步长可正、可负或者小数。

>> c = 2:2:20;
>> c
c =
     2     4     6     8    10    12    14    16    18    20

若创建多行多列矩阵,则用分号作为行之间的分隔符即可。

A = [row1; row2; ...; rown]

例如创建一个3行5列的矩阵:

>> d = [12 62 93 -8 22;16 2 87 43 91;-4 17 -72 95 6];
>> d

d =

    12    62    93    -8    22
    16     2    87    43    91
    -4    17   -72    95     6

1.2 创建特殊矩阵

使用函数可以直接创建不同的特殊矩阵注:函数名称区分大小写。
以下是常见特殊矩阵的创建函数。

函数名称函数功能
zeros创建所有元素为0的矩阵
diag创建对角矩阵
ones创建所有元素为1的矩阵
eye创建单位矩阵
magic创建魔方矩阵
rand随机产生均匀分布的矩阵
randn随机产生正态分布的矩阵

创建一个4行4列所有元素都为1的矩阵、创建一个2*3的均匀分布随机数矩阵:

>> ones(4)

ans =

     1     1     1     1
     1     1     1     1
     1     1     1     1
     1     1     1     1

>> rand(2,3)

ans =

    0.8147    0.1270    0.6324
    0.9058    0.9134    0.0975

1.3 矩阵的合并

  • 水平合并:C = [A B] 要求:每个子矩阵的行数必须相同
  • 竖直合并:C = [A;B] 要求:每个子矩阵的列数必须相同

二、矩阵的寻访与赋值

寻访有以下三种标识方法,全下标标识法由于几何概念清楚,引述简单,因此在矩阵的寻访中用的最多单下标标识法的优势实在特定情境下使用更为简洁;逻辑1标识法在速度方面具有一定的优势,综合以上,根据不同的场景需求选择不用的寻访方式。

  • 全下标标识法:即指出某一元素在第几行第几列
  • 单下标标识法:只用一个下标来标明元素在矩阵中的位置
  • 逻辑1标识法:逻辑1标识法用一个基于原矩阵A相对位置的逻辑数组B来对矩阵A进行寻访;此方法应用在查找矩阵中的大于或者小于某值的元素的问题。

例如:创建一个测试矩阵,然后采用不同的标识方式进行寻访。

>> a = [1 2 3; 4 5 6];%创建测试矩阵
>> a
a =

     1     2     3
     4     5     6
>> b = a(2,3);%采用全下标标识法寻访
b =

     6

>> c = a(5);%采用单下标标识法寻访
c =

     3

>> d = a>4;%返回逻辑下标
d =

  2×3 logical 数组

   0   0   0
   0   1   1

>> e = a(d);%采用逻辑1标识法寻访
e =

     5
     6

赋值
利用上述的寻访方式,可以轻松做到给矩阵赋值,如下就是分别利用全下标标识和单下标方式进行赋值。

>> a = magic(4)

a =

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

>> a(3,4)=0

a =

    16     2     3    13
     5    11    10     8
     9     7     6     0
     4    14    15     1

>> a(:,1)=1

a =

     1     2     3    13
     1    11    10     8
     1     7     6     0
     1    14    15     1

>> a(14)=16

a =

     1     2     3    13
     1    11    10    16
     1     7     6     0
     1    14    15     1

三、进行数组运算的常用函数

本节整理了matlab进行数组运算的一些常用函数,包括基本数学函数、三角函数以及适用向量的常用函数,方便大家查阅。

3.1matlab常用的基本数学函数

函数说明
abs(x)绝对值或向量的长度
sqrt(x)开平方
round(x)四舍五入至最近的整数
fix(x)无论正负,向0的方向取最近的整数
floor(x)用舍去法区区最近的整数
ceil(x)用进一法去最近的整数
pow2(x)2的指数
exp(x)自然指数
log(x)以e为底,即自然对数
log2(x)以2为底的对数
log10(x)以10为底的对数

3.2matlab常用的三角函数

函数说明
sin(x)正弦函数
cos(x)余弦函数
tan(x)正切函数
asin(x)反正弦函数
acos(x)反余弦函数
atan(x)反正切函数

3.3适用于向量的常用函数

函数说明
min(x)向量x的元素最小值
max(x)向量x的元素最大值
mean(x)向量x的元素平均值
median(x)向量x的元素中位数
std(x)向量x的元素标准差
diff(x)向量x的相邻元素的差
sort(x)向对量x的元素进行排序
prod(x)向量x的元素总乘积
dot(x)向量x和y的内积
cross(x)向量x和y的外积
sum(x)向量x的元素总和
cumsum(x)向量x的累积元素总和
cumprod(x)向量x的累积元素总乘积

四、查询矩阵信息

本节是对查询矩阵信息的相关函数做了整理,具体包括矩阵的形状信息和常见的判断矩阵中数据结构函数。

4.1查询矩阵形状信息的函数

函数名称函数功能
length返回矩阵最长的一维长度
size返回矩阵各维的长度
numel返回矩阵的元素个数
ndims返回矩阵的维数
>> rand('state',0);%设置随机种子
a = rand(5);%生成5*5的随机矩阵

a =

    0.9501    0.7621    0.6154    0.4057    0.0579
    0.2311    0.4565    0.7919    0.9355    0.3529
    0.6068    0.0185    0.9218    0.9169    0.8132
    0.4860    0.8214    0.7382    0.4103    0.0099
    0.8913    0.4447    0.1763    0.8936    0.1389

>> a(4,:) = [];%删除第4行

a =

    0.9501    0.7621    0.6154    0.4057    0.0579
    0.2311    0.4565    0.7919    0.9355    0.3529
    0.6068    0.0185    0.9218    0.9169    0.8132
    0.8913    0.4447    0.1763    0.8936    0.1389

>> size(a);%4行5列的矩阵

ans =

     4     5

>> b = mean(a);%获取每列的平均值

b =

    0.6699    0.4204    0.6264    0.7879    0.3407

>> c  = min(a)

c =

    0.2311    0.0185    0.1763    0.4057    0.0579

4.2判断矩阵中数据结构的函数

以下就不再举例,有需要就直接到表格中获取相关函数。

函数名称函数功能
isempty判断输入矩阵是否为空
isscalar判断输入矩阵是否是1x1的标量
issparse判断输入矩阵是否是稀疏矩阵
isvector判断输入矩阵是否是向量

五、多维数组

在实际应用的过程中,经常需要构造多于二维的数组,我们就多于二维的数组统称为多维数组。名称上将数组的第1维称为“行”,第2维称为“列”,并将第3维称为“页”

5.1多维数组的创建

有以下4种方式可以创建多维数组:

  • 直接通过“全下标”元素赋值的方式创建
  • 若干同样大小的二维数组组合成为多维数组
  • 函数ones、zeros、rand、randn等直接创建特殊的多维数组
  • 借助cat、repmat、reshape等函数构建多维数组

例如创建一个3x3x3的数组,并用全下标的方式赋值:

>> a(3,3,3)=1;%创建3*3*3数组,未赋值元素默认设置为0

a(:,:,1) =

     0     0     0
     0     0     0
     0     0     0


a(:,:,2) =

     0     0     0
     0     0     0
     0     0     0


a(:,:,3) =

     0     0     0
     0     0     0
     0     0     1

以下是利用特殊函数创建多维数组:

>> c(:,:,1)=magic(4);
c(:,:,2)=ones(4);
c(:,:,3)=zeros(4);

val(:,:,1) =

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1


val(:,:,2) =

     1     1     1     1
     1     1     1     1
     1     1     1     1
     1     1     1     1


val(:,:,3) =

     0     0     0     0
     0     0     0     0
     0     0     0     0
     0     0     0     0

5.2 访问

要访问多维数组中的元素,可以使用整数下标,就像在向量和矩阵中一样。例如,找到 A 中下标为 2,1,2 的元素,它位于 A 的第二页上的第二行第一列。

>> A(:,:,1)=[1 2 3; 4 5 6; 7 8 9];
A(:,:,2)=[10 11 12; 13 14 15; 16 17 18];

val(:,:,1) =

     1     2     3
     4     5     6
     7     8     9

val(:,:,2) =

    10    11    12
    13    14    15
    16    17    18
    
>> B = A(2:1:2)
B =

     4

未完待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值