필터 지우기
필터 지우기

Populating a matrix with variables

조회 수: 2 (최근 30일)
Steven Taggart
Steven Taggart 2016년 9월 29일
댓글: Massimo Zanetti 2016년 9월 29일
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.

답변 (1개)

Massimo Zanetti
Massimo Zanetti 2016년 9월 29일
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
Steven Taggart
Steven Taggart 2016년 9월 29일
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 2016년 9월 29일
what are the real numbers that have to populate the matrix? a_1=? a_2=? .....

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

카테고리

Help CenterFile Exchange에서 Operating on Diagonal Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by