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
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
matlab学习笔记汇总,适合初学者。 1.3Matlab界面介绍(1).docx 1.4Matlab界面介绍(2).docx 1.5Matlab帮助系统.docx 1.6Matlab的搜索顺序及搜索路径.docx 2.1Matlab的变量与常量.docx 2.2Matlab的基本数据结构(1).docx 2.2Matlab的基本数据结构(2).docx 2.3 Matlab的空数组与子数组.docx 2.4 Matlab的算术运算符.docx 2.5 常见的Matlab运算函数(1).docx 2.6 常见的Matlab运算函数(2).docx 2.7 Matlab的字符串及其运算.docx 2.8 字符串函数及二维字符串.docx 2.9 绘图入门.docx 2.10绘图属性的控制.docx 2.11图形窗口菜单及对数坐标.docx 2.12 本章小结.docx 3.1程序编写的一般步骤.docx 3.2关系运算符.docx 3.3逻辑运算符.docx 3.4逻辑函数与短路运算.docx 3.5if语句.docx 3.6流程图的绘制.docx 3.7if语句的嵌套.docx 3.8switch.docx 3.9try_catch结构.docx 3.10多个图像窗口与子窗口.docx 3.11图像的增强控制.docx 3.12文本的高级控制.docx 3.13极坐标图.docx 4.1while循环结构.docx 4.2while循环举例.docx 4.3for循环.docx 4.4for循环举例.docx 4.5break和continue.docx 4.6循环结构嵌套.docx 4.7编译语言与解释语言.docx 4.8逻辑数组与向量化.docx 4.9应用举例.docx 4.10应用举例(2).docx 5.1M文件的分类.docx 5.2自顶向下程序设计.docx 5.3初始Matlab函数.docx 5.4初始Matlab函数(2).docx 5.5函数的局部变量.docx 5.6局部变量与按值传递.docx 5.7函数的选择性参数.docx 5.8函数的检测工具.docx 5.9全局内存与全局变量.docx 5.10持久变量.docx 5.11显示信息的几种方式.docx 5.12排查逻辑错误.docx 5.13排查逻辑错误(2).docx 5.14函数的函数.docx 5.15函数的函数(2).docx 5.16子函数.docx 5.17私有函数.docx 6.1复数数据类型.docx 6.2复数的作图.docx 6.3其他二维作图函数.docx 6.4其他的作图函数.docx 6.5本章举例.docx 9.1多项式.docx 9.2插值与拟合.docx matlab文帮助文档.chm
MATLAB,可以使用赋值操作符(=)将一个数组复制给另一个数组。例如,如果要将数组a复制给数组b,可以使用以下代码: b = a; 这将创建一个新的数组b,并将数组a的值复制到b。现在,b和a是相同的数组。 另外,还可以使用MATLAB的内置函数copy来复制数组。例如,要使用copy函数将数组a复制给数组b,可以使用以下代码: b = copy(a); 这将创建一个新的数组b,并将数组a的值复制到b。同样,b和a是相同的数组。 需要注意的是,使用赋值操作符或copy函数复制数组时,只是复制了数组的值,而不是创建一个新的独立的数组对象。因此,对复制后的数组进行修改会影响原始数组。如果需要创建一个完全独立的数组对象,可以使用MATLAB的clone函数。例如,要使用clone函数创建一个与数组a完全相同的新数组b,可以使用以下代码: b = clone(a); 这将创建一个新的数组b,并将数组a的值和属性完全复制到b。b和a是两个独立的数组对象,对b的修改不会影响a。 综上所述,MATLAB可以使用赋值操作符、copy函数或clone函数来实现数组的复制。 #### 引用[.reference_title] - *1* *2* *3* [MATLAB 学习笔记(4)MATLAB 数组](https://blog.csdn.net/m0_61298445/article/details/125351573)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Linest-5

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

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

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

打赏作者

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

抵扣说明:

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

余额充值