how to add zeros around a matrix?

조회 수: 56 (최근 30일)
Mucahid Akyar
Mucahid Akyar 2017년 11월 22일
댓글: DGM 2024년 3월 13일
for example i have a matrix A = [1 2 3; 2 3 4; 5 6 7] I am working on image processing and I want to add zeros around this matrix like below. How can i do that?
0 0 0 0 0
0 1 2 3 0
0 2 3 4 0
0 5 6 7 0
0 0 0 0 0

채택된 답변

Stephen23
Stephen23 2017년 11월 22일
>> conv2(A,[0,0,0;0,1,0;0,0,0])
ans =
0 0 0 0 0
0 1 2 3 0
0 2 3 4 0
0 5 6 7 0
0 0 0 0 0
  댓글 수: 5
Stephen23
Stephen23 2017년 11월 22일
편집: Stephen23 2017년 11월 22일
It is not clear what you would expect the result to be. MATLAB does not currently have a syntax for looping over two variables at once. You could define the loop to be an index and use that to select elements from those vectors:
iV = 0:1:5;
jV = 0:1:5;
for k = 1:numel(iV)
iN = iV(k);
jN = jV(k);
end
Eren Ozcelik
Eren Ozcelik 2021년 4월 30일
Hi. How can I use this method for non-square matrix? For example creating a border for 1000x1500 matrix.

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

추가 답변 (3개)

KL
KL 2017년 11월 22일
newA = zeros(size(A)+2);
newA(2:end-1,2:end-1)=A

Andrei Bobrov
Andrei Bobrov 2017년 11월 22일
편집: Andrei Bobrov 2017년 11월 22일
padarray(A,[1 1],0)
  댓글 수: 2
Stephen23
Stephen23 2017년 11월 22일
Note: requires the image toolbox.
DGM
DGM 2022년 7월 16일
While padarray() requires IPT, MIMT has padarrayFB(), which uses, but does not require IPT. That's a possibility for those who don't have IPT. ... but then MIMT also has other options for adding borders to images.

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


noam gridish
noam gridish 2024년 3월 12일
% create bigger mat of zeros
[m,n]=size(A);
paded_mat=zeros(m+1,n+1);
paded_mat(2:end-1,2:end-1)=A;
A=paded_mat;
  댓글 수: 1
DGM
DGM 2024년 3월 13일
Have you tested this? I ask because it will throw an error. Your preallocated array is too small.

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

Community Treasure Hunt

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

Start Hunting!

Translated by