Indexing and Checking on a Diagonal
조회 수: 34 (최근 30일)
이전 댓글 표시
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 3x3 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!
댓글 수: 0
채택된 답변
추가 답변 (1개)
Andrei Bobrov
2014년 7월 1일
one way
S = randi(200,10);
a = 100; % your threshold
d = diag(S); % if d(ii) >= a then d(ii) = 1; else d(ii) = -1 ;
t = d >= a;
d(t) = 1;
d(~t) = -1;
S(eye(size(S))>0) = d;
댓글 수: 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!