I'm just getting back into Matlab and am getting tripped up where I'm more familiar with Python or C right now… still brushing the dust off, thanks for any help!
I'm trying to check the values in a diagonal matrix to see if they are non-zero and below a certain threshold with the goal of forcing them to zero. If my 3×3 diagonal matrix is S, I've seen a good way to index a diagonal is
idx = logical(eye(size(S)));S(idx)
Which will give the values down the diagonal. But I keep getting tripped up on figuring out a nice way to traverse those three values so I can check them and assign them individually. I get that I could assign them all at once by assign S(idx)=value, but how can I index each individually so I can check if it's above/below my threshold?
I know I could also just loop through it and that my be easier/more clear, but I'm darned curious now (and that loop is messy)!
Thanks for any help!
Best Answer