MATLAB Answers

question on indexing: How to extract rows from a matrix that crossponds to certain values in another vector?

1 view (last 30 days)
Cantor Set
Cantor Set on 15 Feb 2020
Answered: Stephen on 15 Feb 2020
Ro =
1 1 1 1
0 1 0 1
1 0 0 0
1 1 0 1
1 0 0 0
Given an arbitart matrix like this such that for every row in Ro crossponds a rank in ranks:
ranks=[1;2;3;4;3]
I need to extract all the rows in Ro that crossponds to ranks=3 but I need some general rule because the matrices Ro and ranks changes in the code
I thought of the following:
I made a function:
function [ pos ] = Position( x,n )
%x is the input row vector
%n is the number (in x) that we want to find its position(s) vector w.r.t
%x
pos=find(x==n);
end
FF=[];
P=Position(ranks,3);
lenP=length(P);
for i=1:lenP
FF=[FF;Ro(P(i),1:end)]
end
The problem is that FF=[1 0 0 0; 1 0 0 0];
I need it only be FF=[ 1 0 0 0]; I don't want repition
so can you help :)?

Community Treasure Hunt

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

Start Hunting!

Translated by