Creating a new matrix from an existing one using logical operators?
Show older comments
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 Comments
the cyclist
on 20 Oct 2019
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
on 20 Oct 2019
Answers (1)
David Hill
on 20 Oct 2019
x=randi([5 50],100,100);
y=(x>=25).*x;
Categories
Find more on Multidimensional Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!