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

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

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

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

Объект dsp.TransferFunctionEstimator и блок Discrete Transfer Function Estimator используют усредненный метод периодограммы валлийцев, чтобы вычислить 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, объект вычисляет выходную когерентность. В блоке Discrete Transfer Function Estimator, чтобы вычислить спектр когерентности, устанавливают флажок Output magnitude squared coherence estimate.

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

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

Инициализируйте систему

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

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 к Фс/1024. В этом примере это значение является 44100/1024, или 43.0664. Для двухстороннего спектра свойство XOffset объекта dsp.ArrayPlot должно быть [-Fs/2]. Частота отличается по области значений [-Fs/2 Фс/2]. В этом примере график массивов показывает односторонний спектр. Следовательно, установите XOffset на 0. Частота отличается по области значений [0 Фс/2].

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

Средство оценки передаточной функции принимает два сигнала: введите к фильтру 2D этапа и выводу фильтра 2D этапа. Вход к фильтру является синусоидой, содержащей аддитивный белый Гауссов шум. Шум имеет среднее значение нуля и стандартное отклонение 0,1. Средство оценки оценивает передаточную функцию фильтра 2D этапа. Вывод средства оценки является частотной характеристикой фильтра, который является комплексным. Чтобы извлечь фрагмент значения этой комплексной оценки, используйте функцию 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. AllpoleFilter. Все объекты фильтра используются в их состоянии по умолчанию. Используя коэффициенты фильтра, выведите системную передаточную функцию и постройте частотную характеристику с помощью freqz. Ниже коэффициенты в [Цифре] [Логово] формат:

  • Весь фильтр полюса - [1 0] [1 0.1]

  • Весь фильтр передачи - [0.5 - 1/sqrt (2) 1] [1 - 1/sqrt (2) 0.5]

  • Фильтр Lowpass - Определяет коэффициенты с помощью следующих команд:

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

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

Ответ значения, что fvtool показывает соответствиям ответ значения, что объект dsp.TransferFunctionEstimator оценивает.

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

Не поддерживаемый в MATLAB Online.

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

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

Откройте и осмотрите модель

Чтобы открыть модель, введите ex_transfer_function_estimator в подсказку команды MATLAB.

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

БлокИзменения параметраЦель блока
Синусоида
  • Sample time к 1/44100

  • Samples per frame к 1024

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

Случайный источник
  • Source type к Gaussian

  • Variance к 0,01

  • Sample time к 1/44100

  • Samples per frame к 1 024

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

  • Denominator к [1 -1/sqrt(2) 0.5]

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

  • Number of spectral averages к 8

Средство оценки передаточной функции
AbsНикакое изменениеИзвлекает информацию о значении от вывода средства оценки передаточной функции
Первый блок Array Plot

Нажмите View:

  • Выберите Style и установите Plot type на Line.

  • Выберите Configuration Properties: От вкладки Main, набор Sample increment к 44100/1024 и X-offset к 0. Во вкладке Display задайте Title как Magnitude Response of the System in dB, X-label как Frequency (Hz) и Y-label как Amplitude (dB)

Показывает ответ значения системы
Второй блок Array Plot

Нажмите View:

  • Выберите Style и установите Plot type на Line.

  • Выберите Configuration Properties: От вкладки Main, набор Sample increment к 44100/1024 и X-offset к 0. Во вкладке Display задайте Title как Coherence Estimate, X-label как Frequency (Hz) и Y-label как Amplitude

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

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

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

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

Похожие темы