Добрый день,
Задача: при неизвестной передаточной функции системы, получить её частотные характеристики (ЛАЧХ\ЛФЧХ) по ипульсной характеристике. Повторюсь, требуется вычилслить ЛАЧХ\ЛФЧХ по эксперементальным данным (отлик системы на дельта импульс), а не аналитически по известной передаточный функции W(s).
Делаю так как написано
здесь и
здесь. Т.е. вычисляю FFT от отклика на дельта-импульс, затем беру модуль и фазу полученных Фурье коэффициентов и отображаю их в соотв.масштабе.
Код (Matlab):
Tend=1000;
fs=2100; % sampling rate
t = 0:1/fs:Tend; % sampling instants
N=length(t);
input=[1;zeros(N-1,1)]; % modelling the obtaning impulse reponse
ws=tf([10],[1 1 1 1 1]);
data=lsim(ws,input,t);
temp = fft(data,N); % perform N-point transform
fftdata = temp(1:N/2); % just look at first half
m = 20*log10(abs(fftdata)); % m = magnitude of sinusoids
p = unwrap(angle(fftdata)); % p = phase of sinusoids, unwrap()
% copes with 360 degree jumps
f = (0:N/2-1)*fs/(N); % calculate Hertz values
% plot spectrum 0..fs/2 :
figure('Name','MyBode')
subplot(2,1,1), semilogx(f,m); % plot magnitudes
ylabel('Abs. Magnitude'), grid on;
subplot(2,1,2), semilogx(f,p*180/pi); % plot phase in degrees
ylabel('Phase [Degrees]'), grid on;
xlabel('Frequency [Hertz]');
figure('Name','Bode'),bode(ws);
clear
sampling rate как я понимаю можно взять произвольный, т.к. все равно я сам моделирую входной сигнал. Или я не прав?
Пусть ws=tf([10],[1 1]); (т.е. передаточная функция равна W(s)=10/(1+s) )
Сравниваю с bode(ws) и получаю:
Пусть ws=tf([10],[
1 1 1 1 1]);
Сравниваю с bode(ws) и получаю:

Почему получается такое расхождение, причем как в абсолютных значениях, так и в форме?
Как правильно посчитать частотные характеристики по известному отклику системы на дельта-импульс ?
Спасибо