如何利用 Matlab实现矩阵相同元素的查找

2025-02-24 09:49:34
推荐回答(1个)
回答1:

clc
clear all
Rm=10;%Rm等于矩阵的行数
Cm=10;%Cm等于矩阵的列数
m=round(rand(Rm,Cm)*10)%m等于一个10X10的随机整数矩阵,每个元素在0~10之间
i1=1;%计数器1,这个用来显示一个数字在不同位置重复的次数
i2=0;%计数器2,记录重复过得数字的数量
S=[];%用来记录被重复的数字
for r_1=1:1:Rm%逐行
for c_1=1:1:Cm%逐列
if i1~=1%如果计数器不等于1,也就是说有两个或两个以上的数字相等
fprintf('\n %d cells are equal to %d,\n',i1,equal_number)
end
cell_1=m(r_1,c_1);%元素1数值
P_cell_1=[r_1,c_1];%元素1位置
i1=1;%重新把计数器归1
find(S==cell_1);%查看m(r_1,c_1)是否在之前出现过,如果出现过则跳过
a=size(find(S==cell_1));%查看m(r_1,c_1)是否在之前出现过,如果出现过则跳过
if a(2)==0 %查看m(r_1,c_1)是否在之前出现过,如果出现过则跳过
for r_2=1:1:Rm%逐行
for c_2=1:1:Cm%逐列
cell_2=m(r_2,c_2);%元素2数值
P_cell_2=[r_2,c_2];%元素2位置
if cell_1==cell_2 && (P_cell_2(1)~=P_cell_1(1)||P_cell_2(2)~=P_cell_1(2))%比较cell_1与cell_2是否相等,同时判断是否是同一元素
equal_number=m(r_2,c_2);%满足条件则这个位置的数字为被重复的数字
if i1==1
i2=i2+1;%计数器2,多了一个被重复过得数字
S(i2)=equal_number;%将这个被重复的数字计入矩阵S中
fprintf('(%d,%d)=(%d,%d)',r_1,c_1,r_2,c_2)
else
fprintf('=(%d,%d)',r_2,c_2)
end
i1=i1+1;%计数器2,这个被重复的数字多被重复了一次
end
end
end
end
end
end