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

 Réponse acceptée

Image Analyst
Image Analyst le 8 Oct 2013

2 votes

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

2 commentaires

sheno39
sheno39 le 8 Oct 2013
Thank You Sir.
Jie
Jie le 9 Oct 2013
cool

Connectez-vous pour commenter.

Plus de réponses (7)

cr
cr le 8 Oct 2013
Modifié(e) : cr le 8 Oct 2013

2 votes

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) le 8 Oct 2013
Modifié(e) : Jos (10584) le 8 Oct 2013

1 vote

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.
Slim Ben Ghalba
Slim Ben Ghalba le 21 Nov 2013

1 vote

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 commentaire

Image Analyst
Image Analyst le 15 Juil 2014
This does not wrap the matrix with a layer of zeros on all sides like the original poster asked or like padarray() does.

Connectez-vous pour commenter.

Jie
Jie le 8 Oct 2013
Modifié(e) : Jie le 8 Oct 2013

0 votes

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 le 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 le 15 Juil 2014
Modifié(e) : Kiarash Ahi le 15 Juil 2014

0 votes

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 le 5 Avr 2016

0 votes

How to add zero in a sequence

1 commentaire

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)];

Connectez-vous pour commenter.

Catégories

En savoir plus sur Operators and Elementary Operations dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by