Finding index in a set
2 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 Get Started with MATLAB 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!