how to turn elements in matrix to 0?

12 views (last 30 days)
Kobi
Kobi on 8 Oct 2014
Edited: José-Luis on 8 Oct 2014
i have this matrix:
arround this shape the elements are close to zero (in a small values for example: xe-20-xe-10) is there a simple way to take the elements only around this shape and change them into zero?
  1 Comment
Kobi
Kobi on 8 Oct 2014
i tried to do this in this way but i don't understand what is wrong
[col,row]=find(abs(diag(T))<0.2); T(row,col)=0;
i'm expecting to zero only a square around the shape in this way

Sign in to comment.

Answers (2)

Chad Greene
Chad Greene on 8 Oct 2014
If you'd like to change all values in T that are less than some threshold (we'll call the threshold thresh), all you need is
T(T<thresh)=0;
  2 Comments
Kobi
Kobi on 8 Oct 2014
not for all the values only for a square of zeros i managed to do this in a way that i don't really like i create a threshold for the diognal values of the matrix and take 10% from the scale
treshold=(max(max(abs(diag(T))))-min(min(abs(diag(T)))))*0.1; ind=find(abs(diag(T))<treshold);
but i don't like this because i need to set the threshold manually
any suggestions?
José-Luis
José-Luis on 8 Oct 2014
Edited: José-Luis on 8 Oct 2014
Well, a threshold is subjective, even when applying complex statistical methods. You are going to have to select something. Even if you use a function, the choice is subjective.
I guess what I am trying to ask is how do you want to set that limit?

Sign in to comment.


Chad Greene
Chad Greene on 8 Oct 2014
If it's a matter of numerical noise eps may help.

Tags

Products

Community Treasure Hunt

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

Start Hunting!