indexing a square matrix in the best possible way

1 visualización (últimos 30 días)
Salvatore Mazzarino
Salvatore Mazzarino el 23 de Sept. de 2012
I have a square matrix and I would check some condition of every element of it.which could be the best way to indexing a square matrix using for cycle?
  1 comentario
Ryan
Ryan el 23 de Sept. de 2012
What condition are you looking to test? What type of points are you looking to index? For example if you have a matrix and want to find all the values greater or equal to 100 you could do:
idx_100 = A >= 100;
More complex conditions may require alternative methods.

Iniciar sesión para comentar.

Respuestas (3)

Azzi Abdelmalek
Azzi Abdelmalek el 23 de Sept. de 2012
Editada: Azzi Abdelmalek el 23 de Sept. de 2012
you can use cellfun for cell class or arrayfun and find for double class
  3 comentarios
Azzi Abdelmalek
Azzi Abdelmalek el 23 de Sept. de 2012
A=[2 3;10 25]
% that depends on the the actions that will be taken
% for examle if you wan to find index of elements of A that are >5
[idxn,idxm]=find(A>5)
Azzi Abdelmalek
Azzi Abdelmalek el 23 de Sept. de 2012
Editada: Azzi Abdelmalek el 23 de Sept. de 2012
if you want to replace all value of A that are>=3 by 100 for example
A(arrayfun(@(x) x>=3 ,A))=100
sometimes for loop can't be replaced

Iniciar sesión para comentar.


Walter Roberson
Walter Roberson el 23 de Sept. de 2012
If you are using a nested for loop, have the inner loop be over the first index.
If you are using a single for loop, just use natural index order.

Image Analyst
Image Analyst el 23 de Sept. de 2012
Savatore, it depends on what you want to do. You need to tell us because that will affect the answer. For example if you have matrix A and matrix B and you want to set matrix B to 999 every place that matrix A is between 100 and 200, you'd do something like this
B(A>100 & A<200) = 999;
No for loop needed. In general, you do something like
logicalIndexes = (A == someCondition);
someMatrix(logicalIndexes) = someValue; % someMatrix could be A or some other matrix.
But if you wanted to do something like beep a tone the number of times that equals the value of A but only for all A that are less than 10, or something else that's more complicated, then you might want to use a loop.

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by