Creating a random matrix with conditions without using iteration

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

I'm beginning to wonder if maybe I'm just misunderstanding the meaning of iteration. Pretty new to MatLab so please excuse if this is common knowledge.

Connectez-vous pour commenter.

Réponses (3)

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

Thank you! really cleared things up. Also can I ask how I might complete the same task using iteration?

Connectez-vous pour commenter.

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

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by