Matrix define using for loop

3 visualizzazioni (ultimi 30 giorni)
mathru
mathru il 27 Lug 2020
Commentato: KSSV il 27 Lug 2020
How to define the following matrix (penta diagonal) using for loop?
  2 Commenti
Walter Roberson
Walter Roberson il 27 Lug 2020
Why use a for loop when Bruno already showed you a vectorized solution?
mathru
mathru il 27 Lug 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.

Accedi per commentare.

Risposta accettata

KSSV
KSSV il 27 Lug 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 Commenti
mathru
mathru il 27 Lug 2020
Hi KSSV, thanks for your code. Here is my generalized matrix. Can you please have a look?
KSSV
KSSV il 27 Lug 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) ;

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by