matlab isempty_MATLAB:运算(二)

MATLAB:运算(二)

1.      改变矩阵结构

矩阵大小和结构可以改变,实现的方式主要有旋转矩阵、改变矩阵维度、删除矩阵元素等。MATLAB提供的此类函数见下表:

函数名称

函数功能

fliplr( A )

矩阵每一行均进行逆序排列

flipud( A )

矩阵每一列均进行逆序排列

flipdim(A, dim)

生成一个在dim维矩阵A内的元素交换位置的多维矩阵

rot90( A )

生成一个由矩阵A逆时针旋转90°而得的新阵

rot90(A, k)

生成一个由矩阵A逆时针旋转kX 90°而得到的新阵

reshape( A, m,n)

生成一个m*n*…*p维的矩阵,其元素以线性索引的顺序从矩阵A中取得

repmat(A,[m…p])

创建一个和矩阵A有相同元素的m*n*…*p块的多维矩阵

repmat(x,[m…p])

创建一个m*n*…*p的多维矩阵,所有元素的值都为标量x

shiftdim( A, n)

矩阵的列移动n步。n为正数,矩阵向左移; n为负数,向右移

squeeze( A )

返回没有空维的矩阵A

cat( dim, A, B )

将矩阵A和B组合成一个dim维的多维矩阵

permute( A, order )

根据向量order来改变矩阵A中的维数顺序

ipermute( A, order )

进行命令permute 的逆变换

sort( A )

对矩阵升序排序并返回排序后矩阵,当A为二维矩阵时,对每列分别排序

sort( A, dim )

对矩阵升序排序并返回排序后矩阵,dim=1 时,对每列排序:  dim=2时, 对每行排序

sort( A, dim, mode )

mode为'ascend'时,进行升序排序: mode 为"'descend"时,进行降序排序

例:矩阵的旋转与维度的改变

在命令窗口输入:>> A=[1,2,3;4,6,8]

B=reshape(A,2,3)

C=fliplr(A)

D=rot90(A)

E=repmat(A,[1 2])

9944dade33242403a3bf14aa493fc8f4.png

输出结果如下:

b265cb2b196d12786f7aaed7f793ad5e.png

2.      矩阵下标

矩阵元素索引可分为双下标索引和单下标索引。

双下标索引通过两个下标对来对应元素在矩阵中的位置,例如A(2,3)表示矩阵A中第2行第3列的元素。

单下标索引通过一个下标对来对应元素在矩阵中的行列位置,其采用列元素优先的原则,对m行n列的矩阵按列排序进行重组,成为一位数组,再取新的一维数组中的元素位置作为元素在矩阵中的单下标。例如对于3x4的矩阵,A(3)表示矩阵A中第3行第1列的元素,A(7)表示矩阵A中第1行第3列的元素,而A(9)表示矩阵A中第3行第3列的元素。

下面介绍访问矩阵元素的具体方法。

  • 矩阵下标引用

索引表达式

说明

A(i)

将二维矩阵A重组为一维数组, 返回数组中第i个元素

A(:,i)

返回二维矩阵A中第j列列向量

A(i,:)

返回二维矩阵A中第i行行向量

A(:,j:k)

返回由二维矩阵A中的第j列到第k列列向量组成的子阵

A(i:k,:)

返回由二维矩阵A中的第i行到第k行行向量组成的子阵

A(i:k,j:1)

返回由二维矩阵A中的第i-k行行向量和第j~1列列向量的交集组成的子阵

A(:)

将矩阵A中的每列合并成一个长的列向量

A(j:k)

返回一个行向量,其元素为A(:)中的第j个元素到第k个元素

A([j1j2...])

返回一个行向量,其中的元素为A(:)中的第j1、j2元素

A(:,[j1j2…])

返回矩阵A的第j1列、第j2列等的列向量

A([i1i2...J]:,)

返回矩阵A的第i1行、第i2行等的行向量

A([i1i2...],[i1j2..])

返回矩阵第i1行、第i2行等和第j1列、第j2列等的元素

例:矩阵下标的引用示例。

在命令窗口输入:

>> M=magic(5),SubM=M(2:3,3:4),AM=M([7:816:18])

88abc9632016c8c36cdf3089c2c731c1.png

输出结果如下:

fcc0bf7336797cef9d91fab743084c71.png

  • 引用转换

矩阵中某一元素的单下标索引值和双下标索引值之间,可以通过sub2ind函数进行转换。

例:单双下标索引值转换。

在命令窗口输入:

>> ind=sub2ind([3 4],1,3),[I J]=ind2sub([34],7)

输出结果如下:

  • 访问多个矩阵元素

例:访问多个矩阵元素示例。

在命令窗口输入:

>> A=magic(3)

A1=A(1:2:9)

A2=A(1:3,1:2)

输出结果如下:

3.      矩阵信息

矩阵信息主要包括矩阵结构、矩阵大小、矩阵维度、矩阵的数据类型及内存占用。

  • 矩阵结构

矩阵结构是指矩阵子元素的排列方式。MATLAB提供了如表所示结构判断函数,这类函数的返回值是逻辑类型的数据:返回值为“1”表示该矩阵是特定类型的矩阵;否则,返回“0”。

函数名称

函数功能

isempty(A)

判断矩阵是否为空

isscalar(A)

判断矩阵是否是单元素的标量矩阵

isvector(A)

判断矩阵是否指具有一行或一列的一维向量

isspatse(A)

判断数组是否稀疏矩阵

例:矩阵结构判断函数的使用方法。

在命令窗口中输入:

ba30844aeff655e9d964c87959aab2ef.png

输出结果如下:

67dfc50c739d8ebff354ba182c7042ad.png

  • 矩阵大小

矩阵的形状信息通常包括:

矩阵的维数;

矩阵各维长度;

矩阵元素个数。

MATLAB提供了4个函数,分别获取矩阵形状以上三个方面的信息,见下表:

函数

调用格式

描述

ndims

nd=ndims(X)

获取矩阵维数

size

[r,c]=size(X)

获取矩阵各维长度

length

l=length(X)

获取矩阵最长维长度

numel

n=numel(X)

获取矩阵元素个数

例:矩阵形状信息查询函数的使用示例。

在命令窗口输入:

>> X=[magic(3) [1 1 1]']

nd=ndims(X)

[r,c]=size(X)

l=length(X)

n=numel(X)

74242e4d314168228a69959c0842af62.png

输出结果如下:

0a9abcb3dc454cf5f0ef2acb38235153.png

  • 矩阵维度

MATLAB将空矩阵、标量矩阵、一维矩阵和二维矩阵都作为普通二位数组对待,并提供ndims函数计算矩阵维度。

例:矩阵维度示例。

在命令窗口输入:

>> A=[];B=5;C=1:3;D=zeros(2);E(:,:,2)=[1 2;34];

Nd=[ndims(A) ndims(B) ndims(C) ndims(D) ndims(E)]

d13a1f21493c5c026a697b3b81e612fe.png

输出结果如下:

191f30ce7ec57bd70157b35e67206afe.png

  • 矩阵数据类型

矩阵的元素可以使用各种各样的数据类型,对应不同数据类型的元素,可以是数值、字符串、单元数组、结构等。

MATLAB中提供了一系列关于 数据类型的判断函数,如下表所示。这类函数的返回 值是逻辑类型数据:返回值为“1”表示是某一特定的数据类型: 返回值为“0”表示不是该特定的数据类型。

函数名称

函数功能

isnumeric

判断矩阵元素是否为数值型变量

isreal

判断矩阵元素是否为实数数值型变量

isfloat

判断矩阵元素是否为浮点数值型变量

isinteger

判断矩阵元素是否为整数型变量

islogical

判断矩阵元素是否为逻辑型变量

ischar

判断矩阵元素是否为字符型变量

isstruct

判断矩阵元素是否为结构体型变量

iscell

判断矩阵元素是否为元胞型变量

iscellstr

判断矩阵元素是否为结构体的单元数组型变量

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值