I want to calculate the frequency response of a discrete PT1 system with T=T1 and K=1. (the code is at the bottom of the question) To validate the magnitude response, I want to use an sinusoidal input signal with linearly increasing frequency from 0 to fs/2. The magnitude response should be the envelope of the transient response. However, this is only the case if I change the line
u = sin(2*pi*f.*t);
to
u = sin(pi*f.*t);
Why? I assume that I have any kind of faulty reasoning here, but I can't find it.
Thanks in advance.
Full code:
clear
%% Input (linear frequency sweep)
Ts = .1e-3;
duration = 30;
t = (0:Ts:duration);
fs = 1/Ts;
f = (fs/2)*t/duration;
u = sin(2*pi*f.*t);
%% PT1-system continuous
T1 = 1e-3;
G = tf(1,[T1 1]);
%% PT1 discretized
H = c2d(G,Ts,'zoh');
%% PT1 trasient response
x0 = 0;
x = lsim(H,u,[],x0,'zoh');
%% PT1 freq. response
[h,~] = freqz(H.Numerator{1:end},H.Denominator{1:end},f,fs);
%% Plot
figure(1),clf(1),hold on
plot(u),plot(x),plot(abs(h))