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 (<reservedrangesplaceholder6>) = L (<reservedrangesplaceholder4>) + Fn (<reservedrangesplaceholder2>) + E (<reservedrangesplaceholder0>), где:

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

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

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

Введенный в R2007a