Matrix define using for loop

1 view (last 30 days)
mathru
mathru on 27 Jul 2020
Commented: KSSV on 27 Jul 2020
How to define the following matrix (penta diagonal) using for loop?
  2 Comments
Walter Roberson
Walter Roberson on 27 Jul 2020
Why use a for loop when Bruno already showed you a vectorized solution?
mathru
mathru on 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.

Sign in to comment.

Accepted Answer

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

Sign in to comment.

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!