Matrix define using for loop

3 Ansichten (letzte 30 Tage)
mathru
mathru am 27 Jul. 2020
Kommentiert: KSSV am 27 Jul. 2020
How to define the following matrix (penta diagonal) using for loop?
  2 Kommentare
Walter Roberson
Walter Roberson am 27 Jul. 2020
Why use a for loop when Bruno already showed you a vectorized solution?
mathru
mathru am 27 Jul. 2020
In this matrix, the diagonal value is -4. But for a generalized form of this matrix, I have to use an expression "1/(i*dr)" where dr is the increment along x direction. That's why I need to use for loop.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

KSSV
KSSV am 27 Jul. 2020
Read about diag.
A = -4*ones(9,1) ;
B = [1 1 0 1 1 0 1 1] ;
C = ones(1,6) ;
iwant = diag(C,-3)+ diag(B,-1) + diag(A) +diag(B,1) + diag(C,3)
  2 Kommentare
mathru
mathru am 27 Jul. 2020
Hi KSSV, thanks for your code. Here is my generalized matrix. Can you please have a look?
KSSV
KSSV am 27 Jul. 2020
You can proceed like this:
% define the constants
F0 = rand ;
S = rand ;
dr = 1 ;
%
A = (2+4*F0)*ones(1,9) ;
B = F0*ones(8,1) ; B(3:3:end) = 0 ;
id = [2 2 2 3 3 3 ] ;
C = -F0-S./(dr*id) ;
id = [3 3 3 4 4 4 ] ;
D = -F0+S./(dr*id) ;
iwant = diag(D,-3)+diag(B,-1)+diag(A)+diag(B,1)+diag(C,3) ;

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by