When mapping smaller arrays to a bigger array, how do I have overlapping elements be added?
9 次查看(过去 30 天)
显示 更早的评论
So I am working with stiffness matrices and I am trying to make a global stiffness matrix. I am trying to map each stiffness matrix into a portion of the global stiffness matrix, and wherever the individual matrices overlap, I need the elements to be added. To explain better:
Say I have 2 4x4 matrices:
A = [1 1 1 1;
1 1 1 1;
1 1 1 1;
1 1 1 1]
B = [1 1 1 1;
1 1 1 1;
1 1 1 1;
1 1 1 1]
and I want to map it to one larger 6x6 matrix:
C = [1 1 1 1 0 0;
1 1 1 1 0 0;
1 1 2 2 1 1;
1 1 2 2 1 1;
0 0 1 1 1 1;
0 0 1 1 1 1]
where A and B overlap at C(3:4,3:4), and everywhere that A and B are not is filled up with 0s.
I know that I can map A and B to C by writing:
C(1:4,1:4) = A
C(3:6,3:6) = B
but how do I get C(3:4,3:4) to automatically add the corresponding elements in A and B?
0 个评论
采纳的回答
更多回答(1 个)
Sachin
2023-2-17
编辑:Sachin
2023-2-17
Referring the following information might be of good help to you.
C = zeros(6,6);
A = [1 1 1 1;
1 1 1 1;
1 1 1 1;
1 1 1 1];
B = [1 1 1 1;
1 1 1 1;
1 1 1 1;
1 1 1 1];
C(1:length(A),1:length(A)) = A;
rowidx = 6-length(A)+1; % row index where overlapping starts
colidx = 6-length(A)+1; % col index where overlapping starts
C(rowidx:6,colidx:6) = C(rowidx:6,colidx:6) + B;
C
This solution can be used for any size square matrix.
Regards
Sachin
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!