get indices for part of a matrix

2 vues (au cours des 30 derniers jours)
Christopher
Christopher le 8 Nov 2014
Commenté : Star Strider le 8 Nov 2014
I have the matrix T, I want to get the indices of a part this matrix. I would imagine using a function of the form:
ind1 = getindexes(T,(1:35,:));
which would get me the indexes for the (1:35,:) part of matrix T. What is the fastest way to do this?
  1 commentaire
Azzi Abdelmalek
Azzi Abdelmalek le 8 Nov 2014
Modifié(e) : Azzi Abdelmalek le 8 Nov 2014
Your question is not clear, you are asking for getting indices that you already have

Connectez-vous pour commenter.

Réponses (1)

Star Strider
Star Strider le 8 Nov 2014
Modifié(e) : Star Strider le 8 Nov 2014
I’m not certain what you want to do. Here are two possibilities:
If you want to find the indices of particular elements in a vector or matrix, use the find function. You will probably have to experiment a bit with it to get the result you want.
If you want to get all the elements in the specific rows from 1:35 for all columns of ‘T’, this will work:
Tx = T(1:35,:);
  2 commentaires
Christopher
Christopher le 8 Nov 2014
Modifié(e) : Christopher le 8 Nov 2014
I want the former, but this doesn't work:
ind1=find(T(2:35,:))
because it doesn't find the indices of T, it finds the indices of T(2:35,:). How do I find the indices corresponding to the original matrix?
Edit: changed T(1:35,:) to T(2:35,:) to reinforce my point.
Star Strider
Star Strider le 8 Nov 2014
If I define ‘T’ as:
T = randi(10,50,50);
This command:
[IndR,IndC] = find(T(2:35,:));
will return two 1700 columns with the first offset by 1, so that ‘IndR’ would result a vector of [1:34] repeating 50 times. (You would have to provide the offset.)
If you want the indices of particular elements om your matrix that meet specific conditions, for instance >10 and <20, the find function for that becomes:
[Ridx1020,Cidx1020] = find(T>=10 & T<=20);
where ‘Ridx1020’ are the row indices and ‘Cidx1020’ are the corresponding column indices of those value of ‘T’ that meet those criteria. To verify that they meet the criteria (always a good check), this will tell you:
for k1 = 1:length(Ridx1020)
Telm(k1,k1) = T(Ridx1020(k1), Cidx1020(k1));
end
We’ll keep iterating this in the morning.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange

Tags

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by