MatLab数组

本文详细介绍了MATLAB中数组的基础概念,包括向量、矩阵和多维数组的创建,特殊数值阵列如全零矩阵、随机数矩阵和幻方的生成方法。此外,还涵盖了排序、索引操作、单元阵列和常用数组函数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Matlab数组

在MATLAB中所有的数据变量是多维数组、向量是一个一维阵列、矩阵是一个二维数组

先看看一些特殊的数值

MATLAB中的特殊阵列

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

eg:

zeros() 函数创建一个元素为零的数组

image-20210831160415900

eye(5)

image-20210831160523915

rand() 建立一个数组,值为(0,1)上均匀分布的随机数

image-20210831160659285

MATLAB幻方

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

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

image-20210831160809672

MATLAB多维数组

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

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

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

eg:

先创建一个二维数组a

a = [5 1 3;5 2 3;5 3 3]

image-20210831161140741

数组a是一个3x3阵列,通过提供的值,可以添加一个第三维(相当于增加了个z轴)

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

image-20210831161340962

image-20210831161405423

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

b = rand(4,3,2)

image-20210831161825051

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

B = cat(dim,A1,A2...)
% B是新建的数组、A1、A2...是要连接的阵列、dim是一起串联阵列的维度

eg:

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])

image-20210831162156090

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矢量化表达式

需用需查、不用硬记

eg:

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,元素(字符?)的数量

image-20210831162931961

循环移位数组元素

a = [1 2 3; 4 5 6; 7 8 9]  
b = circshift(a,1)  %  将a向下移动一行(看效果猜的)
c = circshift(a,[1 -1]) % 对比下面俩张效果图,[a,b]中,a是行、b是列、正数一个方向、负数                          %另一个方向移动

image-20210831163232757

image-20210831163745443

MATLAB数组排序
v = [ 23 45 12 9 5 0 19 17] 
sort(v)   %返回排序后的向量 v
m = [2 6 4; 5 3 9; 2 0 1]  %  二维数组
sort(m, 1)   % m数组按列排序
sort(m, 2)   % m数组按行排序

image-20210831164148594

MATLAB单元阵列

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

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

单元格函数的语法如下:

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

注意
C 是单元阵列;
dim 是一个标量整数或整数向量,指定单元格阵列C的尺寸;
dim1, ... , dimN 是标量整数指定尺寸的C;
obj 是以下内容之一
Java 数组或对象
.NET阵列 System.String 类型或 System.Object

image-20210831164817339

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

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

  • 封闭的索引在第一个 bracket (),是指一组单元格
  • 封闭的在大括号{},的索引单个单元格内的数据

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

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

c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c(1:2,1:2)  %1:2 第一行切片、1:2第二行切片

image-20210831165250133

image-20210831165409621

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

c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c{1, 2:4}  %既可以单个指定、也可以切片

image-20210831165616383

上面的效果图中,有个疑问:索引的开始值怎么算的?例如octave33中的[1,1]=Red,octave35中的[1,1]=Green,octave37中的1=Blue
tip:切片切片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值