logical index replace values

16 views (last 30 days)
Morten Jørgensen
Morten Jørgensen on 26 Mar 2019
Commented: Morten Jørgensen on 26 Mar 2019
Hi
mBall(1:15001,4) = 0;
-3.42 -24.55 5.19 0
-3.01 -24.59 5.66 0
-2.59 -24.64 6.11 0
-2.19 -24.69 6.53 0
-1.78 -24.73 6.91 0
-1.38 -24.79 7.28 0
-0.98 -24.84 7.63 0
% this is what an exsample of what my mBall looks like
% I have an array c that consist of 3786x2
% I'm trying to insert values from c(:,2) in mBall(:,4)
% But only in the rows equal to value in c(:,1)
c =
2 1
3 1
4 2
5 3
7 3
% mBall should look like this afterwards
mball =
-3.42 -24.55 5.19 0
-3.01 -24.59 5.66 1
-2.59 -24.64 6.11 1
-2.19 -24.69 6.53 2
-1.78 -24.73 6.91 3
-1.38 -24.79 7.28 0
-0.98 -24.84 7.63 3
  7 Comments
Morten Jørgensen
Morten Jørgensen on 26 Mar 2019
previously I have used function find like this
[xlocs, ylocs] = find(0 < output & output < 1);
c = [xlocs, ylocs]
% then i have my array mBall, that i want to change
mBall(1:15001,4) = 0;
% I want to replace the 0 in column 4 of mBall with the numbers in ylocs?
% is this more clear?

Sign in to comment.

Answers (1)

KSSV
KSSV on 26 Mar 2019
Edited: KSSV on 26 Mar 2019
Read about logical indexing.
idx = 0 < output5 & output5 < 1 ;
output = output5(idx);
  1 Comment
KSSV
KSSV on 26 Mar 2019
If you want row number find(idx)

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!