indexing a square matrix in the best possible way

2 次查看(过去 30 天)
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 个评论
Ryan
Ryan 2012-9-23
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.

请先登录,再进行评论。

回答(3 个)

Azzi Abdelmalek
Azzi Abdelmalek 2012-9-23
编辑:Azzi Abdelmalek 2012-9-23
you can use cellfun for cell class or arrayfun and find for double class
  3 个评论
Azzi Abdelmalek
Azzi Abdelmalek 2012-9-23
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 2012-9-23
编辑:Azzi Abdelmalek 2012-9-23
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

请先登录,再进行评论。


Walter Roberson
Walter Roberson 2012-9-23
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 2012-9-23
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.

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by