MATLAB: Using 3×3 matrix to create 21×21 matrix

for loopmatrices

I have built a 3×3 matrix using the code below
EA = 1;
h = 1;
F = @(xi)(xi-0.5).*(xi-0.5)
k(1,1) =EA/h* 2*quad(F, -1, 1)
F = @(xi)(xi-0.5).*(-2*xi)
k(1,2) = EA/h* 2*quad(F, -1, 1)
F = @(xi)(xi-0.5).*(xi+0.5)
k(1,3) = EA/h* 2*quad(F, -1, 1)
F = @(xi)(-2*xi).*(-2*xi)
k(2,2) =EA/h* 2*quad(F, -1, 1)
F = @(xi)(xi+0.5).*(-2*xi)
k(2,3) = EA/h*2*quad(F, -1, 1)
F = @(xi)(xi+0.5).*(xi+0.5)
k(3,3) = EA/h*2*quad(F, -1, 1)
k(2,1) = k(1,2)
k(3,1) = k(1,3)
k(3,2) = k(2,3)
I want to use the 3×3 matrix above to create a 21×21 matrix following the pattern below
new doc 2019-11-11 00.20.06_1.jpg
the overlapped elements should be added together, the numbers not in the 3×3 matrix are zero in the bigger matrix…k(4,1)=0 etc..
10 3×3 matrices should be used
I want to use a for loop unless there's another method

Best Answer

It is not clear the overlap values. I assumed the following:
  1. k33+k11
  2. k33+k12
  3. K33+k13
  4. K33+k23
  5. ..., Until the last is k33+k33
The other values is just copy from the given location. Then, you might use only for loop for this. Check in the following:
k19 = reshape(k(1:3,1:3),1,9); % Reshape for [k11 k12 k12 k21 k22 k23 k31 k32 k33]
j = 1;
for i=4:2:21
k(i,i-1) = k(2,1);
k(i-1,i) = k(2,1);
k(i+1,i-1) = k(3,1);
k(i-1,i+1) = k(3,1);
k(i+1,i) = k(3,2);
k(i,i+1) = k(3,2);
k(i,i) = k(2,2);
k(i+1,i+1) = k(3,3) + k19(j); % Overlap goes here
j = j + 1;
end
Related Question