How to group an array and then replace each group with different numbers?
    7 次查看(过去 30 天)
  
       显示 更早的评论
    
Example of array: A = [1 1 1 0 0 0 1 0 0 1 0 1 1 0 0 ];
Wanted array: B = [1 1 1 4 4 4 1 5 5 1 6 1 1 3 3];
Is is possible to separate each group of zeros in A and then replace each group with a number in another array? 
First group of zeros is the first three zeros in A, g1=[0, 0, 0];
Second group: g2=[0, 0];
and so on.
Then i want to replace each group with C = [4, 5, 6, 3];
The result will be g1 = [4, 4, 4], g2 = [5, 5] and so on.
0 个评论
采纳的回答
更多回答(1 个)
  Luna
      
 2019-3-20
        Try this: 
A = [1 1 1 0 0 0 1 0 0 1 0 1 1 0 0];
C = [4, 5, 6, 3];
A(end+1) = 1;
locRise = find([0 diff(A == 0) > 0]);
locFall = find([diff(A==0) < 0 0]);
for i = 1:numel(locRise)
   A(locRise(i):locFall(i)) = C(i);
end
A(end) = [];
Note: number of groups of zeros should be same with the length of C. 
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Characters and Strings 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


