Insert Matrix into Matrix and don't care if some of the numbers fall off the edge
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentar
Walter Roberson
am 12 Aug. 2021
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 ?
Antworten (1)
the cyclist
am 12 Aug. 2021
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)
0 Kommentare
Siehe auch
Kategorien
Mehr zu Graphics Object Programming finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!