could you please convert it into a loop

very simple logic but im not getting
n=4
K = [ 1, 2; 3, 4]
K1=zeros(n+1);
K1([1 2],[1 2])=K
K2=zeros(n+1);
K2([2 3],[2 3])=K
K3=zeros(n+1);
K3([3 4],[3 4])=K
K4=zeros(n+1);
K4([4 5],[4 5])=K
L=K1+K2+K3+K4;
how to convert this into loop where we can add more Kn matrices

2 Comments

Stephen23
Stephen23 on 9 Mar 2019
Edited: Stephen23 on 9 Mar 2019
"how to convert this into loop where we can add more Kn matrices"
Do NOT do that. Dynamically accessing variable names is one way that beginners force themselves into writing slow, complex, buggy code that is hard to debug. Read this to know why:
Indexing is neat, simple, and very efficient. You should use indexing, e.g. with a cell array or an ND numeric array.
thanks stephen!! that gave me lot and i got it.

Sign in to comment.

 Accepted Answer

In addition to what Stephen said, it's very easy to create your L for any n, without even a loop:
K = [1 2; 3 4];
n = 5;
L = toeplitz([trace(K), K(2, 1), zeros(1, n-2)], [trace(K), K(1, 2), zeros(1, n-2)]);
L([1, end]) = K([1, end])

1 Comment

wow guillaume, i got one step answer with yours... thanks a lot

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Asked:

on 9 Mar 2019

Commented:

on 10 Mar 2019

Community Treasure Hunt

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

Start Hunting!