目录
1、数组寻址
2、数组元素删除
3、数组查找和排序
(1)数组查找
(2)数组排序
4、数组运算
5、数组操作函数
数组操作主要从以下5部分进行介绍:数组寻址、数组元素的删除、数组查找和排序、数组运算和数组操作函数。
1、数组寻址
数组中含有多个元素,因此对数组的单个元素或多个元素进行访问操作时,需要对数组进行寻址操作。在MATLAB中,数组寻址是通过对数组下标的访问实现的。MATLAB在内存中以列的形式进行二维数组的保存,对于一个m行n列的数组,i表示行的索引、j表示列的索引。对二维数组的寻址可以表示为A(i,j);若采用单下标寻址,则数组中元素的下标h表示为(j-1) * m+i。
例:
>>A =randn(1,4)
A=
-0.4686 -0.2724 1.0984 -0.2778
>> A(2)
ans =
-0. 2724
>>A([1 2])
ans =
-0. 4686 -0.2724
>>A( 3:end)
ans =
1.0984 -0.2778
2、数组元素删除
可以通过将该位置的数组元素赋值为“[ ]”(一般配合冒号使用)实现数组中的某些行、列元素的删除。注意,进行数组元素的删除时,索引值必须是完整的行或列,不能是数组内部的元素块或单个元素。
例:
>> A =rand( 3,3)
A=
0.8530 0.5132 0.2399
0.6221 0. 4018 0.1233
0.3510 0. 0760 0. 1839
>>A([1],:)=[ ]
A=
0.6221 0.4018 0.1233
0.3510 0. 0760 0.1839
3、数组查找和排序
(1)数组查找
MATLAB中提供的查找函数为find函数。find函数语法见表
在实际应用中,元素的查找经常通过多重逻辑关系组合产生的逻辑数组并判断元素是否满足某种比较关系,然后通过find 函数返回符合比较关系的元素索引。
(2)数组排序
数组排序中采用sort 函数进行排序,语法如下。
B= sort(A)
B= sort(A,dim)
B=sort(... ,mode)
[ B,IK] =sort(...)
A为输人等待排序的数组,B为返回的排序后的数组,当A为多维数组时,dim表示排序的维数(默认为1);mode表示排序的方式,取值为升序( ascend)或降序( descend ) ,默认排序方法为升序;IX表示存储排序后的下标数组。
例:
>>A=[ 1 3 4;-3 6 4;3 5 9]
A=
1 3 4
-3 6 4
3 5 9
>> sort(A,1)
ans =
-3 3 4
1 5 4
3 6 9
>> sort( A ,1 , 'descend')
ans =
3 6 9
1 5 4
-3 3 4
4、数组运算
MATLAB中数组的简单运算是按照元素对元素一一对应的方式来进行的。数组运算的符号及说明如表所示。
例:
>>a= magic( 3);
>>a= magic( 3)
a=
8 1 6
3 5 7
4 9 2
>>b= ones(3,3)
b=
1 1 1
1 1 1
1 1 1
>>c=a+b
c=
9 2 7
4 6 8
5 10 3
>>d=a.*b
d=
8 1 6
3 5 7
4 9 2
5、数组操作函数
MATLAB中对数组进行特定操作的库函数如表所示
例:
>>a =ones (2,2)
a=
1 1
1 1
>>b=magic(2)
b=
1 3
4 2
>> cat(1,a,b)
ans =
1 1
1 1
1 3
4 2
>>cat(2,a,b)
ans=
1 1 1 3
1 1 4 2
>>c= rand ( 4)
c=
0.0430 0.6477 0.7447 0.3685
0.1690 0. 4509 0.1890 0.6256
0.6491 0.5470 0.6868 0.7802
0.7317 0.2963 0.1835 0.0811
>>x =diag(c,1)
x =
0.6477 0.1890 0.7802
>>d= flipud(c)
d=
0. 7317 0.2963 0. 1835 0.0811
0. 6491 0.5470 0.6868 0.7802
0.1690 0.4509 0.1890 0.6256
0. 0430 0.6477 0.7447 0.3685
>>e= fliplr(c)
e=
0.3685 0.7447 0.6477 0.0430
0. 6256 0.1890 0.4509 0.I690
0.7802 0.6868 0.5470 0.6491
0.0811 0.1835 0.2963 0.7317
>> a = randn(2)
a=
1.2607 -0.0679 0.6601 -0.1952
>>b= repmat(a,1 ,2)
b=
1.2607 -0.0679 1. 2607 -0.0679
0.6601 -0.1952 0.6601 -0. 1952
>>c= reshape(b,4,2)
c=
1.2607 1.2607
0.6601 0.6601
-0.0679 -0.0679
-0.1952 -0.1952
>> size(c)
ans =
4 2