Change of sign in a matrix one by one

1 visualización (últimos 30 días)
Offroad Jeep
Offroad Jeep el 28 de Nov. de 2016
Comentada: KSSV el 28 de Nov. de 2016
Hi to all the users. I have a matrix A = ones(5), I want to change the sign of elements one by one but under the condition with rand(1).
Pick random position 1 in A then take rand_number = rand(1) if rand_number>=0.5 fix that 1 to -1
else 1 remains 1 then again pick 1 from the remaining 1s in the matrix A continue till all ones go to -1
Hope i have explained well.
Regards

Respuestas (1)

KSSV
KSSV el 28 de Nov. de 2016
Editada: KSSV el 28 de Nov. de 2016
A = ones(5) ;
Ac = A(:) ;
pos = 1:length(Ac) ;
for i = 1:length(pos)
rand_pos = randsample(pos,1) ;
if rand(1) > 0.5
Ac(rand_pos) = -1 ;
end
pos = setdiff(pos,rand_pos) ;
end
A = reshape(Ac,5,5) ;
  3 comentarios
KSSV
KSSV el 28 de Nov. de 2016
Your condition was if rand(1) > 0.5 then change 1 to -1.
KSSV
KSSV el 28 de Nov. de 2016
A = ones(5) ;
Ac = A(:) ;
pos = 1:length(Ac) ;
while ~isempty(pos)
rand_pos = randsample(pos,1) ;
if rand(1) > 0.5
Ac(rand_pos) = -1 ;
pos = setdiff(pos,rand_pos) ;
end
end
A = reshape(Ac,5,5) ;

Iniciar sesión para comentar.

Categorías

Más información sobre Creating and Concatenating Matrices 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!

Translated by