To generate alternate 0's and 1's
    11 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    brijesh soni
 el 14 de Ag. de 2019
  
    
    
    
    
    Editada: Jos (10584)
      
      
 el 16 de Ag. de 2019
            Say I have A=[2 4 3 4 100 253 77 10 45]. I want to generate alternate 0's and 1' such that we have 2 zeros (i.e, zeros equal to size of 1st element), then  4 ones (ones equal to the size of 2nd element) and so on
Result should be : [0 0 1 1 1 1 0 0 0 1 1 1 1 . . . .]. How to do this? 
Respuesta aceptada
Más respuestas (2)
  dpb
      
      
 el 14 de Ag. de 2019
        One brute force way--
 B=[];
 for i=1:numel(A)
   B=[B (1-mod(i,2))*ones(1,A(i))];
 end
0 comentarios
  Jos (10584)
      
      
 el 14 de Ag. de 2019
        
      Editada: Jos (10584)
      
      
 el 16 de Ag. de 2019
  
      bitget(repelem(0:numel(A)-1, A), 1)
[update] I modified my original but erroneous answer bitget(repelem(1:numel(A), A), 2). In his comments below, Andrei hit a serious flaw in this one. One does need to look at the last bit!
Thanks Andrei, for pointing this out.
4 comentarios
  Andrei Bobrov
      
      
 el 16 de Ag. de 2019
				
      Editada: Andrei Bobrov
      
      
 el 16 de Ag. de 2019
  
			Hi Jos!
What am I doing wrong?
My laptop:
>> A=[2 4 3 4]
A =
     2     4     3     4
>> bitget(repelem(1:numel(A), A), 2) % your variant
ans =
     0     0     1     1     1     1     1     1     1     0     0     0     0
>> bitget(repelem(2:numel(A)+1, A), 1) % with change
ans =
     0     0     1     1     1     1     0     0     0     1     1     1     1
>> bitget(repelem(0:numel(A)-1, A), 1) % or
ans =
     0     0     1     1     1     1     0     0     0     1     1     1     1
>> 
Ver también
Categorías
				Más información sobre Logical en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




