exponenta event banner

Оценка передаточной функции неизвестной системы

Можно оценить передаточную функцию неизвестной системы на основе измеренных входных и выходных данных системы.

В DSP System Toolbox™ можно оценить передаточную функцию системы с помощью dsp.TransferFunctionEstimator object™ системы в MATLAB ® и блок оценки дискретной передаточной функции в Simulink ®. Соотношение между входом x и выходом y моделируется линейной инвариантной по времени передаточной функцией Txy. Передаточная функция представляет собой отношение спектральной плотности поперечной мощности x и y, Pyx, к спектральной плотности мощности x, Pxx :

Txy (f) = Pyx (f) Pxx (f)

dsp.TransferFunctionEstimator объект и блок оценки дискретной передаточной функции используют метод усредненной периодограммы Уэлча для вычисления Pxx и Pxy. Дополнительные сведения об этом методе см. в разделе Спектральный анализ.

Последовательность

Когерентность, или квадрат величины, между x и y определяется как:

Cxy (f) = | Pxy | 2Pxx * Pyy

Функция когерентности оценивает степень, в которой можно предсказать y от x. Значение когерентности находится в диапазоне 0 ≤ Cxy (f) ≤ 1. Если Cxy = 0, входные значения x и выходные значения y не связаны между собой. Значение Cxy больше 0 и меньше 1 указывает на одно из следующих значений :

  • Измерения шумят.

  • Система нелинейна.

  • Выход y является функцией x и других входов.

Когерентность линейной системы представляет собой дробную часть выходной мощности сигнала, которая вырабатывается входом на этой частоте. Для конкретной частоты 1 - Cxy - оценка дробной мощности выходного сигнала, в которую входной сигнал не вносит вклад.

При установке OutputCoherence имущество dsp.TransferFunctionEstimator кому true, объект вычисляет выходную когерентность. В блоке «Оценка дискретной передаточной функции» для вычисления спектра когерентности установите флажок «Оценка квадратичной когерентности выходной величины».

Оценка передаточной функции в MATLAB

Для оценки передаточной функции системы в MATLAB™ используйте dsp.TransferFunctionEstimator object™ системы. Объект реализует метод средней модифицированной периодограммы Уэлча и использует измеренные входные и выходные данные для оценки.

Инициализация системы

Система представляет собой каскад из двух ступеней фильтра: dsp. LowpassFilter и параллельное соединение dsp. AllpassFilter и dsp. AllpureFilter.

allpole = dsp.AllpoleFilter;
allpass = dsp.AllpassFilter;
lpfilter = dsp.LowpassFilter;

Указать источник сигнала

Вход в систему представляет собой синусоидальную волну с частотой 100 Гц. Частота дискретизации составляет 44,1 кГц.

sine = dsp.SineWave('Frequency',100,'SampleRate',44100,...
    'SamplesPerFrame',1024);

Создание оценщика передаточной функции

Для оценки передаточной функции системы создайте dsp.TransferFunctionEstimator Системный объект.

tfe  = dsp.TransferFunctionEstimator('FrequencyRange','onesided',...
    'OutputCoherence', true);

Создать печать массива

Инициализация двух dsp.ArrayPlot объекты: один для отображения амплитудной характеристики системы, а другой для отображения оценки когерентности между входом и выходом.

tfeplotter = dsp.ArrayPlot('PlotType','Line',...
    'XLabel','Frequency (Hz)',...
    'YLabel','Magnitude Response (dB)',...
    'YLimits',[-120 20],...
    'XOffset',0,...
    'XLabel','Frequency (Hz)',...
    'Title','System Transfer Function',...
    'SampleIncrement',44100/1024);
coherenceplotter = dsp.ArrayPlot('PlotType','Line',...
    'YLimits',[0 1.2],...
    'YLabel','Coherence',...
    'XOffset',0,...
    'XLabel','Frequency (Hz)',...
    'Title','Coherence Estimate',...
    'SampleIncrement',44100/1024);

По умолчанию ось X графика массива находится в образцах. Для преобразования этой оси в частоту установите свойство SampleIncrement для dsp.ArrayPlot объект для Fs/1024. В этом примере это значение равно 44100/1024 или 43.0664. Для двустороннего спектра XOffset имущества dsp.ArrayPlot объект должен иметь значение [-Fs/2]. Частота варьируется в диапазоне [-Fs/2 Fs/2]. В этом примере график массива показывает односторонний спектр. Следовательно, установите XOffset в 0. Частота изменяется в диапазоне [0 Fs/2].

Оценка передаточной функции

Блок оценки передаточной функции принимает два сигнала: вход в двухкаскадный фильтр и выход двухкаскадного фильтра. Вход в фильтр представляет собой синусоидальную волну, содержащую аддитивный белый гауссов шум. Шум имеет среднее значение, равное нулю, и стандартное отклонение, равное 0,1. Оценщик оценивает передаточную функцию двухступенчатого фильтра. Выходом оценщика является частотная характеристика фильтра, которая является сложной. Чтобы извлечь часть величины этой комплексной оценки, используйте функцию abs. Чтобы преобразовать результат в дБ, примените коэффициент преобразования 20 * log10 (величина).

for Iter = 1:1000
    input = sine() + .1*randn(1024,1);
    lpfout = lpfilter(input);
    allpoleout = allpole(lpfout);
    allpassout = allpass(lpfout);
    output = allpoleout + allpassout;
    [tfeoutput,outputcoh] = tfe(input,output);
    tfeplotter(20*log10(abs(tfeoutput)));
    coherenceplotter(outputcoh);
end

Первый график показывает амплитудную характеристику системы. Второй график показывает оценку когерентности между входом и выходом системы. Когерентность на графике варьируется в диапазоне [0 1], как и ожидалось.

Отклик на величину фильтра с помощью fvtool

Фильтр представляет собой каскад из двух ступеней фильтра - dsp. LowpassFilter и параллельное соединение dsp. AllpassFilter и dsp. AllpureFilter. Все объекты фильтра используются в состоянии по умолчанию. Используя коэффициенты фильтра, выведите системную передаточную функцию и постройте график частотной характеристики с использованием freqz. Ниже приведены коэффициенты в формате [Num] [Den]:

  • Фильтр всех полюсов - [1 0] [1 0,1]

  • Фильтр всех проходов - [0,5 -1/sqrt (2) 1] [1 -1/sqrt (2) 0,5]

  • Фильтр нижних частот - определение коэффициентов с помощью следующих команд:

lpf = dsp.LowpassFilter;
Coefficients = coeffs(lpf);

Coefficients.Numerator дает коэффициенты в формате массива. Математическая деривация общей функции переноса системы здесь не показана. Как только вы выведете передаточную функцию, запустите fvtool и вы увидите частотную характеристику ниже:

Отклик величины, который показывает fvtool, соответствует отклику величины, dsp.TransferFunctionEstimator оценки объектов.

Оценка передаточной функции в Simulink

Чтобы оценить передаточную функцию системы в Simulink, используйте блок оценки дискретной передаточной функции. Блок реализует метод средней модифицированной периодограммы Уэлча и использует измеренные входные и выходные данные для оценки.

Система представляет собой каскад из двух ступеней фильтра: фильтра нижних частот и параллельного соединения фильтра allpole и фильтра allpass. Вход в систему представляет собой синусоидальную волну, содержащую аддитивный белый гауссов шум. Шум имеет среднее значение, равное нулю, и стандартное отклонение, равное 0,1. Входным сигналом для оценщика является системный вход и системный выход. Выходом оценщика является частотная характеристика системы, которая является сложной. Чтобы извлечь часть величины этой комплексной оценки, используйте блок Abs. Для преобразования результата в дБ используется блок дБ (1 Ом).

Открытие и проверка модели

Для открытия модели введите ex_transfer_function_estimator в командной строке MATLAB.

Вот настройки блоков в модели.

БлокИзменения параметровНазначение блока
Синусоидальная волна
  • Время выборки для 1/44100

  • Выборки на кадр в 1024

Синусоидальный сигнал с частотой 100 Гц

Случайный источник
  • Тип источника для Gaussian

  • Отклонение от 0,01

  • Время выборки до 1/44100

  • Выборки на кадр до 1024

Блок случайного источника генерирует сигнал случайного шума со свойствами, заданными в диалоговом окне блока
Фильтр нижних частотБез измененийФильтр нижних частот
Фильтр AllpoleБез измененийФильтр Allpole с коэффициентами [1 0.1]
Дискретный фильтр
  • Числитель в [0.5 -1/sqrt(2) 1]

  • Знаменатель к [1 -1/sqrt(2) 0.5]

Фильтр Allpass с коэффициентами [-1/sqrt(2) 0.5]
Оценщик дискретной передаточной функции
  • Диапазон частот до One-sided

  • Число спектральных средних значений до 8

Оценщик передаточной функции
Брюшной прессБез измененийИзвлекает информацию о величине из выходного сигнала блока оценки передаточной функции
Первый блок печати массива

Щелкните Вид (View):

  • Выберите «Стиль» и задайте для параметра «Тип печати» значение Line.

  • Выберите «Свойства конфигурации»: на вкладке «Главная» установите для параметра «Приращение образца» значение 44100/1024 и смещение по оси X до 0. На вкладке «Отображение» укажите заголовок как Magnitude Response of the System in dB, X-метка как Frequency (Hz)и Y-метку как Amplitude (dB)

Показывает амплитудную характеристику системы
Блок печати второго массива

Щелкните Вид (View):

  • Выберите «Стиль» и задайте для параметра «Тип печати» значение Line.

  • Выберите «Свойства конфигурации»: на вкладке «Главная» установите для параметра «Приращение образца» значение 44100/1024 и смещение по оси X до 0. На вкладке «Отображение» укажите заголовок как Coherence Estimate, X-метка как Frequency (Hz)и Y-метку как Amplitude

Показывает оценку когерентности

По умолчанию ось X графика массива находится в образцах. Для преобразования этой оси в частоту параметру Sample increment присваивается значение Fs/1024. В этом примере это значение равно 44100/1024, или 43.0664. Для двустороннего спектра параметр смещения X должен быть –Fs/2. Частота варьируется в диапазоне [-Fs/2 Fs/2]. В этом примере график массива показывает односторонний спектр. Следовательно, смещение по оси X устанавливается равным 0. Частота варьируется в диапазоне [0 Fs/2].

Запустить модель

Первый график показывает амплитудную характеристику системы. Второй график показывает оценку когерентности между входом и выходом системы. Согласованность в графике варьируется в диапазоне [0 1] как и ожидалось.

Связанные темы