Добро пожаловать, гость
:: алгоритмы  и методы :: :: олимпиадные задачи :: :: связь :: :: о сайте :: :: форум ::

Форум работает в режиме архива, только для чтения и поиска.
Архив 2004 Архив 2007 Архив 2013

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.06.2008, 22:16
Петров Александр

 
Сообщений: n/a

ЛАЧХ\ЛФЧХ (Matlab vs Бесекерский)
Добрый день,

Задача: при неизвестной передаточной функции системы, получить её частотные характеристики (ЛАЧХ\ЛФЧХ) по ипульсной характеристике. Повторюсь, требуется вычилслить ЛАЧХ\ЛФЧХ по эксперементальным данным (отлик системы на дельта импульс), а не аналитически по известной передаточный функции 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) и получаю:


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

Спасибо
  #2  
Старый 07.06.2008, 14:14
Петров Александр

 
Сообщений: n/a

Нашел статью, в которой описывается моя проблема — System Identification Of A Higher Order System.

Если есть люди, знающие теорию управления, теорию идентификации систем, взгляните по статью, пожалуйста. Мне не хватает теоретической подготовки, чтобы правильно проинтерпретировать её результаты.

Если коротко, то в статье как раз описывается та ситуация, с которой я столкнулся (см. пред. пост). При этом эта ситуация (различие теоретически и экспериметнально полученных диаграмм Боде) считается нормальной и объясняется как побороть это различие в частном случае.



(зеленым цветом — теоретические результаты (по аналитически представленной передаточной функции), синим цветом — экспериментальные результаты (по данным))
Откуда возникает это различие ?

Спасибо
  #3  
Старый 19.10.2008, 21:38
RouR

 
Сообщений: n/a

Ты пошел не тем путем.
1. В матлаб загоняешь свои данные в виде массива
2. Запускаешь инструмент System Identification (в разных версиях называется по разному)
3. Указываешь массив как исходные данные, вид искомой функции. Матлаб найдет искомую функцию и даже выведет процент совпадения с эксперементальными данными.
Попробуй найти в виде передаточной функции, затем преобразуй к АФЧХ.
 


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ELLIPSE FIT - Matlab XGosha Обработка изображений, звук, графика 0 25.04.2007 16:11
литература по Matlab и Matcad buldozerus Математические алгоритмы 1 21.01.2007 18:47