Matrix define using for loop

3 vues (au cours des 30 derniers jours)
mathru
mathru le 27 Juil 2020
Commenté : KSSV le 27 Juil 2020
How to define the following matrix (penta diagonal) using for loop?
  2 commentaires
Walter Roberson
Walter Roberson le 27 Juil 2020
Why use a for loop when Bruno already showed you a vectorized solution?
mathru
mathru le 27 Juil 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.

Connectez-vous pour commenter.

Réponse acceptée

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

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by