**
MATLAB——操作矩阵的常用函数
**
本篇文章的函数目录
函数名
作用
size(x)
用于求矩阵x的大小
sort(x)
可对x进行升序排序,x为向量、数组、矩阵等等
find(x)
用来返回向量或者矩阵中不为0的元素的索引
numl(A)
返回数组A中元素的个数
ismember(A,B)
集合成员判断B中成员和A成员是否相等,相等的位置用1,否则用0
findstr(A,B),strfind(A,B)
在A,B中较长的字符串中查找较短的字符串出现的次数
setdiff(A,B)
返回在数组A中有B中没有的值,并将其结果向量以升序排序返回
intersect(A,B)
返回A和B共有的数据,但不包含重复项,将其结果按升序排序
unique(x)
去掉矩阵x中重复的值并按升序排序详细介绍
1、size(x):用来求矩阵的大小
比如说一个A是一个3×4的二维矩阵:
size(A) %直接显示出A大小
输出:ans=
3 4
s=size(A)%返回一个行向量s,s的第一个元素是矩阵的行数,第二个元素是矩阵的列数
输出:s=
3 4
[r,c]=size(A)%将矩阵A的行数返回到第一个输出变量r,将矩阵的列数返回到第二个输出变量c
输出:r=
3
c=
4
size(A,n)如果在size函数的输入参数中再添加一项n,并用1或2为n赋值,则 size将返回矩阵的行数或列数。其中r=size(A,1)该语句返回的时矩阵A的行数, c=size(A,2) 该语句返回的时矩阵A的列数。
2、sort(x) :可以对参数的元素进行升序排序或降序排
sort()的参数可以是向量,矩阵,数组等等。当X是向量时,sort(X)对X的元素进行升序排序;当X是矩阵时,sort(X)对X的每一列进行升序排序;
.>A=magic(3)
A =
8 1 6
3 5 7
4 9 2
.>sort(A)
ans =
3 1 2
4 5 6
8 9 7
Y=sort(X,DIM,MODE)
参数DIM表示对哪一个维数进行排序,例如当X是一个二维矩阵,当DIM=1时表示对X的每一列进行排序,当DIM=2时表示对X的每一行进行排序。
参数MODE表示按哪一种模式进行排序,当MODE=‘ASCEND’的时进行升序排序,当MODE=‘DESCEND’时,进行降序排序。
Y返回已经排好序的X。
3、find(x):用来返回向量或者矩阵中不为0的元素的位置索引
.> X = [1 -3 0;0 0 8;4 0 6]
X =
1 -3 0
0 0 8
4 0 6
.>X = [1 0 2; 0 1 1; 0 0 4]
X =
1 0 2
0 1 1
0 0 4
.>k = find(X)
k =
1
5
7
8
9
find(x,k):返回前k的不为0的元素:
.>ind = find(X,2)
ind =
1 3
也可写成:
ind = find(X,2,‘first’)
ind =
1 3
返回最后k个不为0的元素:
ind = find(X,2,‘last’)
ind =
8 9
[m,n] = find(B,2)返回的是矩阵B中大于2的坐标。
[i,j,v]=find(A) 返回矩阵A中非零元素所在的行i,列j,和元素的值v(按所在位置先后顺序输出)
A=[3 2 0; -5 0 7; 0 0 1];
.> [i,j,v]=find(A)
i =
1
2
1
2
3
j =
1
1
2
3
3
v =
3
-5
2
7
1
4、numl(A):返回数组A中的元素个数
5、ismember(A,B):集合成员,判断B中成员是否和A中成员数值相等,相等的位置用1,否则为0
A = [5 3 4 2];
B = [2 4 4 4 6 8];
Determine which elements of A are also in B.
Lia = ismember(A,B)
Lia =
0 0 1 1
A(3) and A(4) are found in B.
6、findstr(A,B)/stirfind(A,B):在A,B中较长的字符串中查找较短的字符串出现的次数
matlab中这两个字符串查找的函数findstr(), strfind()表明上看起来用法相似,效果也相似。
findstr(s1,s2)–在较长的字符串中查找较短的字符串出现的次数,并返回其位置,因此无论s1,s2哪个为长字符串,位置在前在后都没有关系。
例:
s = ‘Find the starting indices of the shorter string.’;
findstr(s, ‘the’)
ans =
6 30
findstr(‘the’, s)
ans =
6 30
strfind(s1,s2)–or strfind(s1,pattern),因此其意思在s1中搜索pattern
例:
S = ‘Find the starting indices of the pattern string’;
strfind(S, ‘in’)
ans =
2 15 19 45
strfind(S, ‘In’)
ans =
[]
7、setdiff(A,B):判断两个数组中的不同元素
C = setdiff(A,B):
返回在A中有,而B中没有的值,结果向量将以升序排序返回。在集合论中,c = A - B.A和B也可以是字符串细胞数组。
C = setdiff(A,B,‘rows’):
当A和B是具有相同列数的矩阵时,返回A中有而B中没有的那些行
8、intersect(A,B):设置两个数组的交集
C = intersect(A,B) 返回 A 和 B 的共有数据,但是不包含重复项。C 已排序。
C = intersect(A,B,setOrder) 以特定顺序返回 C。setOrder 可以是 ‘sorted’ 或 ‘stable’。
[c, ia, ib] = intersect(A, B);这个函数是c返回A B的交集,ia,ib返回的是 交集 所在 数组的指标
9、unique(A):去掉矩阵A中的重复元素
b = unique(A) 返回的是和A中一样的值,但是没有重复元素。产生的结果向量按升序排序。A可以是一个字符串的单元阵列。b可能为行向量也可能为列向量。
b = unique(A,‘rows’) 获取矩阵A的不同行向量构成的矩阵。
[b,m,n] = unique(A) 也返回索引向量m和n,使得B = A(M)和A= B(N)。m的每一个元素是最大的下标,使得B = A(M)。对于行的组合,B = A(M,:)和A=B(N,:)。 m为矩阵b中的元素在矩阵A中的位置。n为矩阵A中的元素在矩阵b中的位置。