1.求两组数据(向量)的交集
在实际应用中通常会通过求两个向量的交集来统计数据出现的概率大小
A=[1,2,3,4,5];
B=[2,3,4,5,6];
C=intersect(A,B);
用intersect函数计算,C里面的数据就是A和B的交集了
2.求出一个矩阵中所有元素出现的次数以及频率
A=[];
A1=tabulate(A(:));
矩阵A是待求矩阵,A(:)是将矩阵A转化成向量,函数tabulate求出矩阵A中所有元素及所出现的次数和频率放入A1矩阵中
3.求一个向量中出现最多及次多的元素
求一个向量中出现的最多元素或通过对向量中元素出现次数的多少进行排序
K=[1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,1,2,3];
for i=1:5
x(i,:)=mode(K);
K(:,K(1,:)==x(i,:))=[];
end
函数mode是求向量中出现的最多元素,通过for循环实现求取第一个最多元素后放入x中,并将x中的元素在K中赋值为空,进行多次循环实现对向量中元素的个数排序,若是K中的元素数量相同时,将按照数字大小输出
4.查找矩阵中每行或每列中出现最多的元素
for j=1:10
K1(j,:)=y1(j,:);
for i=1:1
xx1(i,j)=mode(K1(j,:));
%K(:,K(1,:)==xx(i,:))=xx(i,:);
end
end
A1 = xx1(:);
B1 = unique(A1,'rows');
F1 = reshape(B1,[],size(A1,2));
y1是所要求矩阵(假设有10行),输出F1是每一行中出现最多元素构成的列向量,可通过转置成为行向量
for j=1:10
K(:,j)=y1(:,j);
for i=1:1
xx(i,j)=mode(K(:,j));
end
end
A = xx(:);
B = unique(A,'rows');
F = reshape(B,[],size(A,2));
同理,对矩阵y1每一列求出现最多次数的元素
5.通过for循环去除结果矩阵中的不合理项
假设生成了一个1000*500的矩阵,其中矩阵的每一列的最后一个元素不能大于50,判断并去除最后一个元素大于50的列
for opk=1:500
if y1(1000,opk)>50
y1(:,opk)=[];
end
end %去除特殊元素
生成的y1中将不含最后一行大于50的列,同理也可进行其他行操作
6.求矩阵的平均值及其他操作
通常所说的求平均值是对矩阵的行或者列进行求取
A=[];
A1=mean(A,1);%按列
A2=mean(A,2);%按行
求平均值mean
向下取整floor
四舍五入round
取绝对值abs
取实部real
..........