Matlab矩阵和数组
来源:互联网 发布:windows编程7 编辑:程序博客网 时间:2024/04/29 18:48
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
构造特殊矩阵:
构造特殊矩阵用函数来实现:
特殊矩阵构造函数如下表所示:
函数
功能
ones
创建一个所有元素都为1的矩阵
zero
创建一个所有元素都为0的矩阵
eye
创建对角线元素为1,其他元素为0的矩阵
accumarray
将输入矩阵的元素分配到输出矩阵中的指定位置
diag
根据矢量创建对角矩阵
magic
创建一个方形矩阵,其中行、列和对角线上元素的和相等
rand
创建一个矩阵或者数组,其中的元素为服从均匀分部的随机数
randn
创建一个矩阵或数组,其中的元素为服从正态分布的随机数
randperm
创建一个矢量(1*n的矩阵)
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
- MATLAB矩阵和数组
- Matlab矩阵和数组
- Matlab--矩阵和数组
- Matlab矩阵和数组运算
- MATLAB之数组和矩阵
- Matlab基础学习------------数组和矩阵
- Matlab软件的矩阵和数组操作
- matlab 数组与矩阵
- matlab 数组 向量 矩阵
- Matlab数组、矩阵技巧
- matlab---数组、矩阵
- Matlab数组与矩阵
- Matlab 矩阵就是数组 数组就是矩阵
- matlab中() [] {} 数组 向量 矩阵
- matlab:矩阵/数组常用操作
- matlab 数组矩阵基本运算
- matlab中的数组与矩阵
- matlab 矩阵/数组使用总结
- 手机操作网络模式
- static关键字详解
- Django TemplateView理解 Part2
- 你一笑 曾经让我傻半天
- java 获取IP
- Matlab矩阵和数组
- Android数据存储方式之SharedPreference
- 2014校招札记
- Broadcast(广播)和BroadcastReceiver(广播接收器)
- extern 详解
- 四大组件
- C语言动态生成二维数组(最简单实用版)
- Matlab_2012a安装教程
- 我爱天文 - 你有星空摄影的知识吗?