indexing diagonals out of a 3d matrix
30 ビュー (過去 30 日間)
古いコメントを表示
I thought this would be fairly simple. I thought the diag function should be able to do this task. I have a 14x14x1045 matrix Ht, t=1,...,1045 simbolizes the number of observations. I merely want to extract the main daigonals of Ht for all t and store them in a new 3d matrix Dt which is also 14x14x1045 which contains the diagonal elements of every Ht and zeros in all other positions. However, when using the function diag(Ht) I get the following error: Error using diag First input must be 2D.
Is there a function that works like diag but for 3d matrices? I have no experience programing any functions. Could someone please provide a simple loop to make a function that fulfills this task in case no such function exists already?
I´m sorry if this question is too trivial, but I haven´t been able to find a specific answer and I seem not to be able to program such a function with my expertise level...
Thanks a lot for your help!
0 件のコメント
採用された回答
その他の回答 (2 件)
Kiran Sagar
2013 年 7 月 9 日
I think this would work elegantly. But I don't know if this would take up alot of time/memory for your purposes.
for i=1:1045
Dt(:,:,i)=diag(diag(Ht(:,:,i)));
end
参考
カテゴリ
Help Center および File Exchange で Resizing and Reshaping Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!