MATLAB中学到的数据类型的变量都是数组类型,向量也称一维数组,矩阵称二维数组。
7.1一维数组(向量)
一维数组是最简单的数组,是最容易创建和使用的数组,MATLAB中创建一维数组的方法有五种:分别是直接输入法、冒号发、转置发、函数linspace创建法、函数logspace法。
实例:一维数组创建的五种方法
%直接输入法
%创建一行一维数组
>> x=[2 4 6 8 10]
x =
2 4 6 8 10
>> %冒号法
>> x=2:2:10
x =
2 4 6 8 10
>> %转置法
>> x=[2:1:2*pi]'
x =
2
3
4
5
6
>> %函数linspace
>> %linspace(first_value,last_value,num)
>> %该方法中第一个是开始数值,第二个是结束的数值,最后一个是元素的个数
>> x=linspace(0,10,11)
x =
0 1 2 3 4 5 6 7 8 9 10
>> %利用函数logspace
>> %logspace(first_value,last_value,num)
>> %该方法第一个数值为10^firsst_value,结束为10^last_value,最后一个是元素的个数
>> x=logspace(1,3,4)
x =
1.0e+03 *
0.0100 0.0464 0.2154 1.0000
7.2 二维数组(矩阵)
二维数组也称矩阵, MATLAB就是matrix laboratory(矩阵实验室)的缩写,可见矩阵在MATLAB中的分量有多大。
7.2.1二维数组的定义
二维数组(矩阵)是MATLAB操作的基本单位,矩阵的运算非常的便捷、高效。二维数组是由m*n个数aij排列而成,记成:
A= a11 a12 ……a1n
a21 a22 ……a2n
……………………...
am1 am2 ……amn
注意:由有限个向量组成构成二维数组(矩阵),如果A=(aij)是矩阵m*n矩阵,那么有m个n维行向量,有n个m为列向量。
矩阵的生成主要有直接输入法,M文件生成法和文本文件生成。
实例:二维数组的创建
·直接输入创建二维数组
创建元素为1,3*3矩阵
>> m=[1 1 1;1 1 1;1 1 1]
m =
1 1 1
1 1 1
1 1 1
·利用m文件创建二维数组
当矩阵的数据规模比较大时,直接输入会觉得非常的麻烦而容易出错,出错了也不容易更改,为了解决这一状况,MATLAB提供了可也将二维数组按一定的格式写入文本文件,并将其拓展名命名为m,即M文件。
实例:使用M文件生成二维数组
%创建一个为matrix.m的文件,输入如下代码
matrix1=[123 456 789 12 23;234 46 47 89 528;4564 7897 4568 7895 48955;202 203 505 564 4562]
%在命令行中运行M文件
>> matrixdemo
matrix1 =
123 456 789 12 23
234 46 47 89 528
4564 7897 4568 7895 48955
202 203 505 564 4562
·文本创建
利用文本创建二维数组只要在文件夹中创建txt格式文件,然后在命令行中调用即可,
实例:利用文本进行二维数组的创建
现在文本文件中建立文件,输入如下数组,文件名命名为wenbendemo.txt
3 5 8
10 20 30
在命令行中调取;
>> load wenbendemo.txt
>> wenbendemo
wenbendemo =
3 5 8
10 20 30
7.3多维数组
当数组的维度超过了二维时,就称为多维数组,MATLAB中的多维数组是二维数组的扩展,每个多维数组都要先创建一个二维数组,然后在二维数组的基础上增加维度。
实例:创建三维数组的方法:
先创建一个二维数组
>> a = [9 8 5;2 1 1;1 1 1]
a =
9 8 5
2 1 1
1 1 1
>> a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]
a(:,:,1) =
9 8 5
2 1 1
1 1 1
a(:,:,2) =
1 2 3
4 5 6
7 8 9
利用cat()函数也可以构建多维数组
cat()的语法规则:
a=cat(dim,A1,A2…)
a是创建的数组名称
A1,A2是要创建连接的数组
dim是连接数组的大小
实例:cat()创建多维数组
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])
>> catdemo
c(:,:,1) =
9 8 7
6 5 4
3 2 1
c(:,:,2) =
1 2 3
4 5 6
7 8 9
c(:,:,3) =
2 3 1
4 7 8
3 9 0
7.4特殊数组
在MATLAB中有一些特殊的数组函数,这些函数能创建出现一些特殊的数组
·全零数组:zero()
实例:>> zeros(6)
ans =
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
·全一数组:ones()
实例:>> ones(6)
ans =
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
·单位矩阵:eye()
实例:>> eye(6)
ans =
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1
·随机数数组:rand()
实例:>> rand(6)
ans =
0.8147 0.2785 0.9572 0.7922 0.6787 0.7060
0.9058 0.5469 0.4854 0.9595 0.7577 0.0318
0.1270 0.9575 0.8003 0.6557 0.7431 0.2769
0.9134 0.9649 0.1419 0.0357 0.3922 0.0462
0.6324 0.1576 0.4218 0.8491 0.6555 0.0971
0.0975 0.9706 0.9157 0.9340 0.1712 0.8235
7.4魔方
魔方是一个平方矩阵,他的每一列,每一行,对角线相加都相等。利用magic()函数创建,但需要注意的是括号内的参数要大于或等于3。
实例:>> magic(6)
ans =
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
7.5排序数组
在实际使用时,用户经常需要对数组进行排序,MATLAB提供了一个排序的函数(sort())可以对数组进行排序,不需要用户辛苦的去对函数进行排序,MATLAB将这种数组称为排序数组
实例:先创建脚本文件sortdemo.m,代码如下
v = [ 03 25 32 9 7 0 13 17]
sort(v)
m = [9 8 5; 5 3 9; 2 1 1]
sort(m, 1)
sort(m, 2)
命令行代码
>> sortdemo
v =
3 25 32 9 7 0 13 17
ans =
0 3 7 9 13 17 25 32
m =
9 8 5
5 3 9
2 1 1
ans =
2 1 1
5 3 5
9 8 9
ans =
5 8 9
3 5 9
1 1 2
7.6数组函数
MATLAB为用户提供了一些操作数组的函数,帮助用户能够更好的对MATLAB进行操作。
下面给出了一些常用的数组函数:
函数 | 功能 |
Length | 数组长度 |
Numel | 数组元素个数 |
Size | 数组维度 |
Queeze | 删除单列维度 |
Iscolumn | 是否为列向量 |
Isrow | 是否为行向量 |
Isempty | 是否为空 |
Isscalar | 是否为标量 |
Isvector | 是否为向量 |
实例:求出一个数组的维度
>> b=size(a)
b =
2 3