isnlarx

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

Синтаксис

isnlarx(Data,Orders)
isnlarx(Data,Orders,Ky)
isnlarx(___,Name,Value)
NLHyp = isnlarx(___)
[NLHyp,NLValue,NLRegs,NoiseSigma,DetectRatio] = 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));
Regressors:
    y1(t-1)
    y1(t-2)
    y1(t-3)

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

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           2           3]

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

Отношение обнаружения, больше, чем 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 может иметь один или несколько выходных каналов и нуля или более входных каналов. Данные должны быть однородно выбраны и не могут содержать недостающий (NaN) выборки.

Порядки модели и задержки определения настройки регрессора, заданной как 1 3 вектор, [na nb nk].

Для модели с ny каналы вывода и каналы входа nu:

  • na является ny-by-ny матрица, где na(i,j) указывает, что количество регрессоров от j th вывод раньше предсказывало i th вывод.

  • nb является ny-by-nu матрица, где nb(i,j) указывает, что количество регрессоров от j th вход раньше предсказывало i th вывод.

  • nk является ny-by-nu матрица, где nk(i,j) указывает, что задержка в j th вход раньше предсказывала i th вывод.

na = [1 2; 2 3]
nb = [1 2 3; 2 3 1];
nk = [2 0 3; 1 0 5];

Данные об оценке для этой системы имеют три входных параметров (u1, u2, u3) и два выходных параметров (y1, y2). Полагайте, что регрессоры раньше предсказывали вывод, y2(t):

  • Поскольку na(2,:) является [2 3], способствующие регрессоры от выходных параметров:

    • y1(t-1) и y1(t-2)

    • y2(t-1), y2(t-2) и y2(t-3)

  • Поскольку nb(2,:) является [2 3 1], и nk(2,:) является [1 0 5], способствующие регрессоры от входных параметров:

    • u1(t-1) и u1(t-2)

    • u2(t), u2(t-1) и u2(t-2)

    • u3(t-5)

Примечание

Минимальной задержкой для регрессоров на основе выходных переменных является всегда 1, в то время как минимальную задержку для регрессоров на основе входных переменных диктует nk. Используйте getreg, чтобы просмотреть полный набор регрессоров, используемых нелинейной моделью ARX.

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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' и одно из следующих значений:

  • все Все регрессоры

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

  • входной параметр Регрессоры, содержащие входные переменные

  • '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