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!