Sum matrixes from cells

2 visualizzazioni (ultimi 30 giorni)
Christos
Christos il 9 Mar 2024
Risposto: Sibghat il 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

Risposta accettata

Voss
Voss il 9 Mar 2024
sum(cat(3,C{:}),3)
  3 Commenti
Voss
Voss il 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 il 9 Mar 2024
You're welcome!

Accedi per commentare.

Più risposte (1)

Sibghat
Sibghat il 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

Categorie

Scopri di più su Numeric Types in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by