Sum matrixes from cells

1 view (last 30 days)
Christos
Christos on 9 Mar 2024
Answered: Sibghat on 9 Mar 2024
Right now the code gives A matrix which are saved as cells in C. What I want to do at the final step, is to sum all A matrix that was given in every loop. How can I do that? Maybe exctract the matrix from C and sum them all together?! I dont know.( k is a number)
clear
clc
format long
k = input("mesie:");
for i=1:k
A=zeros(k+1);
L=zeros(2,k+1);
L(1,i)=1;
L(2,i+1)=1;
M1 = [2 1;1 2];
A = L'*M1*L;
C{i}=A;
end

Accepted Answer

Voss
Voss on 9 Mar 2024
sum(cat(3,C{:}),3)
  3 Comments
Voss
Voss on 9 Mar 2024
Demonstration:
clear
clc
format long
% k = input("mesie:");
k = 5;
for i=1:k
A=zeros(k+1);
L=zeros(2,k+1);
L(1,i)=1;
L(2,i+1)=1;
M1 = [2 1;1 2];
A = L'*M1*L;
C{i}=A;
end
A_total = sum(cat(3,C{:}),3)
A_total = 6×6
2 1 0 0 0 0 1 4 1 0 0 0 0 1 4 1 0 0 0 0 1 4 1 0 0 0 0 1 4 1 0 0 0 0 1 2
Voss
Voss on 9 Mar 2024
You're welcome!

Sign in to comment.

More Answers (1)

Sibghat
Sibghat on 9 Mar 2024
Hopefully this will help...
clear
clc
format long
% The 'input' function can not be used here. So I have set a default value 3 for the variable k.
k = 3;
C = cell(1, k); % Preallocate cell array
summed_matrix = zeros(k+1); % Initialize summed_matrix
for i = 1:k
A = zeros(k+1);
L = zeros(2, k+1);
L(1, i) = 1;
L(2, i+1) = 1;
M1 = [2 1; 1 2];
A = L' * M1 * L;
C{i} = A;
% Accumulate each matrix into summed_matrix
summed_matrix = summed_matrix + A;
end
% Display all matrices stored in cell array C
for i = 1:k
disp(['Matrix C{' num2str(i) '}']);
disp(C{i});
end
Matrix C{1}
2 1 0 0 1 2 0 0 0 0 0 0 0 0 0 0
Matrix C{2}
0 0 0 0 0 2 1 0 0 1 2 0 0 0 0 0
Matrix C{3}
0 0 0 0 0 0 0 0 0 0 2 1 0 0 1 2
disp('Sum of all matrices:');
Sum of all matrices:
disp(summed_matrix);
2 1 0 0 1 4 1 0 0 1 4 1 0 0 1 2

Categories

Find more on Numeric Types in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!