Matlab: how to extract blocks from a large matrix

  • Context: MATLAB 
  • Thread starter Thread starter confi999
  • Start date Start date
  • Tags Tags
    Blocks Matlab Matrix
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
3 replies · 11K views
confi999
Messages
18
Reaction score
0
Hi,
I have a 24000x24000 sparse matrix. I want to extract 4 blocks out of it;
(0,0) to (6000,6000)
(6001,6001) to (12000,12000)
(12001,12001) to (18000,18000)
(18001,18001) to (24000,24000)

By use of those my aim is to make a block diagonal matrix using MATLAB command 'blkdiag' .

Can anyone please help me with the MATLAB code to extract those 4 blocks.
Thank you so much.
 
Physics news on Phys.org
confi999 said:
Hi,
I have a 24000x24000 sparse matrix. I want to extract 4 blocks out of it;
(0,0) to (6000,6000)
(6001,6001) to (12000,12000)
(12001,12001) to (18000,18000)
(18001,18001) to (24000,24000)

By use of those my aim is to make a block diagonal matrix using MATLAB command 'blkdiag' .

Can anyone please help me with the MATLAB code to extract those 4 blocks.
Thank you so much.

I haven't done it before but my guess, would be is you create an empty scarce matrix, and then equate ellements using the colin operator.
 
You can use the semicolon to select, let your matrix be A, then the blocks you want to get is A1,A2,A3,A4
Code:
[m,n] = size(A);
A1 = A(1:6000,1:6000);
A2 = A(1:6000,6001:n);
A3 = A(6001:m,1:6000);
A4 = A(6001:m,6001:n);
AA = blkdiag(A1,A2,A3,A4);
 
confi999 said:
Hi,
I have a 24000x24000 sparse matrix. I want to extract 4 blocks out of it;
(0,0) to (6000,6000)
(6001,6001) to (12000,12000)
(12001,12001) to (18000,18000)
(18001,18001) to (24000,24000)

By use of those my aim is to make a block diagonal matrix using MATLAB command 'blkdiag' .

Can anyone please help me with the MATLAB code to extract those 4 blocks.
Thank you so much.

If I am understanding you correctly, you want to extract a square matrix
out of a larger matrix. if you want a section out of an array, you just call the array using those indecies. so uf your matrix is A:

(0,0) to (6000,6000) would be

A(1:6001,1:6001)

Remember in Matlab array/matrix indexes start at 1 not 0.

(6001,6001) to (12000,12000) would be

A(6002:12001,6002:12001)

and so on.