MATLAB Matlab: how to extract blocks from a large matrix

Click For Summary
To extract blocks from a 24000x24000 sparse matrix in MATLAB, users can utilize indexing to define the desired sections. For example, the first block can be extracted with A(1:6000, 1:6000), while subsequent blocks follow a similar pattern, adjusting the indices accordingly. The 'blkdiag' function can then be used to create a block diagonal matrix from these extracted blocks. It is important to note that MATLAB indexing starts at 1, not 0. Properly applying these techniques allows for efficient manipulation of large matrices.
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.
 

Similar threads

  • · Replies 9 ·
Replies
9
Views
5K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 7 ·
Replies
7
Views
8K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 1 ·
Replies
1
Views
4K
  • · Replies 0 ·
Replies
0
Views
2K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 6 ·
Replies
6
Views
8K
  • · Replies 1 ·
Replies
1
Views
3K
Replies
3
Views
3K