matlab重复数值的创建和计数代码

来源:互联网 发布:喵掌折扣知乎 编辑:程序博客网 时间:2024/06/03 23:42


%重复数值的创建
x=[3 2 0 5 6]; %数值向量
n=[2 0 3 1 2]; %计数向量


nz=n==0;  %如果n(i)为0,则nz(i)为true,得到 nz = [0 1 0 0 0]
x(nz)=[];  %删除元素  x = [3,0,5,6]
n(nz)=[];  %  n=[2 3 1 2]
csn=cumsum(n); %数列求和器,得到[2  5  6  8]  
temp=zeros(1,csn(end));   % 1行8列零矩阵  
temp([1,csn(1:end-1)+1])=1;  %[1,0,1,0,0,1,1,0]


idx=cumsum(temp);   %[1,1,2,2,2,3,4,4]


y=x(idx);    %,目标数组y = [3,3,0,0,0,5,6,6]



重复值的统计

        下面考虑以上问题的反问题,即已知y,求x和n。采用对元素操作的方式,代码如下:

y=[3 3 0 0 0 5 6 6];


x=y(1);n=1;idx=1;




 


for i=2:length(y)


 if y(i)==x(idx)


     n(idx)=n(idx)+1;


  else


     idx=idx+1;


     x(idx)=y(i);


     n(idx)=1;


end


end  


http://www.ilovematlab.cn/thread-261794-1-1.html

http://www.ilovematlab.cn/thread-102568-1-1.html


0 0