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.
回答(3 个)
KSSV
2016-10-5
A=10*rand(5,5);
A(A<5) = 0 ;
Jan
2016-10-5
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).
Jos (10584)
2016-10-5
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
类别
在 帮助中心 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!