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 имя аргумента и 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 isempty, если нелинейность не обнаруживается.

Смотрите '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