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

38 views (last 30 days)
Natasha Taylor on 19 Aug 2020
Commented: Natasha Taylor on 19 Aug 2020
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.

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.
Natasha Taylor on 19 Aug 2020
Yes, that is correct. I see, I didn't fully understand the find function.

Binbin Qi on 19 Aug 2020
clear;clc;close all
R = accumarray(sub01T2(:,2:3)+1,sub01T2(:,1),[], @(x){x});
R{2,2}
ans =
11.5500
25.2300
282.0400
Natasha Taylor on 19 Aug 2020
Thank you this works!!