Generating a N x N block Toeplitz Matrix out of N vectors

5 views (last 30 days)
Hello all,
I have a 2D-convolution problem, where i need to create a matrix, that is a block toeplitz matrix.
First of all I have N vectors with N entries, where i create those "blocks" with. (For example in a matrix: T1=toeplitz(k(1,1:N)), T2=toeplitz(k(2,1:N)) .....)
Secondly I'm going to arrange them, as if they're entries in a symmetric toeplitz matrix: T_final=[T1 T2 ... TN-1 TN; T2 T1 ... TN-1; ....; TN TN-1 ... T2 T1]
Is there any efficient and easy way without for-loops, that can create such matrix?
Here is an imagesc, how the matrix could look like for N=6.
Greeting Tiliam
  2 Comments
Tiliam
Tiliam on 5 Apr 2020
It's also important to avoid any "conv" or "for loop" code.
Sindar
Sindar on 8 Apr 2020
Edited: Sindar on 8 Apr 2020
I think a similar question was asked recently. I can't find it just now, but I believe a solution involves converting between cells and arrays. Algorithm roughly:
  • generate matrices to go into blocks
  • wrap each matrix in a cell
  • tile cells into correct locations
  • expand cells and concatenate elements

Sign in to comment.

Answers (0)

Categories

Find more on Multidimensional Arrays in Help Center and File Exchange

Products


Release

R2018a

Community Treasure Hunt

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

Start Hunting!