Azzera filtri
Azzera filtri

How best and most efficient way to build this matrix

1 visualizzazione (ultimi 30 giorni)
Hi guys,
I am wondering what is the best and most efficient way to build this matrix using loops and functions? Rather than inputting the numbers manually?
A = [-2 1 0 0 0 0 0 0 0 0
6 -4 1 0 0 0 0 0 0 0
-4 6 -4 1 0 0 0 0 0 0
1 -4 6 -4 1 0 0 0 0 0
0 1 -4 6 -4 1 0 0 0 0
0 0 1 -4 6 -4 1 0 0 0
0 0 0 1 -4 6 -4 0 0 0
0 0 0 0 1 -4 6 -4 1 0
0 0 0 0 0 1 -4 6 -4 1
0 0 0 0 0 0 0 0 1 -2]
A = 10×10
-2 1 0 0 0 0 0 0 0 0 6 -4 1 0 0 0 0 0 0 0 -4 6 -4 1 0 0 0 0 0 0 1 -4 6 -4 1 0 0 0 0 0 0 1 -4 6 -4 1 0 0 0 0 0 0 1 -4 6 -4 1 0 0 0 0 0 0 1 -4 6 -4 0 0 0 0 0 0 0 1 -4 6 -4 1 0 0 0 0 0 0 1 -4 6 -4 1 0 0 0 0 0 0 0 0 1 -2
Many thanks
  3 Commenti
Matt J
Matt J il 3 Set 2023
Has A(7,8) deliberately been made 0 instead of 1? If so, it is not clear what the pattern is supposed to be.
Scott Banks
Scott Banks il 3 Set 2023
No, Matt, it should be 1. Sorry for the typo

Accedi per commentare.

Risposta accettata

Matt J
Matt J il 3 Set 2023
[C,R]=deal(zeros(1,10));
C(1:4)=[-4 6 -4 1];
R(1:2)=[-4,1];
A=toeplitz(C,R);
A(1)=-2;
A(end,:)=flip(A(1,:))
A = 10×10
-2 1 0 0 0 0 0 0 0 0 6 -4 1 0 0 0 0 0 0 0 -4 6 -4 1 0 0 0 0 0 0 1 -4 6 -4 1 0 0 0 0 0 0 1 -4 6 -4 1 0 0 0 0 0 0 1 -4 6 -4 1 0 0 0 0 0 0 1 -4 6 -4 1 0 0 0 0 0 0 1 -4 6 -4 1 0 0 0 0 0 0 1 -4 6 -4 1 0 0 0 0 0 0 0 0 1 -2

Più risposte (1)

Torsten
Torsten il 3 Set 2023
Spostato: Torsten il 3 Set 2023
Experiment with "spdiags":
If first and last row appear different from your matrix, you can change them subsequently.

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by