Cómo hacer un filtro gaussiano en Matlab

He intentado hacer un filtro gaussiano en Matlab sin usarimfilter() yfspecial(). He intentado esto, pero el resultado no es como el que tengo con imfilter y fspecial.

Aquí están mis códigos.

function Gaussian_filtered = Gauss(image_x, sigma)

% for single axis
% http://en.wikipedia.org/wiki/Gaussian_filter
Gaussian_filtered = exp(-image_x^2/(2*sigma^2)) / (sigma*sqrt(2*pi)); 
end

para 2D Gaussian,

function h =  Gaussian2D(hsize, sigma)

n1 = hsize;
n2 = hsize;

for i = 1 : n2 
        for j = 1 : n1
        % size is 10;
        % -5<center<5 area is covered.
        c = [j-(n1+1)/2 i-(n2+1)/2]';                
        % A product of both axes is 2D Gaussian filtering
        h(i,j) = Gauss(c(1), sigma)*Gauss(c(2), sigma);        
        end
    end
end

y el último es

function Filtered = GaussianFilter(ImageData, hsize, sigma)

%Get the result of Gaussian
filter_ = Gaussian2D(hsize, sigma);

%check image
[r, c] = size(ImageData);
Filtered = zeros(r, c);    

for i=1:r
    for j=1:c
        for k=1:hsize
            for m=1:hsize
                    Filtered =  Filtered + ImageData(i,j).*filter_(k,m);    
            end
        end
    end
end
end

Pero la imagen procesada es casi la misma que la imagen de entrada. Me pregunto la ultima funcionGaussianFiltered() es problematico

Gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta