How to get specific values from matrix in column 1, based on values in other columns?

31 views (last 30 days)
I have a matrix called sub01T2 (36x3 double)- this data is provided in the attachment;
0.47 0 1
11.55 1 1
17.98 1 0
25.23 1 1
38.35 1 0
65.73 2 1
119.34 2 0
153.61 2 1
200.19 2 0
282.04 1 1
309.26 0 0
I am trying to get the time values, which are in column 1 of my matrix. I have predefined the onset times by giving them column 2 value 1 and column 3 value of 1.
I was wondering how I can create a new array, that will just have the values from column 1 that has column 2 and 3 equal 1.
I tried;
narrow_onset = find(sub01T2(:,2)==1 & sub01T1(:,3)==1), but this only gives the row location, but I want the actual values from those rows from column.
I was wondering if someone could please help me figure out what I'm doing wrong here?

Accepted Answer

SAA
SAA on 19 Aug 2020
If I understood your question correctly this should work:
a = find(sub01T2(:,2)==1 & sub01T2(:,3)==1);
b = sub01T2(a,1);
you are getting the row that your value is in but you're not doing anyhting with it find only gives you an index.
  1 Comment
Natasha Taylor
Natasha Taylor on 19 Aug 2020
Yes, that is correct. I see, I didn't fully understand the find function.
Your answer is correct. Thank you so much!

Sign in to comment.

More Answers (1)

Binbin Qi
Binbin Qi on 19 Aug 2020
clear;clc;close all
load sub-01_T2_planktimes
R = accumarray(sub01T2(:,2:3)+1,sub01T2(:,1),[], @(x){x});
R{2,2}
ans =
11.5500
25.2300
282.0400

Community Treasure Hunt

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

Start Hunting!