Creating a new matrix from an existing one using logical operators?

10 次查看(过去 30 天)
Write a script which defines a 100x100 matrix, X, of random integers between 5
and 50. From the matrix X, create a matrix, Y, in which all values greater than or
equal to 25 are the same as in X, but all values below 25 are changed to 0.
Here is what I have:
x=randi([5 50],100,100)
Y=randi([5 50],100,100)
if Y>25
disp(Y)
elseif Y<25
disp(0)
end
The matrix that I am getting in the out put is not correct. No numbers have been substituted with zero.
  2 个评论
the cyclist
the cyclist 2019-10-20
If you look at the documentation on the if function, you'll see that in the "Compare Arrays" section, it says
"Expressions that include relational operators on arrays, such as A > 0, are true only when every element in the result is nonzero."
So, your if statement is not testing each element and then giving a result for each element, as you seem to expect. It is testing the entire array, to see if it is true for all elements.
Trisha Katz
Trisha Katz 2019-10-20
Okay, I understand, but how can I get it search for specific values within the matrix? i have tried googling and looking through my text to no avail

请先登录,再进行评论。

回答(1 个)

David Hill
David Hill 2019-10-20
x=randi([5 50],100,100);
y=(x>=25).*x;

类别

Help CenterFile Exchange 中查找有关 Operators and Elementary Operations 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by