How do you extract diagonal elements of submatrix matrix?

7 vues (au cours des 30 derniers jours)
BooDee
BooDee le 2 Déc 2020
Commenté : Vishnu Pradeep le 2 Déc 2021
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!

Réponse acceptée

Ameer Hamza
Ameer Hamza le 2 Déc 2020
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 commentaires
BooDee
BooDee le 11 Déc 2020
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 le 2 Déc 2021
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!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by