Growing Diagonal Matrix Problem

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.

답변 (1개)

Matt J
Matt J 2021년 3월 23일
편집: Matt J 2021년 3월 24일

0 개 추천

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

WARRIOR24
WARRIOR24 2021년 3월 23일
I need the big matix to be changable, like if the 9x9 can be change to a 100x100. The 9x9 is just an example.
Matt J
Matt J 2021년 3월 23일
I know it's just an example. So is the value of n=3 in my code.
WARRIOR24
WARRIOR24 2021년 3월 23일
Here is my next problem, what is it need to be changed to 8x8? But keep everything the same except the last row and collumn?
If you mean you want to remove the last row and column, then,
result(:,end)=[]; %remove last column
result(end,:)=[]; %remove last row

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Operating on Diagonal Matrices에 대해 자세히 알아보기

제품

질문:

2021년 3월 23일

편집:

2021년 3월 24일

Community Treasure Hunt

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

Start Hunting!

Translated by