indexing a square matrix in the best possible way
1 次查看(过去 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
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
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
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
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
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.
0 个评论
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.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!