Matlab 确定数组中有重复元素的位置的问题 希望各位高手帮忙指点 万分感谢!!置

2024-11-26 00:00:45
推荐回答(3个)
回答1:

clear
a=[1,2,1,4,1,3,2,5,2,3];
b=[0.1,0.05,0.15,0.1,0.15,0.05,0.1,0.05,0.15,0.1];
new_a=[]; %a中不同重复的元素
new_b=[]; %new_a中各个元素的概率
new_a(1)=a(1); %初始化第一个元素
new_b(1)=0;
for i=1:length(a)
for j=1:length(new_a)
if a(i)==new_a(j) %第i个元素是否已存在
new_b(j)=new_b(j)+b(i); %若存在,将第i个元素概率添加到已出现的new_a中
break; %进入下一个元素判断
else
if j==length(new_a) %是否循环到已存在new_a的最后一个数
new_a(j+1)=a(i); %若是,则第i个元素未出现,将其添加到new_b中
new_b(j+1)=b(i); %初始化new_b中新元素的概率
end
end
end
end

回答2:

花了一个小时帮你做的,你看看吧 result1是数组 result2是概率
a=[2,5,23,8,5,7,8,8,23,89];
b=zeros(numel(a)*2,1);%建立一个长度是a的2倍的数组b,数组的奇数位记录a具有的元素,偶数位记录对应元素的个数
b(1)=a(1);
b(2)=1;
now=1;
for index1=2:numel(a)
for index2=1:2:now
if a(index1)-b(index2)==0%如果a中的数和b之前记录的某个数是一样的话那么在b数组下一位自增1
b(index2+1)=b(index2+1)+1;%个数加1
break;
end
end
if index2==now%b之前的数没有与a中当前元素相匹配则在b后面开辟2个空间
now=now+2;
b(now)=a(index1);
b(now+1)=1;
end
end
for index=2:2:numel(b)%b中偶数位不为零则元素存在,如果b中偶数位是零则元素不存在。记录b中偶数位刚好为零的索引
if b(index)==0
break;
end
end
result1=b(1:2:index-3)
result2=b(2:2:index-2)/numel(a)

你看看能不能也帮帮我http://zhidao.baidu.com/question/235377169.html你也是做图像的吗

回答3:

唔,还行。
重开两个数组,一个aa,一个bb。
aa从a的第一个开始,往里放元素。
bb用来累加相应概率