Моделирование текущего сигнала от питающего преобразователя

Этот пример показывает моделирование измеренного сигнала. Мы анализируем текущий сигнал от R-фазы, когда трехфазный преобразователь на 400 кВ включен. Измерения выполнялись AB Sydkraft в Швеции.

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

Введение

Сигналы могут быть рассмотрены как импульсный ответ авторегрессивной линейной модели и могут таким образом быть смоделированы с помощью инструментов, таких как ar.

Данные для сигналов могут инкапсулироваться в объекты iddata путем установки выходных данных объекта к значениям сигналов и оставления входа пустым. Например, если x(t) представляет сигнал, который будет смоделирован, то соответствующий объект iddata может быть создан как: data = iddata(x,[],T);, где T является шагом расчета x.

Стандартные идентификационные инструменты, такие как n4sid, ssest, ar и arx могут использоваться, чтобы оценить характеристики данных "только для вывода". Эти модели оценены для их спектральной возможности оценки, а также их способности предсказать будущие значения сигнала от измерения их прошлых значений.

Анализ данных

Мы начинаем это тематическое исследование путем загрузки данных для текущего сигнала от преобразователя:

load current.mat

Теперь, мы группируем текущие данные (i4r) в объект iddata. Шаг расчета составляет 0,001 секунды (1 ms).

i4r = iddata(i4r,[],0.001)  % Second argument empty for no input
i4r =

Time domain data set with 601 samples.
Sample time: 0.001 seconds             
                                       
Outputs      Unit (if specified)       
   y1                                  
                                       

Давайте теперь анализировать эти данные. Во-первых, смотрите на данные:

plot(i4r)

Завершение представление данных показывают ниже:

plot(i4r(201:250))

Затем, мы вычисляем необработанную периодограмму сигнала:

ge = etfe(i4r)
spectrum(ge)
ge =
IDFRD model.
Contains spectrum of signal in the "SpectrumData" property.
 
Output channels: 'y1'
Status:                                        
Estimated using ETFE on time domain data "i4r".

Эта периодограмма показывает несколько гармоник, но не очень сглаженна. Сглаживавшая периодограмма получена:

ges = etfe(i4r,size(i4r,1)/4);
spectrum(ge,ges);
legend({'ge (no smoothing)','ges (with smoothing)'})

Сконфигурируйте график использовать линейную шкалу частоты и модули Гц:

h = spectrumplot(ges);
opt = getoptions(h);
opt.FreqScale = 'linear';
opt.FreqUnits = 'Hz';
setoptions(h,opt);
axis([0 500,-5 40])
grid on, legend('ges')

Мы ясно видим доминирующую частотную составляющую 50 Гц и ее гармоники.

Давайте выполним спектральный анализ данных с помощью spa, который использует окно Hann, чтобы вычислить спектральные амплитуды (в противоположность etfe, который только вычисляет необработанную периодограмму). Стандартная оценка (с размером % окна по умолчанию, который не настроен к резонирующим спектрам) дает:

gs =  spa(i4r);
hold on
spectrumplot(gs);
legend({'ges (using etfe)','gs (using spa)'})
hold off

Мы видим, что очень большое окно задержки потребуется, чтобы видеть все прекрасные резонансы сигнала. Стандартный спектральный анализ не работает хорошо. Нам нужна более сложная модель, такая как обеспеченные параметрическими авторегрессивными техниками моделирования.

Параметрическое моделирование текущего сигнала

Давайте теперь вычислим спектры параметрическими методами AR. Модели 2-го 4-го и 8-го порядка получены:

t2 = ar(i4r,2);
t4 = ar(i4r,4);
t8 = ar(i4r,8);

Давайте смотреть на их спектры:

spectrumplot(t2,t4,t8,ges,opt);
axis([0 500,-8 40])
legend({'t2 (2nd order AR)','t4 (4th order AR)','t8 (8th order AR)','ges (using spa)'});

Мы видим, что параметрические спектры не способны к взятию гармоник. Причина состоит в том, что модели AR присоединяют слишком много внимания к более высоким частотам, которые являются трудными к модели. (См. Ljung (1999) Пример 8.5).

Мы должны будем перейти к высокого уровня моделям, прежде чем гармоники будут взяты.

Что полезное закажет быть? Мы можем использовать arxstruc, чтобы определить это.

V = arxstruc(i4r(1:301),i4r(302:601),(1:30)'); % Checking all order up to 30

Выполните следующую команду, чтобы выбрать лучший порядок в интерактивном режиме: nn = selstruc(V,'log');

Как фигура выше показов, существует резкий спад для n=20. Таким образом давайте выберем тот порядок для следующих обсуждений.

t20 = ar(i4r,20);
spectrumplot(ges,t20,opt);
axis([0 500 -25 80])
legend({'ges (using spa)','t20 (20th order AR)'});

Все гармоники теперь взяты, но почему уровень понизился? Причина состоит в том, что t20 содержит очень тонкий но высокий peaks. С грубой сеткой точек частоты в t20 мы просто не видим истинных уровней peaks. Мы можем проиллюстрировать это можно следующим образом:

g20c = idfrd(t20,(551:650)/600*150*2*pi); % A frequency region around 150 Hz
spectrumplot(ges,t20,g20c,opt)
axis([0 500 -25 80])
legend({'ges (using spa)','t20 (20th order AR)','g20c (resp. around 150 Hz)'});

Когда этот график показывает, модель t20 довольно точна; когда построено на прекрасной сетке частоты, это действительно получает гармоники сигнала вполне точно.

Моделирование только гармоник более низкоуровневых

Если мы, в основном, интересуемся более низкими гармониками и хотим использовать модели более низкоуровневые, мы должны будем применить предварительную фильтрацию данных. Мы выбираем 5-й порядок Фильтр Баттерворта с частотой среза на уровне 155 Гц. (Это должно покрыть эти 50, режимы на 100 и 150 Гц):

i4rf = idfilt(i4r,5,155/500); % 500 Hz is the Nyquist frequency
t8f = ar(i4rf,8);

Давайте теперь сравним спектр, полученный из отфильтрованных данных (8-я модель порядка) с который для неотфильтрованных данных (8-й порядок) и с периодограммой:

spectrumplot(t8f,t8,ges,opt)
axis([0 350 -60 80])
legend({'t8f (8th order AR, filtered data)',...
   't8 (8th order AR, unfiltered data)','ges (using spa)'});

Мы видим, что с отфильтрованными данными берем первые три peaks в спектре вполне хорошо.

Мы можем вычислить численные значения резонансов можно следующим образом: корни выбранной синусоиды частоты, скажем om, расположены на модульном круге в exp(i*om*T), T, являющийся шагом расчета. Мы таким образом продолжаем можно следующим образом:

a = t8f.a % The AR-polynomial
omT = angle(roots(a))'
freqs = omT/0.001/2/pi';
% show only the positive frequencies for clarity:
freqs1 = freqs(freqs>0) % In Hz
a =

  Columns 1 through 7

    1.0000   -5.0312   12.7031  -20.6934   23.7632  -19.6987   11.5651

  Columns 8 through 9

   -4.4222    0.8619


omT =

  Columns 1 through 7

    1.3591   -1.3591    0.9620   -0.9620    0.3146   -0.3146    0.6314

  Column 8

   -0.6314


freqs1 =

  216.3063  153.1036   50.0665  100.4967

Мы таким образом находим первые три гармоники (50, 100 и 150 Гц) вполне хорошо.

Мы могли также протестировать, как хорошо модель t8f способна к предсказанию сигнала, скажите 100 мс (100 шагов) вперед и оцените подгонку на выборках 201 - 500:

compare(i4rf,t8f,100,compareOptions('Samples',201:500));

Как наблюдается, модель первых 3 гармоник довольно хороша в предсказании будущих выходных значений, даже 100 шагов вперед.

Моделирование только гармоник высшего порядка

Если бы мы интересовались только четвертыми и пятыми гармониками (приблизительно 200 и 250 Гц), то мы продолжили бы фильтрацией полосы данные к этому более высокому частотному диапазону:

i4rff = idfilt(i4r,5,[185 275]/500);
t8fhigh = ar(i4rff,8);
spectrumplot(ges,t8fhigh,opt)
axis([0 500 -60 40])
legend({'ges (using spa)','t8fhigh (8th order AR, filtered to high freq. range)'});

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

Заключения

Какая модель является лучшей? В целом модель высшего порядка дала бы более высокую точность. Чтобы анализировать это, мы рассматриваем то, что 20-я модель порядка дала бы с точки зрения ее возможности в оценке гармоник:

a = t20.a  % The AR-polynomial
omT = angle(roots(a))'
freqs = omT/0.001/2/pi';
% show only the positive frequencies for clarity:
freqs1 = freqs(freqs>0) %In Hz
a =

  Columns 1 through 7

    1.0000    0.0034    0.0132    0.0012    0.0252    0.0059    0.0095

  Columns 8 through 14

    0.0038    0.0166    0.0026    0.0197   -0.0013    0.0143    0.0145

  Columns 15 through 21

    0.0021    0.0241   -0.0119    0.0150    0.0246   -0.0221   -0.9663


omT =

  Columns 1 through 7

         0    0.3146   -0.3146    0.6290   -0.6290    0.9425   -0.9425

  Columns 8 through 14

    1.2559   -1.2559    1.5726   -1.5726    1.8879   -1.8879    2.2027

  Columns 15 through 20

   -2.2027    2.5136   -2.5136    3.1416    2.8240   -2.8240


freqs1 =

  Columns 1 through 7

   50.0639  100.1139  149.9964  199.8891  250.2858  300.4738  350.5739

  Columns 8 through 10

  400.0586  500.0000  449.4611

Мы видим, что эта модель берет гармоники очень хорошо. Эта модель предскажет 100 шагов вперед можно следующим образом:

compare(i4r,t20,100,compareOptions('Samples',201:500));

У нас теперь есть 93%-я подгонка с t20, в противоположность 80% для t8f.

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

Дополнительная информация

Для получения дополнительной информации об идентификации динамических систем с System Identification Toolbox посещают страницу информации о продукте System Identification Toolbox.

Для просмотра документации необходимо авторизоваться на сайте