Finding index in a set
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Md. Nazrul Islam Siddique
am 17 Dez. 2022
Bearbeitet: Stephen23
am 17 Dez. 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 Kommentare
Akzeptierte Antwort
Stephen23
am 17 Dez. 2022
Bearbeitet: Stephen23
am 17 Dez. 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
Weitere Antworten (1)
Arif Hoq
am 17 Dez. 2022
Bearbeitet: Arif Hoq
am 17 Dez. 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 Kommentare
Arif Hoq
am 17 Dez. 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
am 17 Dez. 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
Siehe auch
Kategorien
Mehr zu Get Started with MATLAB finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!