Sum matrixes from cells

1 次查看(过去 30 天)
Christos
Christos 2024-3-9
回答: Sibghat 2024-3-9
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

采纳的回答

Voss
Voss 2024-3-9
sum(cat(3,C{:}),3)
  3 个评论
Voss
Voss 2024-3-9
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

请先登录,再进行评论。

更多回答(1 个)

Sibghat
Sibghat 2024-3-9
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

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by