How do you extract diagonal elements of submatrix matrix?

7 ビュー (過去 30 日間)
BooDee
BooDee 2020 年 12 月 2 日
コメント済み: Vishnu Pradeep 2021 年 12 月 2 日
Hi, need help:
I have a (nxn) square matrix A. I then created submatrices of (kxk) within matrix A. How do I extract only the diagonal (kxk) submatrices into a separate vector? The command diag(A) does not work; this is maybe because of the submatrices elements that I created. Please advise Thanks!

採用された回答

Ameer Hamza
Ameer Hamza 2020 年 12 月 2 日
Are the submatrices in cell array? For example, try something like this
n = 9;
A = rand(n);
k = 3;
B = mat2cell(A, k*ones(1,n/k), k*ones(1,n/k));
diag_all = cellfun(@diag, B, 'uni', 0);
  10 件のコメント
BooDee
BooDee 2020 年 12 月 11 日
Hey Ameer,
Thanks for the response. I've done the codes you suggested above but to no avail. It keeps giving me the following errors:
Error using zeros
Out of memory. Type HELP MEMORY for your options.
Error in blkdiag (line 43)
y = zeros(p1(end),m1(end),outclass); %Preallocate
I tried just simplifying it with:
diag_B = blkdiag(B{:}) AND diag_B = diag(B);
But it still won't work.
Is there any other solution. I can't imagine doing this manually when working with a 2464x2464 matrix.
Thanks Ameer. Anything helps.
Vishnu Pradeep
Vishnu Pradeep 2021 年 12 月 2 日
Hey guys,
What does the 'uni' argument pertain to?
Couldnt find anything on the web other than the name-value pair 'UniformOutput'. Is this the same?
Thanks!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by