exponenta event banner

isnlarx

Обнаружение нелинейности в оценочных данных

Описание

пример

isnlarx(data,orders) обнаруживает нелинейность в data путем тестирования нелинейной модели ARX с указанным orders дает лучшую оценку data чем линейная модель ARX. Нелинейная модель использует значение по умолчанию treepartition устройство оценки нелинейности.

Результат теста распечатывается в окне команд и указывает, обнаружена ли нелинейность. Используйте коэффициент обнаружения с печатью для оценки надежности теста обнаружения нелинейности:

  • Большие значения (>2) указывают на то, что была обнаружена значительная нелинейность.

  • Меньшие значения (<0.5) указывают, что любая ошибка, необъяснимая линейной моделью, в основном является шумом. То есть не было обнаружено значительной нелинейности.

  • Значения, близкие к 1 указывают, что тест обнаружения нелинейности не является надежным и что может присутствовать слабая нелинейность.

пример

isnlarx(data,orders,Ky) ограничивает тест нелинейности выходным каналом Ky для данных с несколькими выходами.

пример

isnlarx(___,Name,Value) задание дополнительных нелинейных опций модели ARX с использованием одной или нескольких Name,Value аргументы пары.

пример

NLHyp = isnlarx(___) возвращает результат теста нелинейности и подавляет вывод окна команд.

пример

[NLHyp,NLValue,NLRegs,NoiseSigma,DetectRatio] = isnlarx(___) дополнительно возвращает значения теста, лежащие в основе анализа.

Примеры

свернуть все

Загрузите набор данных передачи сигнала.

load(fullfile(matlabroot,'toolbox','ident','iddemos','data','frictiondata'))

Построение iddata объект из оценочных данных.

z = iddata(f1,v,1);

Укажите заказы модели и задержки.

orders = [1 1 0];

Запустите тест для обнаружения нелинейности.

isnlarx(z,orders);
 
Nonlinearity is detected in data set z.
Detection ratio: 525.05
Estimated discrepancy of the linear model found: 0.0064966
Estimated noise standard deviation: 0.00080938

Большой коэффициент обнаружения указывает на то, что тест был устойчивым и была обнаружена значительная нелинейность. Кроме того, оценочное расхождение найденной линейной модели, то есть данные, объясняемые нелинейностью, значительно больше шумовой ошибки, которая может указывать на значительную нелинейность.

Загрузите набор данных CSTR.

load(fullfile(matlabroot,'toolbox','ident','iddemos','data','cstrdata'))

Построение iddata объект из оценочных данных с использованием времени выборки 0,1 секунды.

z = iddata(y1,u1,0.1);

Укажите заказы модели и задержки.

orders = [3*ones(2,2),ones(2,3),2*ones(2,3)];

Выполните тест для обнаружения нелинейности на втором выходном канале.

isnlarx(z,orders,2);
 
ISNLARX results for dataset z
 
Nonlinearity is not detected in channel (2).
However, the test may be on the edge of detecting the nonlinearity.
Detection ratio: 0.36446
Searching for best nonlinear regressors may provide more reliable results.
-

Коэффициент обнаружения меньше 1 указывает на отсутствие нелинейности. Однако, поскольку это значение близко к 0,5, может быть слабая нелинейность, которая не была обнаружена тестом.

Загрузите набор данных передачи сигнала.

load(fullfile(matlabroot,'toolbox','ident','iddemos','data','signaltransmissiondata'))

Построение iddata объект из оценочных данных с использованием времени выборки 0,1 секунды.

z = iddata(vout,vin,0.1);

Укажите заказы модели и задержки.

orders = [3 0 2];

Отображение регрессоров модели для idnlarx модель с заданными заказами.

getreg(idnlarx(orders));

Обнаруживайте нелинейности в данных и ищите лучшую комбинацию нелинейных регрессоров.

isnlarx(z,orders,'NonlinearRegressors','search');
 
Nonlinearity is detected in data set z.
Detection ratio: 1.4691
Estimated discrepancy of the linear model found: 0.74371
Estimated noise standard deviation: 0.74935
Corresponding NonlinearRegressors parameter: [1]

Поиск регрессора обнаружил, что использование первых двух регрессоров дает наилучшую нелинейную оценку данных.

Коэффициент обнаружения больше, чем 1 но менее 2 означает, что была обнаружена нелинейность, но тест не был надежным. Этот результат может указывать на то, что обнаруженная нелинейность не является значимой. Кроме того, данные, объясняемые нелинейностью, меньше шумовой ошибки, которая может быть показателем слабой нелинейности.

Загрузите оценочные данные.

load(fullfile(matlabroot,'toolbox','ident','iddemos','data','cstrdata'))

Построение iddata объект с использованием оценочных данных.

z = iddata(y1,u1,0.1);

Укажите заказы модели и задержки.

orders = [3*ones(2,2),ones(2,3),2*ones(2,3)];

Обнаруживайте нелинейности в данных и определяйте контрольные величины, лежащие в основе оценки.

NLHyp = isnlarx(z,orders);

Загрузите оценочные данные.

load(fullfile(matlabroot,'toolbox','ident','iddemos','data','narendralidata'))

Построение iddata объект с использованием оценочных данных.

z = iddata(u,y1,1);

Укажите заказы модели и задержки.

orders = [1 1 2];

Обнаруживайте нелинейности в данных и определяйте контрольные величины, лежащие в основе оценки.

[NLHyp,NLValue,NLRegs,NoiseSigma,DetectRatio] = isnlarx(z,orders);

Входные аргументы

свернуть все

Данные оценки временной области, указанные как iddata объект или числовая матрица.

  • Если data является iddata объект, затем data может иметь один или более выходных каналов и нуль или более входных каналов.

  • Если data является числовой матрицей, то количество столбцов данных должно совпадать с суммой количества входов (nu) и количества выходов (ny.

data должны быть равномерно отобраны и не могут содержать отсутствующие (NaN) образцы.

Матрица заказа модели ARX [na nb nk]. na обозначает количество задержанных выходов, nb обозначает количество отложенных входов, и nk обозначает минимальную задержку на входе. Минимальная задержка на выходе фиксирована на 1. Дополнительные сведения о построении orders матрица, см. arx.

При указании orders, программное обеспечение преобразует информацию о порядке в форму линейного регрессора в idnlarx Regressors собственность. Пример см. в разделе Создание нелинейной модели ARX с использованием заказов модели ARX

Номер выходного канала в оценочных данных, заданный как положительное целое число в диапазоне [1, ny], где ny - количество выходных каналов.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'NonlinearRegressors','output' указывает, что в качестве входных данных нелинейного блока модели используются только регрессоры, содержащие выходные переменные.

Имя независимой переменной, указанное как разделенная запятыми пара, состоящая из 'TimeVariable' и вектор символов. Например, 't'.

Регрессоры, построенные из комбинаций входов и выходов, определяемых как разделенная запятыми пара, состоящая из 'CustomRegressors' и одну из следующих для систем с одним выходом:

  • Массив ячеек символьных векторов. Например:

    • {'y1(t-3)^3','y2(t-1)*u1(t-3)','sin(u3(t-2))'}

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

  • Массив пользовательских объектов-регрессоров, созданных с помощью customreg или polyreg.

Для модели с ny выходами укажите массив ячеек ny-by-1 из customreg массивы объектов или символьные массивы.

Эти регрессоры являются дополнением к стандартным регрессорам, основанным на Orders.

Пример: 'CustomRegressors',{'y1(t-3)^3','y2(t-1)*u1(t-3)'}

Пример: 'CustomRegressors',{'sin(u3(t-2))'}

Подмножество регрессоров, вводимых в качестве входных данных в нелинейный блок модели, указанное как пара, разделенная запятыми, состоящая из 'NonlinearRegressors' и одно из следующих значений:

  • 'all' - Все регрессоры

  • 'output' - Регрессоры, содержащие выходные переменные

  • 'input' - Регрессоры, содержащие входные переменные

  • 'standard' - Стандартные регрессоры

  • 'custom' - Пользовательские регрессоры

  • 'search' - Алгоритм оценки выполняет поиск лучшего поднабора регрессоров. Это полезно, когда требуется уменьшить большое количество регрессоров, входящих в блок нелинейных функций оценщика нелинейности. Эта опция должна применяться ко всем выходным моделям одновременно.

  • [] - Никаких регрессоров. При этом создается линейная регрессорная модель.

  • Вектор индексов-регрессоров. Для определения количества и порядка регрессоров используйте getreg.

Для модели с несколькими выходами укажите массив ячеек из ny элементов, где ny - количество выходных каналов. Для каждого вывода укажите одну из предыдущих опций. Либо для применения одного и того же подмножества регрессоров ко всем выходам модели укажите [] или любой из параметров вектора символов, например, 'standard'.

Пример: 'NonlinearRegressors','search' выполняет лучший регрессорный поиск для единственного выхода модели с одним выходом или всех выходов модели с несколькими выходами.

Пример: 'NonlinearReg','input' применяет только входные регрессоры к входам нелинейной функции.

Пример: 'NonlinearRegressors',{'input','output'} применяет входные регрессоры к первому выходу, а выходные регрессоры ко второму выходу модели с двумя выходами.

Выходные аргументы

свернуть все

Результат теста нелинейности, возвращаемый как логический вектор с длиной, равной количеству выходных каналов. Элементы NLHyp являются 1 если обнаружены нелинейности для соответствующего выходного сигнала. Значение 0 указывает, что нелинейности не обнаружены.

Оцененное стандартное отклонение данных, объясняемое нелинейностью, возвращаемое как вектор неотрицательных скаляров с длиной, равной числу выходных каналов. Элементы NLValue являются 0 если нелинейности не обнаружены для соответствующего выхода.

Регрессоры, которые должны нелинейно вводиться в модель, возвращаются в виде вектора индексов для отдельных выходных моделей. Для моделей с несколькими выходами NLRegs возвращается в виде массива ячеек с элементами, соответствующими каждому выходному каналу. NLRegs пуст, [], если нелинейности не обнаружены.

См. раздел 'NonlinearRegressors' Name,Value для получения дополнительной информации.

Оцененное стандартное отклонение необъяснимой ошибки, возвращаемое как вектор неотрицательных скаляров с длиной, равной числу выходных каналов. Элементы NoiseSigma являются 0 если нелинейности не обнаружены для соответствующего выхода.

Отношение тестовой статистики и порога обнаружения, возвращаемое в виде вектора с длиной, равной количеству выходных каналов. Использовать элементы DetectRatio для оценки надежности теста обнаружения нелинейности для соответствующего выходного сигнала:

  • Большие значения (>2) указывают на то, что была обнаружена значительная нелинейность.

  • Меньшие значения (<0.5) указывают, что любая ошибка, необъяснимая линейной моделью, в основном является шумом. То есть не было обнаружено значительной нелинейности.

  • Значения, близкие к 1 указывают, что тест обнаружения нелинейности не является надежным и что может присутствовать слабая нелинейность.

Алгоритмы

isnlarx оценивает нелинейную модель ARX с использованием данных и treepartition устройство оценки нелинейности.

Оценочные данные могут быть описаны как Y (t) = L (t) + Fn (t) + E (t), где:

  • L (t) - часть данных, объясняемая линейной функцией нелинейной модели ARX.

  • Fn (t) - часть данных, объясняемая нелинейной функцией нелинейной модели ARX. Выходной аргументNLValue - оценка стандартного отклонения Fn (t). Если нелинейная функция объясняет значительную часть данных за пределами данных, объясняемых линейной функцией, обнаруживается нелинейность.

  • E (t) - остающаяся ошибка, которая необъяснима нелинейной моделью ARX и обычно является белым шумом. Выходной аргументNoiseSigma - оценка стандартного отклонения E (t).

Представлен в R2007a