Мне нужно провести частотный анализ процесса интегрирования, где вход — это крутящий момент, а выход — положение. Если вход представляет собой синусоиду, вывод становится примерно таким:
Код, который я использую для извлечения соотношения амплитуд и фазы, выглядит следующим образом:
freq = 40;
freq_rad = freq * 2 * pi
phase_offset_rad = 30 * pi / 180
gain = 0
fs = 500;
L = 100;
t = (0:L-1)*(1/fs);
in = 2 * sin(freq * 2 * pi * t);
pos_in = [];
vel = 0;
pos = 0;
for i = 1:length(t)
vel = vel + in(i);
pos = pos + vel;
pos_in = [pos_in; pos];
end
out = pos_in;
%out = (2 + gain) * sin(freq * 2 * pi * t + phase_offset_rad);
fft_in = fft(in);
fft_out = fft(out);
[mag_in idx_in] = max(abs(fft_in));
[mag_out idx_out] = max(abs(fft_out));
phase = angle(fft_out(idx_out)) - angle(fft_in(idx_in))
phase_deg = phase / (pi / 180)
ratio = mag_out / mag_in
Если я запускаю его на идеально прямых синусоидальных сигналах, он работает отлично. Но как только я добавляю искажение, как указано выше, значения фазы и амплитуды неверны. Думаю, нужно как-то "сгладить" сигнал. Но я не уверен, как извлечь из него правильную амплитуду. Какова амплитуда? Я бы сказал, что на выходе это ~ 45 измерено от одного «плато» до другого, так как это то, как далеко движется вещь. Это будет соотношение ~ 22,5. Однако результат вычисления равен 196.
Может быть, я неправильно об этом думаю? Я хочу в конечном итоге получить передаточную функцию от входа крутящего момента к позиционному выходу, используя экспериментальные данные. Возможно, кто-то может показать, как это сделать?
Я думал, что я мог бы записать отношение амплитуд и фазу, а затем построить график Боде и легко извлечь из него передаточную функцию. До сих пор мне не удавалось получить график Боде из запуска тестов с различными входными частотами.