find 1s in the Matrix

2 views (last 30 days)
Matin jaberi
Matin jaberi on 29 Sep 2022
Answered: Matin jaberi on 30 Sep 2022
Hi All,
I have a matrix 31996x66 and i need to write a if/else and for loop to do following.
the for loop must got through column 48 to 65 and anywhere the number is 1 it goes 36 cells back ()to the same row and save the number and if zero doesnt do anything.
for example:
if in row 500 coulumn 50 number is 1 then (50-36=14) it should go to row 500 column 14 and take the number and save in new table.
At the end the new Matrix should be 31996x(number of values for 1 in each row.)
  6 Comments
Matin jaberi
Matin jaberi on 29 Sep 2022
there might be many different ways to find the numbers I need but thats the simplest script i came up with to get what I need.

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 29 Sep 2022
firstcol = 48;
lastcol = 65;
offsetcol = 14;
idx = firstcol:lastcol;
offsetidx = idx-offsetcol;
result = YourMatrix(:,offsetidx) .* (YourMatrix(:,idx) == 1);
at the end the new Matrix should be 31996x(number of values for 1 in each row.)
You cannot do that; there could be a different number of 1's in each row and numeric matrices cannot have a different number of columns in each row.
The above code outputs an array the size of the subset, with 0 for the entries where the condition was not met.
I notice, by the way, that 62-14 = 48, so columns 48, 49, 50, 51 both act as numeric sources (values to be fetched) and as control information about which values are to be fetched. Is that overlap desired?
  2 Comments
Walter Roberson
Walter Roberson on 29 Sep 2022
firstcol = 48;
lastcol = 65;
offsetcol = 36;
idx = firstcol:lastcol;
offsetidx = idx-offsetcol;
result = YourMatrix(:,offsetidx) .* (YourMatrix(:,idx) == 1);

Sign in to comment.

More Answers (1)

Matin jaberi
Matin jaberi on 30 Sep 2022
so the box highlighted yellow is col 48 where number ==1 and the green one is column 14 is the same row. this should apply only when number is ==1

Categories

Find more on Loops and Conditional Statements 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!

Translated by