random assignment to 1s in a matrix
    5 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Berfin Çetinkaya
 il 16 Mar 2022
  
    
    
    
    
    Commentato: Berfin Çetinkaya
 il 16 Mar 2022
            c= birincifaz(:,:)
x=find(c==1)
ja=randi(613,1)
c(x(ja))= randi(10,1)
Hi. I have set up such code. My matrix is very large in 10x69 structure, I want to assign a random number from one to eighteen where 1 is written in the matrix. and it takes too long to assign manually so I want to assign by code. I was able to assign 1 to 1 with this code. How can I set up code about assigning to other 1's?  ( Caution ! I wrote birincifaz values below.)
thanks a lot of
birincifaz=
  1  1  1  1  1  0  1  1  1  1 
  0  0  0  0  0  0  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  0  1  1  0  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  0  0  0  0  0  0  1  0  0  0 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  0  0  0  0  0  0  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  0  0  0  0  0  0  1  0  0  0 
  0  0  0  0  0  0  1  0  0  0 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  0  0  0  0  0  0  1  0  0  0 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
  1  1  1  1  1  0  1  1  1  1 
  1  1  1  1  1  1  1  1  1  1 
0 Commenti
Risposta accettata
  Jan
      
      
 il 16 Mar 2022
        
      Modificato: Jan
      
      
 il 16 Mar 2022
  
      I do not understand the question:
"I was able to assign 1 to 1 with this code." - what is the purpose of setting a 1 to a 1?
"How can I set up code about assigning to other 1's?" - which other 1's? Ah, you have changed one single 1 and want to change all. Then:
c = birincifaz;  % No need for: (:,:), no need for FIND.
c(c == 1) = randi(18, 1, nnz(c))
Più risposte (1)
  Davide Masiello
      
 il 16 Mar 2022
        
      Modificato: Davide Masiello
      
 il 16 Mar 2022
  
      c = randi([0,1],69,10)                     % This replaces your biricinfaz, didn't want to copy that ;)
c(logical(c)) = randi(18,sum(c(:)),1)      % This insert random values up to 18 in place of the 1s in c
Vedere anche
Categorie
				Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!