www.pudn.com > standardmodelrelease.zip > init_gabor.m
function [fSiz,filters,c1OL,numSimpleFilters] = init_gabor(rot, RF_siz, Div)
% function init_gabor(rot, RF_siz, Div)
% Thomas R. Serre
% Feb. 2003
c1OL = 2;
numFilterSizes = length(RF_siz);
numSimpleFilters = length(rot);
numFilters = numFilterSizes*numSimpleFilters;
fSiz = zeros(numFilters,1); % vector with filter sizes
filters = zeros(max(RF_siz)^2,numFilters);
lambda = RF_siz*2./Div;
sigma = lambda.*0.8;
G = 0.3; % spatial aspect ratio: 0.23 < gamma < 0.92
for k = 1:numFilterSizes
for r = 1:numSimpleFilters
theta = rot(r)*pi/180;
filtSize = RF_siz(k);
center = ceil(filtSize/2);
filtSizeL = center-1;
filtSizeR = filtSize-filtSizeL-1;
sigmaq = sigma(k)^2;
for i = -filtSizeL:filtSizeR
for j = -filtSizeL:filtSizeR
if ( sqrt(i^2+j^2)>filtSize/2 )
E = 0;
else
x = i*cos(theta) - j*sin(theta);
y = i*sin(theta) + j*cos(theta);
E = exp(-(x^2+G^2*y^2)/(2*sigmaq))*cos(2*pi*x/lambda(k));
end
f(j+center,i+center) = E;
end
end
f = f - mean(mean(f));
f = f ./ sqrt(sum(sum(f.^2)));
p = numSimpleFilters*(k-1) + r;
filters(1:filtSize^2,p)=reshape(f,filtSize^2,1);
fSiz(p)=filtSize;
end
end