Matlab矩阵和数组
2013-10-26 16:36
218 查看
1. 数组和矩阵
数组:用空格或者逗号间隔数组元素,用方括号括起来
构造数组的方法:增量法和linspace函数法
增量法:>> b=10:2:15
b =
10 12 14
>> a=10:15
a =
10 11 12 13 14 15
>> b=3.3:5.5
b =
3.3000 4.3000 5.3000
>> 9:-1:1
ans =
9 8 7 6 5 4 3 2 1
Linspace:x=linspace(first,last,num) first,last首位元素,num是个数(输出几个数)
>> x=linspace(1,9,9)
x =
1 2 3 4 5 6 7 8 9
>> x=linspace(1,9,2)
x =
1 9
矩阵:Matlab中,二维数组称为矩阵。
创建矩阵最简单的方法是用[ ] ,在方括号内输入多个元素可以创建矩阵的一个行,并用逗号或者空格把每个元素间隔开:
>> row=[1 3 5 7 9]
row =
1 3 5 7 9
>> row=[1,3,5,7,9]
row =
1 3 5 7 9
如果想开始一个新行,则用分号终止当前行:
>> A=[1 2 3;4 5 6;7 8 9]
A =
1 2 3
4 5 6
7 8 9
构造特殊矩阵:
构造特殊矩阵用函数来实现:
特殊矩阵构造函数如下表所示:
A=zero(4,6,’uint32’)
A=magic(5)
A=rand(5)*20
A=[1 23 4 5 6 7 ];
B=diag(A,0) % A中的元素为对角线
3、聚合矩阵
聚合矩阵是通过连接一个或多个矩阵来形成新的矩阵。表达式 C=[A,B]在水平方向上聚合矩阵A和B,表达式C=[A;B]将在垂向上聚合他们。
A =
1 1 1 1 1
1 1 1 1 1
B =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
C=[A;B]
C =
1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
可以用聚合的方法创建矩阵甚至多维数组,但不能生成不规则的形状,只能是矩形。(此时要注意行数和列数是否匹配)
矩阵聚合函数
cat() 沿指定的维数聚合矩阵
horzcat()水平聚合矩阵
vercat() 垂向聚合矩阵
repmat() 通过复制和叠置矩阵来创建新矩阵
blkdiag() 用已有矩阵创建块对角矩阵
>> A=[8 1 6;3 5 7;4 9 2]
A =
8
1 6
3
5 7
4
9 2
>> B=repmat(A,2,4)
B =
8
1 6 8
1 6 8
1 6 8
1 6
3
5 7 3 5 7
3 5 7 3
5 7
4
9 2 4
9 2
4 9 2 4
9 2
8
1 6
8 1 6
8 1 6 8
1 6
3
5 7 3
5 7
3 5 7 3
5 7
4
9 2 4
9 2
4 9 2 4
9 2
>> A=magic(3);
>> B=[-5 -6 -9;-4 -4 -2];
>> C=eye(2)*8;
>> D=blkdiag(A,B,C)
>> D =
8
1 6 0 0 0 0 0
3
5 7 0 0 0 0 0
4
9 2 0 0 0 0 0
0 0 0
-5
-6 -9 0 0
0 0 0
-4
-4 -2 0 0
0 0 0 0 0 0
8 0
0 0 0 0 0 0
0 8
4、组合不同类型的数据
构造矩阵时,如果矩阵的数据类型不同,则MATLAB会自动对某些元素进行类型转换,然后生成的矩阵具有相同的类型。
用一个高精度的矩阵和一个低精度的矩阵构造新矩阵时,新矩阵是低精度的。例如,聚合double型和single型的矩阵。MATLAB会将double型元素转换为single型。
1)single型和double型矩阵聚合----------single型
2)integer型和double型矩阵聚合---------int8型
3)字符型和double型聚合----------------字符型
4)逻辑型和double型聚合--------------double型
例子:
>>x=[true false false pi sqrt(7)]
x =
1.0000 0 0 3.1416 2.6458
>>class(x)
ans =
double
5获取矩阵的元素
利用编号和索引,可以获取MATLAB矩阵的元素:
>> A=magic(4)
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> A(4,2)
ans =
14
给出一个矩阵:
>> A=[2 6 9;4 2 8;3 0 1]
A =
2 6 9
4 2 8
3 0 1
在内存中是按下面的序列保存的:
2,4,3,6,2,0,9,8,1
矩阵A
的第3行第2列元素可以看做实际保存序列中的第6个元素,要获取这个元素,可以使用标准语法A(3,2)和A(6).在使用线性索引方式时,如果矩阵大小为[d1,d2]即d1行d2列,则位置(i,j)处的元素在保存序列中的位置为:
(j-1)d1+i
举例:
>>
A=[26 9;4 2 8;3 0 1];
>>linearindex=sub2ind(size(A),3,2)
linearindex =
6
>> [rowcol]=ind2sub(size(A),6)
row =
3
col =
2
冒号运算符
A =
2 6 9
4 2 8
3 0 1
>> A(1:2:end)=-10
A =
-10 6 -10
4 -10 8
-10 0 -10
6、获取与矩阵有关的信息
length( ) 返回最长维的长度
ndims( )
返回维数
numel ( ) 返回元素个数
size() 返回每一维的长度
求平均值用numel()函数实现
>> A=rand(5)*10;
A(4:5,:)=[]
A =
1.9343 6.9790 4.9655 6.6023 7.2711
6.8222 3.7837 8.9977 3.4197 3.0929
3.0276 8.6001 8.2163 2.8973 8.3850
sum(A(:))/numel(A)
ans =
5.6663
数组:用空格或者逗号间隔数组元素,用方括号括起来
构造数组的方法:增量法和linspace函数法
增量法:>> b=10:2:15
b =
10 12 14
>> a=10:15
a =
10 11 12 13 14 15
>> b=3.3:5.5
b =
3.3000 4.3000 5.3000
>> 9:-1:1
ans =
9 8 7 6 5 4 3 2 1
Linspace:x=linspace(first,last,num) first,last首位元素,num是个数(输出几个数)
>> x=linspace(1,9,9)
x =
1 2 3 4 5 6 7 8 9
>> x=linspace(1,9,2)
x =
1 9
矩阵:Matlab中,二维数组称为矩阵。
创建矩阵最简单的方法是用[ ] ,在方括号内输入多个元素可以创建矩阵的一个行,并用逗号或者空格把每个元素间隔开:
>> row=[1 3 5 7 9]
row =
1 3 5 7 9
>> row=[1,3,5,7,9]
row =
1 3 5 7 9
如果想开始一个新行,则用分号终止当前行:
>> A=[1 2 3;4 5 6;7 8 9]
A =
1 2 3
4 5 6
7 8 9
构造特殊矩阵:
构造特殊矩阵用函数来实现:
特殊矩阵构造函数如下表所示:
函数 | 功能 |
ones | 创建一个所有元素都为1的矩阵 |
zero | 创建一个所有元素都为0的矩阵 |
eye | 创建对角线元素为1,其他元素为0的矩阵 |
accumarray | 将输入矩阵的元素分配到输出矩阵中的指定位置 |
diag | 根据矢量创建对角矩阵 |
magic | 创建一个方形矩阵,其中行、列和对角线上元素的和相等 |
rand | 创建一个矩阵或者数组,其中的元素为服从均匀分部的随机数 |
randn | 创建一个矩阵或数组,其中的元素为服从正态分布的随机数 |
randperm | 创建一个矢量(1*n的矩阵) |
A=magic(5)
A=rand(5)*20
A=[1 23 4 5 6 7 ];
B=diag(A,0) % A中的元素为对角线
3、聚合矩阵
聚合矩阵是通过连接一个或多个矩阵来形成新的矩阵。表达式 C=[A,B]在水平方向上聚合矩阵A和B,表达式C=[A;B]将在垂向上聚合他们。
A =
1 1 1 1 1
1 1 1 1 1
B =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
C=[A;B]
C =
1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
可以用聚合的方法创建矩阵甚至多维数组,但不能生成不规则的形状,只能是矩形。(此时要注意行数和列数是否匹配)
矩阵聚合函数
cat() 沿指定的维数聚合矩阵
horzcat()水平聚合矩阵
vercat() 垂向聚合矩阵
repmat() 通过复制和叠置矩阵来创建新矩阵
blkdiag() 用已有矩阵创建块对角矩阵
>> A=[8 1 6;3 5 7;4 9 2]
A =
8
1 6
3
5 7
4
9 2
>> B=repmat(A,2,4)
B =
8
1 6 8
1 6 8
1 6 8
1 6
3
5 7 3 5 7
3 5 7 3
5 7
4
9 2 4
9 2
4 9 2 4
9 2
8
1 6
8 1 6
8 1 6 8
1 6
3
5 7 3
5 7
3 5 7 3
5 7
4
9 2 4
9 2
4 9 2 4
9 2
>> A=magic(3);
>> B=[-5 -6 -9;-4 -4 -2];
>> C=eye(2)*8;
>> D=blkdiag(A,B,C)
>> D =
8
1 6 0 0 0 0 0
3
5 7 0 0 0 0 0
4
9 2 0 0 0 0 0
0 0 0
-5
-6 -9 0 0
0 0 0
-4
-4 -2 0 0
0 0 0 0 0 0
8 0
0 0 0 0 0 0
0 8
4、组合不同类型的数据
构造矩阵时,如果矩阵的数据类型不同,则MATLAB会自动对某些元素进行类型转换,然后生成的矩阵具有相同的类型。
用一个高精度的矩阵和一个低精度的矩阵构造新矩阵时,新矩阵是低精度的。例如,聚合double型和single型的矩阵。MATLAB会将double型元素转换为single型。
1)single型和double型矩阵聚合----------single型
2)integer型和double型矩阵聚合---------int8型
3)字符型和double型聚合----------------字符型
4)逻辑型和double型聚合--------------double型
例子:
>>x=[true false false pi sqrt(7)]
x =
1.0000 0 0 3.1416 2.6458
>>class(x)
ans =
double
5获取矩阵的元素
利用编号和索引,可以获取MATLAB矩阵的元素:
>> A=magic(4)
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> A(4,2)
ans =
14
给出一个矩阵:
>> A=[2 6 9;4 2 8;3 0 1]
A =
2 6 9
4 2 8
3 0 1
在内存中是按下面的序列保存的:
2,4,3,6,2,0,9,8,1
矩阵A
的第3行第2列元素可以看做实际保存序列中的第6个元素,要获取这个元素,可以使用标准语法A(3,2)和A(6).在使用线性索引方式时,如果矩阵大小为[d1,d2]即d1行d2列,则位置(i,j)处的元素在保存序列中的位置为:
(j-1)d1+i
举例:
>>
A=[26 9;4 2 8;3 0 1];
>>linearindex=sub2ind(size(A),3,2)
linearindex =
6
>> [rowcol]=ind2sub(size(A),6)
row =
3
col =
2
冒号运算符
A =
2 6 9
4 2 8
3 0 1
>> A(1:2:end)=-10
A =
-10 6 -10
4 -10 8
-10 0 -10
6、获取与矩阵有关的信息
length( ) 返回最长维的长度
ndims( )
返回维数
numel ( ) 返回元素个数
size() 返回每一维的长度
求平均值用numel()函数实现
>> A=rand(5)*10;
A(4:5,:)=[]
A =
1.9343 6.9790 4.9655 6.6023 7.2711
6.8222 3.7837 8.9977 3.4197 3.0929
3.0276 8.6001 8.2163 2.8973 8.3850
sum(A(:))/numel(A)
ans =
5.6663
相关文章推荐
- vc定义数组在matlab矩阵存储方式
- Matlab教程1_矩阵(数组) _ 一维数组的创建
- MATLAB中矩阵与数组的区别,点运算符的运用
- Matlab数组与矩阵
- matlab 矩阵,数组,算术运算及实例(2)
- matlab---数组、矩阵
- Matlab矩阵和数组运算
- 关于MATLAB入门的简单记录8 高维数组与稀疏矩阵/三维作图
- matlab 数组与矩阵
- matlab 中一些对数组或矩阵的处理
- MATLAB学习笔记之-----数组、矩阵、向量索引和逻辑索引
- Matlab数组、矩阵技巧
- matlab中的数组与矩阵
- MATLAB中通过矩阵索引值求元素下标以及转为C语言数组下标
- MATLAB 7.0 学习入门 -- (练习二 矩阵和数组基本操作)
- Matlab与线性代数 -- 数组与矩阵的乘幂
- MATLAB中矩阵与数组的区别,点运算符的运用
- 【matlab】练习2:矩阵和数组的一般操作
- MATLAB中依据数组下标去矩阵中元素
- Matlab练习——矩阵和数组的操作