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
Click For Summary

Discussion Overview

The discussion revolves around extracting specific blocks from a large 24000x24000 sparse matrix using MATLAB, with the goal of creating a block diagonal matrix using the 'blkdiag' command. Participants are seeking and providing MATLAB code snippets to achieve this extraction.

Discussion Character

  • Technical explanation
  • Homework-related

Main Points Raised

  • One participant requests help with extracting four specific blocks from a sparse matrix and aims to use 'blkdiag' to create a block diagonal matrix.
  • Another participant suggests creating an empty sparse matrix and using the column operator to equate elements, although this is presented as a guess.
  • A different participant provides a code example using semicolon notation to extract the blocks, defining them as A1, A2, A3, and A4, and shows how to use 'blkdiag' with these blocks.
  • Another response reiterates the extraction of blocks, emphasizing that MATLAB indexing starts at 1, and provides specific index ranges for the blocks.

Areas of Agreement / Disagreement

There is no consensus on the exact method for extracting the blocks, as participants offer different approaches and code snippets. Some methods involve different indexing strategies and assumptions about the matrix structure.

Contextual Notes

Participants have not clarified certain assumptions about the matrix's sparsity or the implications of using different indexing methods. There are also unresolved details regarding the exact implementation of the proposed solutions.

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
5K
  • · 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