MATLAB Answers

Create Block Toeplitz Matrix

16 views (last 30 days)
Marco Lago
Marco Lago on 3 May 2021
Edited: Stephen Cobeldick on 20 May 2021
How can I create a block toeplitz matrix with all zero elements apart from the main diagonal band?
If A and B are scalars the example below works
rng(123)
A = rand(3);
B = rand(3);
T=100;
Omega = toeplitz([A,B,zeros(T,3)]);
  2 Comments
Marco Lago
Marco Lago on 20 May 2021
Sorry, my bad. With the scalar example I meant something like the example below. Which gives a squared toeplitz matrix like the folloqing but where A and B are, say, 3x3 matrices.
A B 0 ...0
B A B ...0
0 B A ...0
0 0 B ...0
: : : ....B
0 0 0 ...A
A =1;
B = 2;
T=100;
Omega = toeplitz([A;B;zeros(T,1)])

Sign in to comment.

Answers (2)

Stephen Cobeldick
Stephen Cobeldick on 20 May 2021
Edited: Stephen Cobeldick on 20 May 2021
C = {zeros(3),randi(9,3),randi(9,3)}; % {0,B,A}
N = 5;
X = toeplitz([3,2,ones(1,N-2)]);
M = cell2mat(C(X))
M = 15×15
5 5 9 4 9 7 0 0 0 0 0 0 0 0 0 8 2 3 4 9 7 0 0 0 0 0 0 0 0 0 9 2 3 2 1 9 0 0 0 0 0 0 0 0 0 4 9 7 5 5 9 4 9 7 0 0 0 0 0 0 4 9 7 8 2 3 4 9 7 0 0 0 0 0 0 2 1 9 9 2 3 2 1 9 0 0 0 0 0 0 0 0 0 4 9 7 5 5 9 4 9 7 0 0 0 0 0 0 4 9 7 8 2 3 4 9 7 0 0 0 0 0 0 2 1 9 9 2 3 2 1 9 0 0 0 0 0 0 0 0 0 4 9 7 5 5 9 4 9 7

Stephan
Stephan on 4 May 2021
Try:
rng(123)
A = eye(3);
B = randi(10,3);
Omega = kron(A,B)
gives:
Omega =
7 6 10 0 0 0 0 0 0
3 8 7 0 0 0 0 0 0
3 5 5 0 0 0 0 0 0
0 0 0 7 6 10 0 0 0
0 0 0 3 8 7 0 0 0
0 0 0 3 5 5 0 0 0
0 0 0 0 0 0 7 6 10
0 0 0 0 0 0 3 8 7
0 0 0 0 0 0 3 5 5
  2 Comments
Stephan
Stephan on 4 May 2021
What is your desired output? Do you mean:
rng(123)
A = randi(10,1,4)
T=3;
Omega = toeplitz([A,zeros(1,T)]
Omega =
7 3 3 6 0 0 0
3 7 3 3 6 0 0
3 3 7 3 3 6 0
6 3 3 7 3 3 6
0 6 3 3 7 3 3
0 0 6 3 3 7 3
0 0 0 6 3 3 7

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!