I'm trying to create a digital filter from a first order analog filter with transfer function $$H(s)=\frac{1}{1+\tau s}$$ with time constant $\tau=.1\text{s}$, and sampling rate $f_s=1000\text{Hz}$.
Applying the bilinear transform in Matlab however appears to yield a filter with the a different 3dB point than expected. I expect the 3dB point to be at $\frac{1}{\tau}=10\text{Hz}$, but it appears to be around $1.6\text{Hz}$. Any idea what I could be doing incorrectly?
Matlab code:
fs = 1000;
tau = .1;
num = 1;
den = [tau, 1];
[numd,dend]=bilinear(num,den,fs);
[h, f] = freqz(numd,dend,4096, fs);
figure(1); clf();
subplot(211); semilogx(f,20*log10(abs(h))); hold on
plot([.1, 1000], [-3 -3],'r');
grid on; ylim([-40,1]); ylabel('gain (db)'); xlim([.1, fs/2]);
subplot(212); semilogx(f, angle(h)*180/pi);
grid on; ylabel('phase(rad)'); xlim([.1, fs/2]); xlabel('frequency(Hz)');