MATLAB Answers

Growing Diagonal Matrix Problem

3 views (last 30 days)
WARRIOR24
WARRIOR24 on 23 Mar 2021
Edited: Matt J on 24 Mar 2021
I am trying to create a diagonal matrix that can grow a # of rows and # of collumns. These collumns can be from a range of 10 to 100000 to infinite but must maintain a pattern.
For simplicity I am using a 9x9 Matrix. It seems like it is repeating 3 matrics over and over.
1 - Diagonal
1 - Ones Diagonal
1 - Zeros
A B 0 1 0 0 0 0 0
B A B 0 1 0 0 0 0
0 B A 0 0 1 0 0 0
1 0 0 A B 0 1 0 0
0 1 0 B A B 0 1 0
0 0 1 0 B A 0 0 1
0 0 0 1 0 0 A B 0
0 0 0 0 1 0 B A B
0 0 0 0 0 1 0 B A
I am having a hard time trying to seeing how to write this.

Answers (1)

Matt J
Matt J on 23 Mar 2021
Edited: Matt J on 24 Mar 2021
A=3; B=4;
M=[A B 0; B A B; 0 B A];
n=3;
e = ones(n,1);
Q = spdiags([e 0*e e],-1:1,n,n);
%Q=toeplitz(sparse([0,1,zeros(1,n-2)]));
result =kron(speye(n),M)+kron(Q,eye(3));
full(result)
ans = 9×9
3 4 0 1 0 0 0 0 0 4 3 4 0 1 0 0 0 0 0 4 3 0 0 1 0 0 0 1 0 0 3 4 0 1 0 0 0 1 0 4 3 4 0 1 0 0 0 1 0 4 3 0 0 1 0 0 0 1 0 0 3 4 0 0 0 0 0 1 0 4 3 4 0 0 0 0 0 1 0 4 3
  4 Comments
Matt J
Matt J on 23 Mar 2021
If you mean you want to remove the last row and column, then,
result(:,end)=[]; %remove last column
result(end,:)=[]; %remove last row

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by