Creating a random matrix with conditions without using iteration
Afficher commentaires plus anciens
Is it possible to make a matrix using rand where all values less than a certain value, such as 5, are replaced by 0? Without any iteration by the way.
I know you can just do:
A=10*rand(5,5);
A=(A(:,:)>5).*A(:,:)
But this iterates off the previous declaration.
1 commentaire
Gregory Shoemake
le 5 Oct 2016
Réponses (3)
KSSV
le 5 Oct 2016
A=10*rand(5,5);
A(A<5) = 0 ;
Jan
le 5 Oct 2016
This is fine:
A = (A>5) .* A
There is not reason to avoid this. Using 2 lines instead of one is not a drawback.
An "iteration" means a loop usually. So you code does not contain an iteration (if we ignore that Matlab uses loops internally to process the elements of the array).
1 commentaire
Gregory Shoemake
le 5 Oct 2016
Jos (10584)
le 5 Oct 2016
A = [1 5 3 2 4]
A(A>3) = 0 % all at once, the way to go!!
B = [1 5 3 2 4]
for k=1:numel(B), % iteration over each element of B
if B(k) > 3,
B(k) = 0 ;
end ;
end
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!