wavenet

Функция вейвлет для нелинейных моделей ARX и Гаммерштейна-Винера

Описание

A wavenet объект реализует функцию вейвлет и является нелинейной функцией отображения для оценки нелинейных моделей ARX и нелинейных Гаммерштейна-Вайнера. Функция отображения, которая также упоминается как nonlinearity, использует комбинацию линейных весов, смещения и нелинейной функции, чтобы вычислить ее выход. Нелинейная функция содержит вейвлет модуля функции, которые работают на радиальной комбинации входов.

Математически wavenet сеть является функцией, которая отображает m входы X (t) = [x (t 1), x 2 (t),..., xm (t)]T к скаляру выходному y (t) с помощью следующей зависимости:

y(t)=y0+(Χ(t)X¯)TPL+W(Χ(t))+S(Χ(t))

Здесь:

  • X (t) является вектором m -by-1 входов или regressors со среднимΧ¯.

  • y0 - выход смещение, скаляр.

  • P - m -by - p проекционная матрица, где m - количество регрессоров и p - количество линейных весов. m должно быть больше или равно p.

  • L является вектором весов p -by-1.

  • W (X) и S (X) вместе составляют нелинейную функцию вейвлет. W (X) является суммой расширенных и переведенных вейвлеты, в то время как S (X) является суммой расширенных и переведенных масштабирующих функций (также известных как scalelets). Общее количество вейвлета функций dw и масштабирования ds упоминается как number of units сети.

Для определений термина W (X) вейвлет и термина S (X) масштабирующей функции смотрите Подробнее о.

Использование wavenet как значение OutputFcn свойство idnlarx модель или InputNonlinearity и OutputLinearity свойства idnlhw объект. Для примера задайте wavenet когда вы оцениваете idnlarx модель с помощью следующей команды.

sys = nlarx(data,regressors,wavenet)
Когда nlarx оценивает модель, она по существу оценивает параметры wavenet функция.

Можно сконфигурировать wavenet функция для отключения компонентов и фиксации параметров. Чтобы опустить линейный компонент, установите LinearFcn.Use на false. Чтобы опустить смещение, установите Offset.Use на false. Чтобы задать известные значения для линейной функции и смещения, установите их Value атрибуты непосредственно и установите соответствующие Free атрибуты False. Использовать evaluate вычислить выход функции для заданного вектора входов.

Создание

Описание

пример

W = wavenet создает wavenet W объекта, для которого функция автоматически вычисляет количество модулей во время оценки модели.

пример

W = wavenet(numUnits) определяет количество модулей numUnits. Этот синтаксис включает опцию, которая позволяет вам в интерактивном режиме оценить связь между количеством модулей и необъяснимым отклонением.

пример

W = wavenet(numUnits,UseLinearFcn) определяет, использует ли функция линейную функцию в качестве подкомпонента.

пример

W = wavenet(numUnits,UseLinearFcn,UseOffset) определяет, использует ли функция термин смещения.

Входные параметры

расширить все

Количество модулей, заданное как строковый или символьный вектор, который представляет 'auto' или 'interactive', или как положительное целое число. numUnits определяет количество вейвлетов или масштабирующих функций, или, если оба элемента присутствуют, объединенное количество вейвлетов и масштабирующих функций. Обычно вейвлет-сеть содержит либо вейвлеты, либо функции масштабирования, но не обе. Задайте numUnits как одно из следующих значений:

  • 'auto' - Программное обеспечение автоматически определяет количество модулей во время оценки модели.

  • 'interactive' - Во время оценки модели программное обеспечение отображает интерактивный штриховой график, который связывает необъяснимое отклонение с количеством модулей. Щелкните на панели, чтобы просмотреть достижимую подгонку к данным оценки для выбранного количества модулей. Синяя полоса указывает оптимальный выбор, основанный на обобщенном критерии перекрестной валидации (GCV). Общее правило выбора количества модулей состоит в том, чтобы использовать наименьшее количество модулей, которые захватывают большую часть отклонения.

  • Положительное целое число - программа использует заданное значение непосредственно.

Этот аргумент устанавливает W.NonlinearFcn.NumberOfUnits свойство.

Опция для использования подкомпонента линейной функции, заданная как true или false. Этот аргумент устанавливает значение W.LinearFcn.Use свойство.

Опция для использования термина смещения, заданная как true или false. Этот аргумент устанавливает значение W.Offset.Use свойство.

Свойства

расширить все

Информация входного сигнала для сигналов, используемых для оценки, задается как векторы m значений свойств, где m - количество входных сигналов. The Input свойства для каждого входного сигнала следующие:

  • Name - Имена входных сигналов, заданные как 1-байт- m строковый или символьный массив, где m количество входов

  • Mean - Среднее значение входных сигналов, заданное в виде числа

  • Range - Области значений входных сигналов, заданные как 2-байт- m числовой массив, который содержит минимальное и максимальное значения

Выход сигнале, заданная как значения конкретных свойств. The Output свойства следующие:

  • Name - Имя выходного сигнала, заданное как строка или символьный массив

  • Mean - Среднее значение выходного сигнала, заданное в виде числа

  • Range - Область значений выходного сигнала, заданный как числовой массив 2 на 1, который содержит минимальное и максимальное значения

Параметры линейной функции, заданные следующим образом:

  • Use - Опция использования линейной функции в вейвлет, заданная как скалярная логика. Значение по умолчанию true. Пример установки этой опции см. в разделе Исключение линейного термина из объекта сопоставления сетей вейвлет.

  • Value - Линейные веса, которые составляют L ', заданные как вектор с 1 байт p.

  • InputProjection - Входная проекционная матрица P, заданная как m -by - p матрица, которая преобразует входной вектор длины m в вектор длины p. Для моделей Гаммерштейна-Винера, InputProjection равно 1.

  • Free - Опция обновления записей Value во время оценки, заданной как 1-байт- p логический вектор. Программа чтит Free спецификация только, если начальное значение Value является конечным. Значение по умолчанию true.

  • Minimum - Минимальная граница Value, заданный как вектор 1 - p. Если Minimum задается с конечным значением и начальным значением Value является конечным, тогда программное обеспечение применяет эту минимальную границу во время оценки модели.

  • Maximum - Максимальная граница на Value, заданный как вектор 1 - p. Если Maximum задается с конечным значением и начальным значением Value является конечным, тогда программное обеспечение применяет эту максимальную границу во время оценки модели.

  • SelectedInputIndex - Индексы wavenet входы (см. Input.Name), которые используются в качестве входов в линейную функцию, заданную как 1-байт- nr целочисленный вектор, где nr - количество входов. Для нелинейных моделей ARX RegressorUsage свойство определяет эти индексы. Для моделей Гаммерштейна-Винера, SelectedInputIndex всегда 1.

Параметры срока смещения, заданные следующим образом:

  • Use - Опция для использования смещения в вейвлет-сети, заданная как скалярная логика. Значение по умолчанию true.

  • Value - Значение смещения, заданное как скаляр.

  • Free - Опция обновления Value во время оценки, заданной как скаляр логический. Программа чтит Free спецификация false только если значение Value является конечным. Значение по умолчанию true.

  • Minimum - Минимальная граница Value, заданный как числовой скаляр или –Inf. Если Minimum задается с конечным значением и значением Value является конечным, тогда программное обеспечение применяет эту минимальную границу во время оценки модели. Значение по умолчанию -Inf.

  • Maximum - Максимальная граница на Value, заданный как числовой скаляр или Inf. Если Maximum задается с конечным значением и начальным значением Value является конечным, тогда программное обеспечение применяет эту максимальную границу во время оценки модели. Значение по умолчанию Inf.

Параметры нелинейной функции, заданные следующим образом:

  • NumberOfUnits - Количество модулей виде 'auto', 'interactive', или положительное целое число. NumberOfUnits определяет количество вейвлетов или масштабирующих функций, или, если оба элемента присутствуют, объединенное количество вейвлетов и масштабирующих функций. Обычно вейвлет-сеть содержит либо вейвлеты, либо функции масштабирования, но не обе. Опции для NumberOfUnits являются следующими:

    • 'auto' - Программное обеспечение автоматически определяет количество модулей во время оценки модели.

    • 'interactive' - Во время оценки модели программное обеспечение отображает интерактивный штриховой график, который связывает необъяснимое отклонение с количеством модулей. Щелкните на панели, чтобы просмотреть достижимую подгонку к данным оценки для выбранного количества модулей. Синяя полоса указывает оптимальный выбор, основанный на обобщенном критерии перекрестной валидации (GCV). Общее правило выбора количества модулей состоит в том, чтобы использовать наименьшее количество модулей, которые захватывают большую часть отклонения.

    • Положительное целое число - программа использует заданное значение непосредственно.

  • Structure - Расширенные опции, которые управляют структурой вейвлет и функции масштабирования, заданные как в следующей таблице.

    СвойствоОписаниеДефолт
    FinestCellМинимальное количество точек данных в наименьшей камере, заданное как 'auto' или положительное целое число. А камера - это область, покрытая частью вейвлета, которая значительно ненулевая. Настройка по умолчанию 'auto' указывает, что программное обеспечение определяет это значение во время оценки.'auto'
    MinimumCellsМинимальное количество камер в разбиении, заданное как положительное целое число.16
    MaximumCellsМаксимальное количество камер в разбиении, заданное как положительное целое число.16
    MaximumLevelsМаксимальное количество уровней вейвлета, заданное как положительное целое число. 10
    DilationStepРазмер шага расширения, заданный как положительное целое число.2
    TranslationStepРазмер шага преобразования, заданный как положительное целое число.1

  • Parameters - Параметры wavenet, указанный как в следующей таблице.

    Имя поляОписаниеДефолт
    InputProjection

    Матрица Q проекции, заданная как матрица m -by q. Q преобразует детрендированный входной вектор(XX¯) длины m в вектор длины q. Обычно Q имеет те же размерности, что и линейная проекционная матрица P. В этом случае q равно p, которое является количеством линейных весов.

    Для моделей Гаммерштейна-Винера, InputProjection равно 1.

    []
    ScalingCoefficient

    Коэффициенты масштабирующей функции si, заданные как вектор ds -by-1.

    []
    ScalingTranslation

    Масштабирование матрицы преобразования, заданное как ds -by - q матрица масштабирования векторов-строк преобразования ei.

    []
    ScalingDilation

    Коэффициенты расширения масштабируемой функции di, заданные как вектор ds -by-1.

    []
    WaveletCoefficient

    Вейвлеты Вейвлет-функции wi, заданные как вектор dw -by-1.

    []
    WaveletTranslation

    Вейвлет вейвлет-преобразования, ei, заданная как dw -by - q матрица векторов-строк вейвлет ci.

    []
    WaveletDilation

    Вейвлеты вейвлет-расширения bi, заданные как вектор dw -by-1.

    []

  • Free - Опция для оценки параметров, заданная как логический скаляр. Если все параметры имеют конечные значения, например, когда wavenet объект соответствует ранее оцененной модели, затем настраивая Free на false приводит к тому, что параметры нелинейных функций W (X) и S (X) остаются неизменными во время оценки. Значение по умолчанию true.

  • SelectedInputIndex - Индексы wavenet входы (см. Input.Name), которые используются в качестве входов в нелинейную функцию, заданную как 1-байт- nr целочисленный вектор, где nr - количество входов. Для нелинейных моделей ARX RegressorUsage свойство определяет эти индексы. Для моделей Гаммерштейна-Винера, SelectedInputIndex всегда 1.

Примеры

свернуть все

MO = wavenet;

Просмотрите wavenet объект.

disp(MO)
Wavelet Network

 Nonlinear Function: Wavelet network with number of units chosen automatically.
 Linear Function: uninitialized
 Output Offset: uninitialized

           Input: [1×1 idpack.Channel]
          Output: [1×1 idpack.Channel]
       LinearFcn: [1×1 nlident.internal.UseProjectedLinearFcn]
    NonlinearFcn: [1×1 nlident.internal.WavenetFcn]
          Offset: [1×1 nlident.internal.ChooseableOffset]

Создайте wavenet отображение MO.

MO = wavenet;

Исключить линейный термин из MO.

MO.LinearFcn.Use = false;

Просмотрите wavenet объект.

disp(MO)
Wavelet Network

 Nonlinear Function: Wavelet network with number of units chosen automatically.
 Linear Function: not in use
 Output Offset: uninitialized

           Input: [1×1 idpack.Channel]
          Output: [1×1 idpack.Channel]
       LinearFcn: [1×1 nlident.internal.UseProjectedLinearFcn]
    NonlinearFcn: [1×1 nlident.internal.WavenetFcn]
          Offset: [1×1 nlident.internal.ChooseableOffset]

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

load twotankdata y u;

Создайте iddata объект из данных оценки.

z = iddata(y,u,0.2);

Создайте объект отображения вейвлет с пятью модулями.

MO = wavenet(5);

Оцените нелинейную модель ARX.

sys = nlarx(z,[4 4 1],MO)
sys = 
Nonlinear ARX model with 1 output and 1 input
  Inputs: u1
  Outputs: y1

Regressors:
  Linear regressors in variables y1, u1
  List of all regressors

Output function: Wavelet Network with 5 units

Sample time: 0.2 seconds

Status:                                         
Estimated using NLARX on time domain data "z".  
Fit to estimation data: 96.8% (prediction focus)
FPE: 3.553e-05, MSE: 3.515e-05

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

load motorizedcamera;

Создайте iddata объект.

z = iddata(y,u,0.02,'Name','Motorized Camera','TimeUnit','s');

z является iddata объект с шестью входами и двумя выходами.

Задайте порядки модели и задержки.

Orders = [ones(2,6),ones(2,6),ones(2,6)];

Задайте один и тот же оценщик нелинейности для каждого входного канала.

InputNL = wavenet;

Задайте различные оценки нелинейности для каждого выходного канала.

 OutputNL = [deadzone,wavenet];

Оцените модель Гаммерштейна-Винера.

sys = nlhw(z,Orders,InputNL,OutputNL);

Чтобы увидеть форму предполагаемых входных и выходных нелинейностей, постройте график нелинейностей.

plot(sys)

Нажмите на блоки входа и вывода нелинейности в верхней части графика, чтобы увидеть нелинейности.

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

load iddata7 z7;

Задайте wavenet для выходной функции модели. Сконфигурируйте wavenet объект должен иметь фиксированное значение смещения 1 и использовать пять модулей в нелинейном компоненте.

w = wavenet;
w.Offset.Value = 1;
w.Offset.Free = false;
w.NonlinearFcn.NumberOfUnits = 5;

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

reg = linearRegressor({'y1','u1'},{1:4,0:4});

Оцените нелинейную модель ARX.

sys = nlarx(z7,reg,w);

Исследуйте свойства постэстимации выходной функции.

disp(sys.OutputFcn)
Wavelet Network
Inputs: y1(t-1), y1(t-2), y1(t-3), y1(t-4), u1(t), u1(t-1), u1(t-2), u1(t-3), u1(t-4)
Output: y1

 Nonlinear Function: Wavelet network with 5 units.
 Linear Function: initialized to [-1.12 0.469 1.25 0.556 -0.81 -0.261 -0.074 0.711 1.15]
 Output Offset: fixed to 1

           Input: [1×1 idpack.Channel]
          Output: [1×1 idpack.Channel]
       LinearFcn: [1×1 nlident.internal.UseProjectedLinearFcn]
    NonlinearFcn: [1×1 nlident.internal.WavenetFcn]
          Offset: [1×1 nlident.internal.ChooseableOffset]
disp(sys.OutputFcn.Input)
  Channel with properties:

     Name: [1×9 string]
     Mean: [0.0795 0.0848 0.1082 0.1134 0.0253 0.0253 0.0202 0.0202 0.0202]
    Range: [2×9 double]
disp(sys.OutputFcn.NonlinearFcn)
  WavenetFcn with properties:

         NumberOfUnits: 5
             Structure: [1×1 nlident.internal.WavenetStructure]
            Parameters: [1×1 nlident.internal.WavenetFcnParameters]
                  Free: 1
    SelectedInputIndex: [1 2 3 4 5 6 7 8 9]

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

load throttledata

Задайте wavenet для выходной нелинейности модели и установите аргументы для NumUnits на 5 и UseLinearFcn и UseOffset на false.

w = wavenet(5,false,false);

Альтернативным методом для удаления линейной функции и смещения является использование записи через точку после создания нелинейности.

w.LinearFcn.Use = false;
w.Offset.Use = false;

Оцените модель, используя order спецификация [4 4 1].

sys = nlhw(ThrottleData,[4 4 1],[],w);

Сравните моделируемый ответ модели с данными оценки.

compare(ThrottleData,sys);

Подробнее о

расширить все

)
)

Алгоритмы

Можно использовать wavenet в нелинейных моделях ARX и Hammerstein-Wiener. Алгоритмы оценки wavenet параметры зависят от той модели, которую вы оцениваете.

  • В нелинейной модели ARX, wavenet использует неитеративный или итеративный метод для предсказания параметров, в зависимости от настроек опции в nlarxOptions.

    • Если на Focus для опции задано значение 'prediction', затем wavenet использует быстрый нетеративный метод для оценки параметров [1]. Последующие уточнения после первой оценки используют итерационный алгоритм.

    • Если на Focus для опции задано значение 'simulation', затем wavenet использует итерационный метод для оценки параметров.

    • Чтобы всегда использовать итеративный или неитеративный алгоритм, задайте IterativeWavenet свойство nlarxOptions как 'on' или 'off', соответственно.

  • В модели Гаммерштейна-Винера, wavenet использует итерационную минимизацию для определения параметров.

Вопросы совместимости

расширить все

Не рекомендуемый запуск в R2021a

Ссылки

[1] Цинхуа Чжан. «Использование вейвлет в непараметрической оценке». Транзакции IEEE в нейронных сетях 8, № 2 (март 1997): 227-36. https://doi.org/10.1109/72.557660.

Введенный в R2007a