How to correct the code?

Hello!
I wrote this code:
X=rand(5,3);
Y=zeros(5,3);
for k=1:5
for j=1:3
if X(k,j)<0.2
Y(k,j)=-1;
else
Y(k,j)=1;
end
end
end
I have to write the same code but without using any loop. How to do this?

1 Comment

Google "MATLAB logical indexing" and understand it, and you'll have the tools for solving your problem.

Sign in to comment.

 Accepted Answer

KALYAN ACHARJYA
KALYAN ACHARJYA on 28 Apr 2019
Edited: KALYAN ACHARJYA on 28 Apr 2019
%Though I am giving the answer here, but please must follow the Google "MATLAB logical indexing" as stated by @Cedric
There are multiple ways, you can do this. One way-
X=rand(5,3);
idx=X<0.2;
Y=ones(5,3);
Y(idx)=-1

3 Comments

Cedric
Cedric on 28 Apr 2019
Edited: Cedric on 28 Apr 2019
You can eliminate a few things:
X = rand(5,3);
idx = X < 0.2;
Y = ones(5,3);
Y(idx) = -1
also, Pawel, display idx and evaluate class(idx).
KALYAN ACHARJYA
KALYAN ACHARJYA on 28 Apr 2019
Edited: KALYAN ACHARJYA on 28 Apr 2019
Exactly Yes @Cedric sir, I supposed X and Y are given, therefore I replaced original Y with ones.
Thanks!
Thank You for help. :)

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!