Apply Singular Value Decomposition on Gabor filters
I won't recommend you apply SVD in your Gabor filter, since it does not bring much benefit but increase the computing load. If you implement SVD, you may not separate the filter at first, instead the SVD is performed on the 2D Gabor filter:

                for i = -filtSizeL:filtSizeR
                    for j = -filtSizeL:filtSizeR

                        if ( sqrt(i^2+j^2)&gt;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

               %% SVD %%%%
               [u,s,v]=SVD(f);


With u, s, and v, you implement the convolution with your image:

    convv = zeros(size(image_double));
    for i = 1:filtSizeR+filtSizeL+1
        convv1=imfilter(image_double*s(i,i),  u(i,:),'conv');
        convv2=imfilter(double(convv1),v(:,i)','conv');
        convv = convv + convv2;
    end

    figure
    imagesc(imag(convv));


Yet I don't think this method is as good as your separable f and g method.