can anyone help me to make zero padding for a 4x3 matrix. i have to add a row of zeros in the top,bottom, left and right side of the matrix

 Accepted Answer

Image Analyst
Image Analyst on 8 Oct 2013

2 votes

If you have the Image Processing Toolbox, you can use padarray().

2 Comments

Thank You Sir.
Jie
Jie on 9 Oct 2013
cool

Sign in to comment.

More Answers (7)

cr
cr on 8 Oct 2013
Edited: cr on 8 Oct 2013
m = [zeros(1,size(m,2)+2); [zeros(size(m,1),1), m, zeros(size(m,1),1)]; zeros(1,size(m,2)+2)];
or even simpler, but needs creating a temp variable:
tmp = zeros(size(m)+2);
tmp(2:end-1,2:end-1) = m;
m = tmp;
Cheers.
Jos (10584)
Jos (10584) on 8 Oct 2013
Edited: Jos (10584) on 8 Oct 2013
Pad a matrix M with N zeros to all sides using indexing (neither trivial nor boring):
M = ceil(10*rand(3,4))
N = 2
if N > 0
M(end+2*N,end+2*N) = 0
M = M([end-N+1:end 1:end-N], [end-N+1:end 1:end-N])
end
If you have the image toolbox, take a look at PADARRAY.
a smarter and simpler way. here is an example for zero-padding with 4:
>> a=zeros(1,12)
a =
0 0 0 0 0 0 0 0 0 0 0 0
>> a(1:4:end)=1
a =
1 0 0 0 1 0 0 0 1 0 0 0

1 Comment

This does not wrap the matrix with a layer of zeros on all sides like the original poster asked or like padarray() does.

Sign in to comment.

Jie
Jie on 8 Oct 2013
Edited: Jie on 8 Oct 2013
function out_put =adpadding(in_put)
% just wish you matrix size is not too large
[n m]=size(in_put);
A=['a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' ];
B=1:20;
xlswrite('addapaddle.xls',0,'sheet1','a1');
str1=[A(m+2), num2str(B(n+2))];
xlswrite('addapaddle.xls',0,'sheet1',str1);
str2=['b2:' A(m+1), num2str(B(n+1))];
xlswrite('addapaddle.xls',in_put,'sheet1',str2);
str3=['a1:' str1];
out_put=xlsread('addapaddle.xls','sheet1',str3);
out_put(isnan(out_put))=0;
delete('addapaddle.xls')
could take some time, but save much effort regarding the mat size. I think the string part could be optimized somehow, but i just don't know how. Also u can try some simple but boring methods. like
a(1,2:end-1)=ones(1,size(a,2)-1)
or the alike.
FRANCISCO JAVIER
FRANCISCO JAVIER on 8 Oct 2013

0 votes

M=rand(2,1);
K=[zeros(2,1) M zeros(2,1)];
N=[zeros(1,3); K; zeros(1,3)];
Kiarash Ahi
Kiarash Ahi on 15 Jul 2014
Edited: Kiarash Ahi on 15 Jul 2014
Try this as well:
function kp=padding(k)
[M N]=size(k);
for n=1:2:N
k(:,n)=0
end
end
Md. Kamal  Hossain
Md. Kamal Hossain on 5 Apr 2016

0 votes

How to add zero in a sequence

1 Comment

If the sequence is stored in a vector, and index is the location where you want to add/insert the zeros:
newVec = [vec(1:index-1), 0, vec(index:end)];

Sign in to comment.

Categories

Find more on Operators and Elementary Operations in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!