Insert Matrix into Matrix and don't care if some of the numbers fall off the edge

조회 수: 2 (최근 30일)
I'm trying to make a little game. I have a 2 part question. How can I insert a matrix in a matrix where I do not care if the some of the inserted matrix falls outside the matrix I am inserting it into. Except, I don't want the center of the inserted matrix to be lost,
Thank you
Andrew
example
A= 1 1 1
1 2 1
1 1 1
B= 0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
B into A at (4,5) (coordinates based on center of A)
Result = 0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 1 1 1
0 0 0 1 2 1
  댓글 수: 1
Walter Roberson
Walter Roberson 2021년 8월 12일
What should happen in the case where the center of the inserted matrix would get lost?
I do not see you inserting B into A; I see you inserting A into B ?

댓글을 달려면 로그인하십시오.

답변 (1개)

the cyclist
the cyclist 2021년 8월 12일
Probably not the most efficient, but I believe this does what you want:
% Arrays
A= [1 1 1
1 2 1
1 1 1];
B= [0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
];
% Where to center
ci = 4;
cj = 5;
% Get sizes
[mA, nA] = size(A);
[mB, nB] = size(B);
% Calculate necessary "padding" around B, which will be trimmed later
pad = (mA-1)/2;
% Initialize output as padded size
output = nan(mB+2*pad,nB+2*pad);
% Insert B into padded array
output(pad+1:end-pad,pad+1:end-pad) = B;
% Insert A into padded array, at specified coordinates
output(ci:ci+mA-1,cj:cj+nA-1) = A;
% Remove the padding (and extraneous elements of A)
output = output(pad+1:end-pad,pad+1:end-pad)
output = 4×6
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 2 1

카테고리

Help CenterFile Exchange에서 Conway's Game of Life에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

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

Start Hunting!

Translated by