Finding index in a set
    5 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
    Md. Nazrul Islam Siddique
 le 17 Déc 2022
  
    
    
    
    
    Modifié(e) : Stephen23
      
      
 le 17 Déc 2022
            Hello. I have these two sets.
x1 = [0 , 0, 1, 0]
x2 = [0, 0, 0, 0]
I want to randomly generate one in x2 except the index 3, where the vaule is x1. The output will be look like:
x1 = [0, 0, 1, 0]
x2 = [1, 0, 0, 0] or [0, 1, 0, 0] or [0, 0, 0, 1].
How can I do that?
0 commentaires
Réponse acceptée
  Stephen23
      
      
 le 17 Déc 2022
        
      Modifié(e) : Stephen23
      
      
 le 17 Déc 2022
  
      Simple and efficient:
x1 = [0,0,1,0];
x2 = [0,0,0,0];
ix = find(~x1);
iy = randi(nnz(ix),1);
x2(ix(iy)) = 1
Plus de réponses (1)
  Arif Hoq
      
 le 17 Déc 2022
        
      Modifié(e) : Arif Hoq
      
 le 17 Déc 2022
  
      one approach:
x1 = [0 , 0, 1, 0];
x2 = [0, 0, 0, 0];
% [value I]=find(x1==1);
b=perms(x1);
[row,col,v] = find(b(:,3));
b(row,:)=[];
c=b;
output=unique(c,'rows','stable')
4 commentaires
  Arif Hoq
      
 le 17 Déc 2022
				I am confused. you can make x2 in sveral ways.
x1 = [0 , 0, 1, 0];
x2=circshift(x1,1,2)
x3=circshift(x1,2,2)
x4=circshift(x1,3,2)
  Arif Hoq
      
 le 17 Déc 2022
				or using  a function
x=4;
shiftv=2;
output=binvector(x,shiftv)
function y=binvector(x,shiftv) 
 y=zeros(1,x);
 y(shiftv)=1;
end
Voir également
Catégories
				En savoir plus sur Graphics Object Programming dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!