MATLAB 学习笔记(4)MATLAB 数组

目录

 

MATLAB数组

MATLAB中的特殊阵列

MATLAB 魔方矩阵

MATLAB 多维数组

详细例子

MATLAB数组函数

详细示例

MATLAB数组排序

MATLAB单元阵列

注意

详细例子

MATLAB在单元格上阵列访问数据


 

MATLAB数组

在MATLAB中所有的数据类型的变量是多维数组,向量是一维阵列,矩阵是二维数组。

先介绍一些特殊的数组阵列。

MATLAB中的特殊阵列

MATLAB中会使用一些函数来建立一些特殊的阵列,对于所有这些函数,一个参数创建一个正方形阵列,双参数创建矩形阵列。

使用 zeros() 函数建立一个元素为零的数组:

例如:

zeros(5)

MATLAB 执行上述指令,返回以下结果:

生成一个 5 * 5 的全 0 矩阵。

ans =
      0  0  0  0  0 
      0  0  0  0  0 
      0  0  0  0  0 
      0  0  0  0  0 
      0  0  0  0  0

使用 ones() 函数建立一个数组:

例如:

ones(4,3)

MATLAB执行上述指令,返回以下结果:

生成一个 4 * 3 的全 1 矩阵。

ans = 
     1 1 1
     1 1 1
     1 1 1
     1 1 1

使用 eye() 函数创建一个矩阵:

例如:

eye(4)

MATLAB执行上述指令,返回以下结果:

生成一个 4 * 4 的对角矩阵,顾名思义就是,在对角处都为1,相关概念需要有线性代数的基础。

ans = 
    1 0 0 0 
    0 1 0 0 
    0 0 1 0 
    0 0 0 1

使用 rand() 函数建立一个数组(0,1)上均匀分布的随机数:

例如:

rand(3, 5)

MATLAB执行上述指令,返回以下结果:

ans = 
     0.8147  0.9134  0.2785  0.9649  0.9572 
     0.9058  0.6324  0.5469  0.1576  0.4854 
     0.1270  0.0975  0.9575  0.9706  0.8003

MATLAB 魔方矩阵

产生相同的总和,当它的元素加入逐行,逐列或对角线魔方是一个正方形。

使用 magic() 函数创建一个魔方阵列,它需要一个单数的参数,该参数必须是一个大于或等于3的标量。

例如:

magic(4)

MATLAB执行上述指令,返回以下结果:

可以发现生成的矩阵,任意一行、任意一列、任意对角的数相加都为34,这就是魔方矩阵。

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

MATLAB 多维数组

在MATLAB中,一个阵列如果具有两个以上的维度则被称为多维数组。

在MATLAB中的多维数组是正常的两维矩阵的延伸。

MATLAB中需要先创建一个二维数组然后对该二维数组进行扩展,这样才能生成一个多维数组。

例如,我们先建立一个二维数组a。

a = [7 9 5; 6 1 9; 4 3 2]

MATLAB执行上述指令,返回以下结果:

a =
     7     9     5
     6     1     9
     4     3     2

数组 a 是一个 3x3 阵列,通过提供的值,我们可以添加一个第三维,例如:

a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]

MATLAB执行上述指令,返回以下结果:

a(:,:,1) =
     7     9     5
     6     1     9
     4     3     2

a(:,:,2) =
     1     2     3
     4     5     6
     7     8     9

同样,我们也可以使用 ones(), zeros() 或 rand() 函数建立多维数组。

例如:

b = rand(4,3,2)

MATLAB执行上述指令,返回以下结果:

b(:,:,1) =
    0.0344    0.7952    0.6463
    0.4387    0.1869    0.7094
    0.3816    0.4898    0.7547
    0.7655    0.4456    0.2760

b(:,:,2) =
    0.6797    0.4984    0.2238
    0.6551    0.9597    0.7513
    0.1626    0.3404    0.2551
    0.1190    0.5853    0.5060

还能够使用 cat() 函数来建立多维数组,它结合沿着指定的维度的数组列表:

cat() 函数的语法是:

B = cat(dim, A1, A2...)

注意:

  • B 是新建的数组;

  • A1, A2, ... 是要连接的阵列;

  • dim 是一起串联阵列的维度。

详细例子

在MATLAB中建立一个脚本文件,输入下述代码:

a = [9 8 7; 6 5 4; 3 2 1];
b = [1 2 3; 4 5 6; 7 8 9];
c = cat(3, a, b, [ 2 3 1; 4 7 8; 3 9 0])

运行该指令时,显示结果:

将矩阵 a 和矩阵 b 和另一个未命名矩阵拼接在一起,形成一个三维的矩阵。

c(:,:,1) =
     9     8     7
     6     5     4
     3     2     1
c(:,:,2) =
     1     2     3
     4     5     6
     7     8     9
c(:,:,3) =
     2     3     1
     4     7     8
     3     9     0

MATLAB数组函数

MATLAB提供以下功能进行排序,旋转,置乱,重塑或移动数组的内容。

函数目的
length矢量长度或最大阵列尺寸
ndims数组维数
numel数组元素的数目
size数组维度
iscolumn确定输入是否是列向量
isempty确定数组是否为空
ismatrix确定输入是否为矩阵
isrow确定输入是否为行向量
isscalar确定输入是否为标量
isvector确定输入是否为矢量
blkdiag从输入参数构造块对角矩阵
circshift循环移位
ctranspose复数共轭转置
diag矩阵的对角矩阵和对角线
flipdim沿指定维度翻转数组
fliplr从左到右翻转矩阵
flipud将矩阵向下翻转
ipermuten-维阵列的反置换维数
permute重新排列 N 维数组的维数
repmat复制和平铺数组
reshape重塑数组
rot90旋转矩阵90度
shiftdim移位维度
issorted确定集合元素是否按排序顺序排列
sort按升序或降序对数组元素进行排序
sortrows按升序对行排序
squeeze删除单维度
transpose转置
vectorize矢量化表达式

详细示例

上述的一些函数将由下列例子说明。

长度,尺寸和数量的元素:

在MATLAB中建立一个脚本文件,输入下述代码:

x = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9];
length(x)  % 数组 x 的长度
y = rand(3, 4, 5, 2);
ndims(y)   % 数组 y 的维度
s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab'];
numel(s)   % 数组 s 的元素个数

运行该指令,显示以下结果:

ans =
     8
ans =
     4
ans =
    23

循环移位的数组元素:

在MATLAB中建立一个脚本文件,输入下述代码:

a = [1 2 3; 4 5 6; 7 8 9] % 原始的矩阵 y
b = circshift(a,1)   % 矩阵向下循环移动一行
c = circshift(a,[1 -1]) % 矩阵向下移动一行,再向左移动一列 
                        

运行该指令,显示以下结果:

a =
     1     2     3
     4     5     6
     7     8     9

b =
     7     8     9
     1     2     3
     4     5     6

c =
     8     9     7
     2     3     1
     5     6     4

MATLAB数组排序

在MATLAB中建立一个脚本文件,输入下述代码:

v = [ 23 45 12 9 5 0 19 17]  %水平数组 v
sort(v)   %对数组 v 排序
m = [2 6 4; 5 3 9; 2 0 1] % 二维数组
sort(m, 1)   % 以行来排序
sort(m, 2)   % 以列来排序

运行该指令,显示以下结果:

v =
    23    45    12     9     5     0    19    17
ans =
     0     5     9    12    17    19    23    45
m =
     2     6     4
     5     3     9
     2     0     1
ans =
     2     0     1
     2     3     4
     5     6     9
ans =
     2     4     6
     3     5     9
     0     1     2

MATLAB单元阵列

单元阵列的阵列中每个单元格可以存储不同的维度和数据类型的数组的索引单元格。

单元格函数用于建立一个单元阵列。

单元格函数的语法如下:

C = cell(dim)
C = cell(dim1,...,dimN)
D = cell(obj)

注意

  • C 是单元阵列;

  • dim 是一个标量整数或整数向量,指定单元格阵列C的尺寸;

  • dim1, ... , dimN 是标量整数指定尺寸的C;

  • obj 是以下内容之一

    • Java 数组或对象

    • .NET阵列 System.String 类型或 System.Object

详细例子

在MATLAB中建立一个脚本文件,输入下述代码:

c = cell(2, 5);
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}

运行该指令,显示以下结果:

c = 
    'Red'    'Blue'    'Green'    'Yellow'    'White'
    [  1]    [   2]    [    3]    [     4]    [    5]

MATLAB在单元格上阵列访问数据

使用两种方法来引用单元阵列的元素:

  • 封闭的索引在第一个 bracket (),是指一组单元格

  • 封闭的在大括号{},的索引单个单元格内的数据

括在第一支架的索引,它指的是单元格的集。

单元阵列索引平稳括号单元格集合。

例如:

c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c(1:2,1:2)

MATLAB执行上述指令,返回以下结果:

ans = 
    'Red'    'Blue'
    [  1]    [   2]

同样可以用花括号“{ }”索引访问单元格的内容。

例如:

c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c{1, 2:4}

MATLAB执行上述指令,返回以下结果:

ans =
   Blue
ans =
   Green
ans =
   Yellow

 

 

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linest-5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值