use logical indexing to access multiple lines syntax

1 view (last 30 days)
Still a noob, I try to make my questions coherent... glad to learn
I have a multi-column matrix p552r1_tnL (14918x44 double)
In the second column, I want to find the highest values, so I did this...
>> p = (p552r1_tnL(:,2))>0.85*max(p552r1_tnL(:,2));
>> sum(p)
% sum(p) is 40 so getting the highest 40 values is a good start... so that gets my matrix way down,
now I just want to get the values in the first three columns of p552r1 based on that logical matrix... I can get it to give me a single column, but can't work out how to get multiple...
p552r1kmeans = p552r1_tnL(p); %ok, so it gets me one column
So I've tried
p552r1kmeans (:,1:3)= p552r1_tnL(p); %Error: matrix sides don't match
p552r1kmeans (:,1:3)= p552r1_tnL(:,1:3)(p); %Error: ()-indexing must appear last in an indexing expression, which I don't get since (p) is last
Thank you for the help : )

Accepted Answer

Fangjun Jiang
Fangjun Jiang on 28 Sep 2018
temp=p552r1_tnL(p,1:3)

More Answers (1)

Dennis
Dennis on 28 Sep 2018
Almost there ;) in p you have the row positions:
p552r1kmeans=p552r1_tnL(p,1:3)

Community Treasure Hunt

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

Start Hunting!