matlab怎么输入二维数组,2-matlab使用笔记之数组与矩阵

本文笔记来自《MATLAB-R2014a完全自学一本通》,记录了一些常用的操作,更详细的操作请看书本~

【目录】

0.MATLAB的数据类型

1.结构体类型

a.创建结构体对象

1.矩阵

1.矩阵运算

a. 求矩阵中元素的平均值

2.矩阵结构

a. 矩阵的构造

b. 矩阵大小及结构的改变

c. 矩阵的数据类型

d. 矩阵占用的内存

3.矩阵的保存和加载

a. 矩阵在MATLAB中的存储方法

b. 矩阵元素的寻址

2.数组

1.数组的创建和操作

【正文】

0.MATLAB的数据类型

包括数值类型、逻辑类型、字符和字符串、函数句柄、结构体类型、数组类型、单元数组类型、map容器类型

1.结构体类型

a.创建结构体对象

通过字段赋值创建

例:

A.Name='Sam';

A.Grade=6;

A.Subject={'Chinese'};

A.Result={99};

A

%结果

% A =

%

% Name: 'Sam'

% Grade: 6

% Subject: {'Chinese'}

% Result: {[99]}

通过结构体创建函数struct创建

例:

S=struct('Day','Wednesday','Time','15:00','number',18);

%结果

% S =

%

% Day: 'Wednesday'

% Time: '15:00'

% number: 18

1.矩阵

矩阵与数组的联系主要体现在:在MATLAB中,矩阵是以数组的形式存在的,因此一维数组相当于向量,二维数组相当于矩阵,所以矩阵是数组的子集。

1.矩阵运算

矩阵运算包括矩阵求和、求平均、求最大最小值等

例如:求矩阵中元素的平均值

分为按列平均、按行平均和全部平均

A=rand(3)

a=mean(A,1) %按列平均

b=mean(A,2) %按行平均

c=mean(A(:)) %全部平均

结果如下:

a4f389a00a44

2.矩阵结构

矩阵的基本操作主要有矩阵的构建、维度、矩阵大小的改变、矩阵的索引、矩阵属性信息的获取、矩阵结构的改变等。

在MATLAB中,单个实数或者复数都是以矩阵的形式存储的,单个数据或由单个数据构造的矩阵都是标量。

a. 矩阵的构造

空矩阵[]默认为二维

创建一个三维零矩阵X:

X=zeros(8,10,50)

可以理解为有50个8行10列的矩阵

矩阵中符号的意义:

逗号和空格意义相同,用于分隔同行元素;

“;”用于分隔不同的行;

矩阵下标的引用:

分为双下标索引和单下标索引

双下标索引:A(2,3)表示矩阵第二行第3列

单下标索引:A(7)在4x4的矩阵中表示第3行第2列的数(列元素优先,按列排序进行重组,成为一维数组)

下标为:时,表示下标为所有的行或列,是行还是列要视情况而定

下标为i:j时,表示下标为对应i到j的行或列

下标为[i1,i2,...]时,表示下标为对应i1,i2,...的行或列

双下标索引和单下标索引的转换:

双变单:IND=sub2ind(siz,i,j);siz可直接用size(A)表示,表示转换矩阵的列数,IND表示转换后的单下标索引值;

单变双:[I,J]=ind2sub(siz,ind),I和J分别表示单值二维索引的行号和列号

其它:

end可以表示一串数字中的最后一个,例如:A(2:end)表示矩阵A的单下标索引从第2行或第二列到最后一行或一列

数组元素反序输出:A(end:-1:1)

矩阵结构的判断

是否为空:isempty(A)

是否是单元素的标量矩阵:isscalar(A)

是否是只有一行或一列元素的一维向量:isvector(A)

数组是否是稀疏矩阵:issparse(A)

b. 矩阵大小及结构的改变

矩阵的大小

math?formula=%5Cdiamond 矩阵的维度的获取:n=ndims(X)

math?formula=%5Cdiamond 矩阵各维度长度的获取:[m,n]=size(X),其中````size(X,dim)```可以获得指定维度的长度,1表示行,2表示列

math?formula=%5Cdiamond n=length(X)表示获取矩阵最长维的长度

math?formula=%5Cdiamond 获取矩阵元素的个数:n=numel(X)

矩阵的旋转与维度的改变

math?formula=%5Cdiamond 行和列的逆序排列:分别用fliplr(X)、flipud(X)

math?formula=%5Cdiamond 逆时针旋转,90°和kx90°rot90(X)、rot90(X,k)

math?formula=%5Cdiamond 将矩阵A和B组合成一个dim维的多维矩阵:cat(dim,A,B),举个栗子:A=[1 2 3],B=[4 5 6],dim=3,那么最后的矩阵C中矩阵的排列方式为:

math?formula=C%3D%5Cleft(%20%5Cbegin%7Bmatrix%7D%201%20%26%204%5C%5C%202%20%26%205%20%5C%5C%203%20%26%206%20%5Cend%7Bmatrix%7D%20%5Cright)

这里也可以看出向量的默认排列方式是按列排列(在内存中是按列存储)矩阵A和B需要具有相同的维度,cat函数,还有一些其它函数形成的多维矩阵都是后两维表示行数和列数,而第一维可以理解成是一行C。

math?formula=%5Cdiamond将一维或二维矩阵进行升序或降序排序:sort(A),二维矩阵时,对每一列分别进行排序;sort(A,dim)按dim指定的方向进行排序,dim=1按列排序,dim=2按行排序;sort(A,dim,mode)mode='ascend'为升序,mode='descend'为降序;得到排序后元素在原矩阵中的行位置或列位置的索引IX:[B,IX]=sort(A,...)

删除矩阵元素

见3中 3)矩阵元素的赋值

c. 矩阵的数据类型

下表是矩阵数据类型的测试函数,从中也可以看出矩阵的数据类型的种类

a4f389a00a44

矩阵数据类型的测试函数

下面是cell单元的相关内容:

cell单元(也叫矩阵的元胞类型结构)

cell每个单元的数据之间用逗号,隔开,最外层用{}大括号括起来,单元内可以用不同格式的数据

Matlab中的向量是按列存储的(按列存储是指在多维数组内存中是一列一列逐个放元素的),关于为什么按列存储,比较合理的说法是在设计Matlab语言时,最流行的语言是Fortran,而Fortran恰好是按列存储。

看这个讨论可以更加了解:matlab和Fortran二维数组为什么按列优先存储?

math?formula=%5Cdiamond 创建单行cell

a4f389a00a44

math?formula=%5Cdiamond 创建多行cell

cell(m,n)表示创建一个m行n列的cell:

a4f389a00a44

向其中填数据:

a4f389a00a44

获取元胞中的数据:

输入:

A{1,2}(1)

返回2

A{1,2}(方括号)返回的是cell变成的矩阵,所以可以通过A{1,2}(1)得到其中的第1个元素,而通过A(1,2)(圆括号)返回的是一个矩阵,矩阵中的元素是cell类型的,所以需要写成以下方式:

x=A(1,2);

x{1}; %得到cell变成的矩阵

x(1) ; %到此得到第一个元素

d. 矩阵占用的内存

用whos命令:

a4f389a00a44

3.矩阵的保存和加载

a. 矩阵在MATLAB中的存储方法

按列优先的原则依次放置,例如矩阵:

math?formula=C%3D%5Cleft(%20%5Cbegin%7Bmatrix%7D%201%20%26%204%5C%5C%202%20%26%205%20%5C%5C%203%20%26%206%20%5Cend%7Bmatrix%7D%20%5Cright)

(就是上面出现过的矩阵~),它的存储方式在空间中是这样的:

1

2

3

4

5

6

而不是这样的:

1

4

2

5

3

6

b. 矩阵元素的寻址

1)下标寻址方法:

在1中矩阵的构造的矩阵下标索引部分已经记录了具体的使用方法

2)线性寻址

单一下标,该下标是通过矩阵的双下标通过换算得到的,A(i,j)的单一下标为:A((j-1)·m+i),j是所在列,m是总行数

3)矩阵元素的赋值

为单个元素赋值的例子:A(i,j)=value

删除矩阵中的所有元素:

A=[];

4)矩阵元素的扩展与删除

用例子来理解,对矩阵:

A=[1,2;3,4]

%结果:

% A =

%

% 1 2

% 3 4

整行赋值:

A(3,:)=3

%结果

% A =

%

% 1 2

% 3 4

% 3 3

A(4,2)=5;

%结果

% A =

%

% 1 2

% 3 4

% 3 3

% 0 5

默认补一行,没有指定数值的地方会补0

A(2,:)=[]

%结果

% A =

%

% 1 2

% 3 3

% 0 5

此外,还有矩阵合并的函数可以进行更多矩阵的操作:

a4f389a00a44

矩阵合并函数

2.数组

1.数组的创建和操作

创建:

一般使用[]、,、;

如:A=[],B=[6 5 4 3 2 1];

使用:,如:X=A:step:B,A是一维数组的第一个变量,step是每次递增或递减的数值,直到最后一个元素和B的差的绝对值小于等于step的绝对值为止;

使用logspace(a,b,n)创建10a到10b的n个等比数列的行向量,n默认为50

使用linspace(a,b,n),创建a到b的n个等比数列的行向量,n默认为100

用到时继续更新🏃

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值