Effacer les filtres
Effacer les filtres

Populating a matrix with variables

2 vues (au cours des 30 derniers jours)
Steven Taggart
Steven Taggart le 29 Sep 2016
Commenté : Massimo Zanetti le 29 Sep 2016
Hello,
I am currently working on some finite volume method problems and as such I need to populate a matrix diagonal, I have used the 'diag' function successfully for populating the matrix with numbers but I would like to insert variables in the matrix diagonal. Would someone be able to advise me on the best way to do this. I am looking for something like the matrix included below, I know I could easily type in a matrix of that size but something of the 100*100 size just isn't practical.
Thanks for your help.
a_p1 a_e1 0 0 0
a_w2 a_p2 a_e2 0 0
0 a_w3 a_p3 a_e3 0
0 0 a_w4 a_p4 a_e4
0 0 0 a_w5 a_p5
P.S. I am fairly new to Matlab and I am using this finite volume method problem as a way to learning the software.

Réponses (1)

Massimo Zanetti
Massimo Zanetti le 29 Sep 2016
Best way to populate diagonal matrix is to use spdiags (see help page).
For example, to obtain
A=[1,2,0,0,0,0;
0,2,3,0,0,0;
0,0,3,4,0,0;
0,0,0,4,5,0;
0,0,0,0,5,6];
Do this:
%define a matrix where columns are the diagonals
D = [1,2;
2,3;
3,4;
4,5;
5,6];
%put the columns in diagonal positions 0 (main diag) and 1 (upper diag)
%and specify matrix size 5x6
A = full(spdiags(D,[0,1],5,6));
  4 commentaires
Steven Taggart
Steven Taggart le 29 Sep 2016
If I was looking to make a 80*80 matrix is there a way I could say a_1...a_80 without typing it all out.
Thanks
Massimo Zanetti
Massimo Zanetti le 29 Sep 2016
what are the real numbers that have to populate the matrix? a_1=? a_2=? .....

Connectez-vous pour commenter.

Catégories

En savoir plus sur Operating on Diagonal Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by