exponenta event banner

штанги

Разреженная модель состояния-пространства первого порядка

    Описание

    Использовать sparss для представления разреженных моделей состояния дескриптора-пространства с использованием матриц, полученных из пакета анализа конечных элементов (FEA). FEA включает в себя концепцию динамического субструктурирования, когда механическая система разделяется на компоненты, которые моделируются отдельно. Затем эти компоненты соединяют с использованием жестких или полужестких физических интерфейсов, которые выражают согласованность смещений и равновесие внутренних сил. Результирующие матрицы из этого типа моделирования довольно велики с разреженным шаблоном. Следовательно, использование sparss является эффективным способом представления таких больших моделей разреженного состояния-пространства в MATLAB ® для выполнения линейного анализа. Также можно использоватьsparss для преобразования второго порядка mechss объект модели в sparss объект.

    Вы можете использовать sparss объекты модели для представления моделей состояния пространства SISO или MIMO в непрерывном или дискретном времени. За непрерывное время модель разреженного состояния-пространства первого порядка представляется в следующем виде:

    Edxdt = A x (t ) + B u (t) y (t)  = C x (t) + D u (t)

    Здесь, x, u и y представляют состояния, входы и выходы соответственно, в то время как A, B, C, D и E - матрицы состояния-пространства. sparss объект представляет модель состояния-пространства в MATLAB, хранящей разреженные матрицы A, B, C, D и E наряду с другой информацией, такой как время выборки, имена и задержки, относящиеся к входам и выходам.

    Вы можете использовать sparss объект для:

    • Выполнение анализа отклика во временной и частотной областях.

    • Укажите сигнальные соединения с другими моделями LTI.

    • Преобразование моделей между представлениями непрерывного и дискретного времени.

    Дополнительные сведения см. в разделе Основы разреженной модели.

    Создание

    Описание

    пример

    sys = sparss(A,B,C,D,E) создает объект модели разреженного состояния-пространства первого порядка непрерывного времени следующего вида:

    Edxdt = A x (t ) + B u (t) y (t)  = C x (t) + D u (t)

    Например, рассмотрим растение с Nx состояния, Ny выходы, и Nu входные данные. Матрицы состояния-пространства первого порядка:

    • A - матрица разреженного состояния с Nxоколо-Nx реальные или комплексные значения.

    • B - разреженная матрица «вход в состояние» с Nxоколо-Nu реальные или комплексные значения.

    • - разреженная матрица «состояние-выход» с Nyоколо-Nx реальные или комплексные значения.

    • D - разреженный коэффициент усиления или матрица «вход-выход» с Nyоколо-Nu реальные или комплексные значения.

    • E - разреженная массовая матрица с тем же размером, что и матрица; A. Когда E опущен, sparss населяет E с единичной матрицей.

    пример

    sys = sparss(A,B,C,D,E,ts) создает дискретную модель разреженного состояния-пространства с временем выборки ts с формой:

    E x [k + 1 ] = A x [k] + B u  [k] y [ k] = C x [k] + D u [k]

    Чтобы оставить время выборки неопределенным, установите ts кому -1. Когда E является единичной матрицей, можно задать E как [] или опустить E до тех пор, пока A не является скаляром.

    пример

    sys = sparss(D) создает модель разреженного состояния-пространства, представляющую статическое усиление, D. Модель выходного состояния-пространства эквивалентна sparss([],[],[],D,[]).

    пример

    sys = sparss(___,Name,Value) задает свойства модели разреженного состояния-пространства первого порядка, используя один или несколько аргументов пары имя-значение. Этот синтаксис используется с любой из предыдущих комбинаций входных аргументов.

    пример

    sys = sparss(ltiSys) преобразует динамическую модель системы ltiSys в модель разреженного состояния-пространства первого порядка.

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

    развернуть все

    Матрица состояний, указанная как Nxоколо-Nx разреженная матрица, где Nx - количество состояний. Этот ввод задает значение свойства A.

    Матрица «вход в состояние», заданная как Nxоколо-Nu разреженная матрица, где Nx - количество состояний и Nu - количество входов. Этот ввод задает значение свойства B.

    Матрица «состояние-выход», заданная как Nyоколо-Nx разреженная матрица, где Nx - количество состояний и Ny - количество выходов. Этот ввод задает значение свойства C.

    Матрица «вход-выход», заданная как Nyоколо-Nu разреженная матрица, где Ny - количество выходов и Nu - количество входов. Этот ввод задает значение свойства D.

    Массовая матрица, заданная как Nxоколо-Nx разреженная матрица, где Nx - количество состояний. Этот ввод задает значение свойства E.

    Время выборки, указанное как скаляр. Дополнительные сведения см. в свойстве Ts.

    Динамическая система для преобразования в форму разреженного состояния-пространства первого порядка, заданную как динамическая системная модель SISO или MIMO или массив динамических системных моделей. Динамические системы, которые можно преобразовать, включают в себя:

    • Непрерывные или дискретные числовые модели LTI, такие как mechss, tf, zpk, ss или pid модели.

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

    развернуть все

    Выходная модель системы, возвращенная как sparss объект модели.

    Свойства

    развернуть все

    Матрица состояний, указанная как Nxоколо-Nx разреженная матрица, где Nx - количество состояний.

    Матрица «вход в состояние», заданная как Nxоколо-Nu разреженная матрица, где Nx - количество состояний и Nu - количество входов.

    Матрица «состояние-выход», заданная как Nyоколо-Nx разреженная матрица, где Nx - количество состояний и Ny - количество выходов.

    Матрица «вход-выход», заданная как Nyоколо-Nu разреженная матрица, где Ny - количество выходов и Nu - количество входов. D также называется матрицей статического усиления, которая представляет отношение выходного сигнала к входному в установившемся состоянии.

    Массовая матрица, заданная как Nxоколо-Nx разреженная матрица. E имеет тот же размер, что и A.

    Дифференциальные алгебраические уравнения (DAE) характеризуются их дифференциальным индексом, который является мерой их сингулярности. Линейная дисковая полка имеет индекс ≤1 если он может быть преобразован посредством конгруэнтности в следующую форму с E11 и A22 являются обратимыми матрицами.

    E11x˙1=A11x1+A12x2+B1u0=A21x1+A22x2+B2u

    Индекс дисковой полки: 0 если x2 пуст. Индекс: 1 если x2 не пуст. Другими словами, линейная дисковая полка имеет структурный индекс ≤1 если его можно привести к вышеуказанной форме путем перестановок строк и столбцов A и E. Некоторые функциональные возможности, такие как вычисление импульсной характеристики системы, ограничены дисковыми полками со структурным индексом менее 1.

    Дополнительные сведения об индексе дисковой полки см. в разделе Решение дифференциальных алгебраических уравнений (дисковых полок).

    Информация о разбиении состояния, содержащая компоненты вектора состояния, интерфейсы между компонентами и компоненты, соединяющие внутренний сигнал, заданная как структурный массив со следующими полями:

    • Type - Тип включает компонент, сигнал или физический интерфейс

    • Name - имя компонента, сигнала или физического интерфейса;

    • Size - Количество состояний или узлов в разделе

    Просмотреть информацию о секциях модели разреженного состояния-пространства можно с помощью showStateInfo. Можно также сортировать и упорядочивать секции разреженной модели с помощью xsort.

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

    • UseParallel - Установить этот параметр true для обеспечения возможности параллельных вычислений и false чтобы отключить его. Параллельные вычисления по умолчанию отключены. UseParallel требуется лицензия Parallel Computing Toolbox™.

    • DAESolver - используйте эту опцию для выбора типа решателя дифференциального алгебраического уравнения (DAE). Доступные решатели дисковых полок:

      • 'trbdf2' - Решатель с фиксированным шагом с точностью o(h^2), где h - размер шага. [1]

      • 'trbdf3' - Решатель с фиксированным шагом с точностью o(h^3), где h - размер шага.

      Уменьшение размера шага повышает точность и расширяет диапазон частот, где численное демпфирование ничтожно мало. 'trbdf3' примерно на 50% интенсивнее вычислений, чем 'trbdf2'

    Внутренние задержки в модели, указанные как вектор. Внутренние задержки возникают, например, при замыкании петель обратной связи на системах с задержками или при соединении систем с задержками последовательно или параллельно. Дополнительные сведения о внутренних задержках см. в разделе Закрытие циклов обратной связи с временными задержками.

    Для моделей непрерывного времени внутренние задержки выражаются в единицах времени, указанных TimeUnit свойство модели. Для моделей дискретного времени внутренние задержки выражаются как целые кратные времени выборки Ts. Например, InternalDelay = 3 означает задержку в три периода выборки.

    Можно изменить значения внутренних задержек с помощью свойства InternalDelay. Однако количество записей в sys.InternalDelay не может изменяться, поскольку является структурным свойством модели.

    Задержка на входе для каждого входного канала, определяемая как одно из следующих значений:

    • Скаляр (Scalar) - задает задержку ввода для системы SISO или такую же задержку для всех входов системы с несколькими входами.

    • Nu-by-1 vector - Определение отдельных входных задержек для ввода системы с несколькими входами, где Nu - количество входов.

    Для систем непрерывного времени укажите задержки на входе в единицу времени, указанную TimeUnit собственность. Для дискретно-временных систем укажите входные задержки в целых кратных времени выборки, Ts.

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

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

    • Скаляр (Scalar) - указывает задержку вывода для системы SISO или такую же задержку для всех выходов системы с несколькими выходами.

    • Ny-by-1 vector - Определение отдельных выходных задержек для вывода системы с несколькими выходами, где Ny - количество выходов.

    Для систем непрерывного времени укажите задержки на выходе в единицах времени, указанных TimeUnit собственность. Для дискретно-временных систем укажите задержки на выходе в целых числах, кратных времени выборки. Ts.

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

    Время выборки, указанное как:

    • 0 для систем непрерывного времени.

    • Положительный скаляр, представляющий период выборки дискретно-временной системы. Определить Ts в единице времени, указанной TimeUnit собственность.

    • -1 для дискретно-временной системы с неопределенным временем выборки.

    Примечание

    Изменение Ts не дискретизирует и не выполняет повторную выборку модели. Для преобразования между представлениями непрерывного и дискретного времени используйте c2d и d2c. Для изменения времени выборки системы дискретного времени используйте d2d.

    Единицы переменной времени, указанные как одно из следующих значений:

    • 'nanoseconds'

    • 'microseconds'

    • 'milliseconds'

    • 'seconds'

    • 'minutes'

    • 'hours'

    • 'days'

    • 'weeks'

    • 'months'

    • 'years'

    Изменение TimeUnit не влияет на другие свойства, но изменяет общее поведение системы. Использовать chgTimeUnit преобразование между единицами времени без изменения поведения системы.

    Имена входных каналов, указанные как одно из следующих:

    • Символьный вектор для моделей с одним входом.

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

    • '', не указаны имена для каких-либо входных каналов.

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

    sys.InputName = 'controls';

    Имена вводимых данных автоматически расширяются до {'controls(1)';'controls(2)'}.

    Можно использовать сокращенную нотацию u см. InputName собственность. Например, sys.u эквивалентно sys.InputName.

    Использовать InputName кому:

    • Определение каналов на дисплее модели и графиках.

    • Извлечение подсистем систем MIMO.

    • Укажите точки соединения при соединении моделей.

    Блоки входных каналов, указанные как одно из следующих:

    • Символьный вектор для моделей с одним входом.

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

    • '', не указаны единицы измерения для каких-либо входных каналов.

    Использовать InputUnit для задания единиц входного сигнала. InputUnit не влияет на поведение системы.

    Входные группы каналов, заданные как структура. Использовать InputGroup назначение входных каналов систем MIMO группам и ссылка на каждую группу по имени. Имена полей InputGroup - имена групп, а значения полей - входные каналы каждой группы. Например:

    sys.InputGroup.controls = [1 2];
    sys.InputGroup.noise = [3 5];

    создает входные группы с именем controls и noise которые включают входные каналы 1 и 2, и 3 и 5соответственно. Затем можно извлечь подсистему из controls входы на все выходы с использованием:

    sys(:,'controls')

    По умолчанию InputGroup - структура без полей.

    Имена выходных каналов, указанные как одно из следующих:

    • Символьный вектор для моделей с одним выходом.

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

    • '', не указаны имена для каких-либо выходных каналов.

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

    sys.OutputName = 'measurements';

    Имена вывода автоматически расширяются до {'measurements(1)';'measurements(2)'}.

    Можно также использовать сокращенную нотацию y см. OutputName собственность. Например, sys.y эквивалентно sys.OutputName.

    Использовать OutputName кому:

    • Определение каналов на дисплее модели и графиках.

    • Извлечение подсистем систем MIMO.

    • Укажите точки соединения при соединении моделей.

    Единицы выходного канала, указанные как одно из следующих:

    • Символьный вектор для моделей с одним выходом.

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

    • '', не указаны единицы измерения для каких-либо выходных каналов.

    Использовать OutputUnit для задания единиц выходного сигнала. OutputUnit не влияет на поведение системы.

    Группы выходных каналов, заданные как структура. Использовать OutputGroupназначение выходных каналов систем MIMO группам и ссылка на каждую группу по имени. Имена полей OutputGroup - имена групп, а значения полей - выходные каналы каждой группы. Например:

    sys.OutputGroup.temperature = [1];
    sys.InputGroup.measurement = [3 5];

    создает выходные группы с именем temperature и measurement которые включают выходные каналы 1, и 3 и 5соответственно. Затем можно извлечь подсистему из всех входов в measurement вывод с использованием:

    sys('measurement',:)

    По умолчанию OutputGroup - структура без полей.

    Пользовательский текст, который требуется связать с системой, указанный как символьный вектор или массив ячеек символьных векторов. Например, 'System is MIMO'.

    Пользовательские данные, которые необходимо связать с системой, указанные как любой тип данных MATLAB.

    Имя системы, указанное как символьный вектор. Например, 'system_1'.

    Сетка выборки для массивов модели, заданная как массив структуры.

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

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

    Например, можно создать массив линейных моделей 11 на 1. sysarr, делая снимки линейной изменяющейся во времени системы в моменты времени t = 0:10. В следующем коде хранятся выборки времени с линейными моделями.

     sysarr.SamplingGrid = struct('time',0:10)

    Аналогично, можно создать массив модели 6 на 9, M, путем независимой выборки двух переменных, zeta и w. Следующий код отображает (zeta,w) значения для M.

    [zeta,w] = ndgrid(<6 values of zeta>,<9 values of w>)
    M.SamplingGrid = struct('zeta',zeta,'w',w)

    По умолчанию SamplingGrid - структура без полей.

    Функции объекта

    В следующих списках показаны функции, которые можно использовать с sparss объекты модели.

    развернуть все

    mechssРазреженная модель пространства состояния второго порядка
    getx0Отображение начальных условий из mechss объект в sparss объект
    fullПреобразование разреженных моделей в плотное хранилище
    imp2expПреобразование неявного линейного отношения в явное отношение «вход-выход»
    invИнвертировать модели
    getDelayModelПредставление внутренних задержек в пространстве состояний
    sparssdataДоступ к данным модели разреженного состояния и пространства первого порядка
    mechssdataДоступ к данным модели разреженного состояния и пространства второго порядка
    showStateInfoСведения о разделе состояния
    spyВизуализация узора разреженности sparss объект модели
    c2dПреобразование модели из непрерывного в дискретное время
    d2cПреобразование модели из дискретного в непрерывное время
    d2dПовторная выборка дискретно-временной модели
    stepГрафик ступенчатой реакции динамической системы; данные ответа на шаг
    impulseграфик импульсной характеристики динамической системы; данные импульсной характеристики
    initialОтклик начального состояния модели state-space
    lsimПостройте график моделируемой временной реакции динамической системы на произвольные входы; смоделированные данные ответа
    bodeГрафик Моде частотной характеристики, или данные о величине и фазе
    nyquistНайквистский график частотной характеристики
    nicholsДиаграмма частотной характеристики Николса
    sigmaГрафик сингулярных значений динамической системы
    passiveplotВычислить или построить индекс пассивности как функцию частоты
    dcgainНизкочастотный (DC) коэффициент усиления системы LTI
    evalfrОценить частотную характеристику на данной частоте
    freqrespЧастотная характеристика по сети
    interfaceУкажите физические соединения между компонентами mechss модель
    xsortСортировать состояния по разделу состояний
    feedbackОбратная связь нескольких моделей
    parallelПараллельное соединение двух моделей
    appendГруппировать модели путем добавления их входных и выходных данных
    connectБлок-схема взаимосвязей динамических систем
    lftОбобщенное взаимодействие обратной связи двух моделей (звездное изделие Redheffer)
    seriesПоследовательное соединение двух моделей

    Примеры

    свернуть все

    В этом примере рассмотрим sparseFOContinuous.mat который содержит разреженные матрицы для непрерывной разреженной модели состояния-пространства первого порядка.

    Извлеките разреженные матрицы из sparseFOContinuous.mat.

    load('sparseFOContinuous.mat','A','B','C','D','E');

    Создать sparss объект модели.

    sys = sparss(A,B,C,D,E)
    Sparse continuous-time state-space model with 1 outputs, 1 inputs, and 199 states.
    
    Use "spy" and "showStateInfo" to inspect model structure. 
    Type "properties('sparss')" for a list of model properties. 
    Type "help sparssOptions" for available solver options for this model.
    

    Продукция sys является непрерывным временем sparss объект модели, содержащий 199 состояний, 1 вход и 1 выход.

    Вы можете использовать spy для визуализации разреженности sparss объект модели.

    spy(sys)

    Figure contains an axes. The axes with title nnz: A=239, E=239, B=20, C=19, D=1. contains 7 objects of type line. These objects represent A, B, C, D.

    В этом примере рассмотрим sparseFODiscrete.mat который содержит разреженные матрицы для дискретно-временной разреженной модели состояния-пространства первого порядка.

    Извлеките разреженные матрицы из sparseFODiscrete.mat.

    load('sparseFODiscrete.mat','A','B','C','D','E','ts');

    Создать sparss объект модели.

    sys = sparss(A,B,C,D,E,ts)
    Sparse discrete-time state-space model with 1 outputs, 1 inputs, and 398 states.
    
    Use "spy" and "showStateInfo" to inspect model structure. 
    Type "properties('sparss')" for a list of model properties. 
    Type "help sparssOptions" for available solver options for this model.
    

    Продукция sys является дискретным временем sparss объект модели, содержащий 398 состояний, 1 вход и 1 выход.

    Вы можете использовать spy для визуализации разреженности sparss объект модели.

    spy(sys)

    Figure contains an axes. The axes with title nnz: A=518, E=837, B=56, C=18, D=1. contains 7 objects of type line. These objects represent A, B, C, D.

    Можно также просмотреть свойства модели объекта модели sparss.

    properties('sparss')
    Properties for class sparss:
    
        A
        B
        C
        D
        E
        Scaled
        StateInfo
        SolverOptions
        InternalDelay
        InputDelay
        OutputDelay
        Ts
        TimeUnit
        InputName
        InputUnit
        InputGroup
        OutputName
        OutputUnit
        OutputGroup
        Notes
        UserData
        Name
        SamplingGrid
    

    Создание статической MIMO-модели разреженного пространства состояния первого порядка.

    Рассмотрим следующую матрицу статического усиления с тремя входами и двумя выходами:

    D = [157639] Матрица статического усиления

    Укажите матрицу усиления и создайте статическую модель разреженного усиления в пространстве состояния первого порядка.

    D = [1,5,7;6,3,9];
    sys = sparss(D);
    size(sys)
    Sparse state-space model with 2 outputs, 3 inputs, and 0 states.
    

    В этом примере рассмотрим mechssModel.mat который содержит mechss объект модели ltiSys.

    Загрузить mechss объект модели из mechssModel.mat.

    load('mechssModel.mat','ltiSys');
    ltiSys
    Sparse continuous-time second-order model with 1 outputs, 1 inputs, and 872 nodes.
    
    Use "spy" and "showStateInfo" to inspect model structure. 
    Type "properties('mechss')" for a list of model properties. 
    Type "help mechssOptions" for available solver options for this model.
    

    Используйте sparss для преобразования в разреженную репрезентацию первого порядка.

    sys = sparss(ltiSys)
    Sparse continuous-time state-space model with 1 outputs, 1 inputs, and 1744 states.
    
    Use "spy" and "showStateInfo" to inspect model structure. 
    Type "properties('sparss')" for a list of model properties. 
    Type "help sparssOptions" for available solver options for this model.
    

    Результант sparss объект модели sys имеет ровно в два раза больше состояний, чем mechss объект ltisys так как массовая матрица M является полным званием. Если матрица массы не является полным рангом, то количество состояний в результирующем sparss модель при преобразовании из mechss модель находится между n и 2n. Здесь, n - количество узлов в mechss объект модели.

    В этом примере рассмотрим sparseFOSignal.mat содержит разреженную модель первого порядка. Определите исполнительный механизм, датчик и контроллер и соедините их с установкой в контуре обратной связи.

    Загрузите разреженные матрицы и создайте sparss объект.

    load sparseFOSignal.mat
    plant = sparss(A,B,C,D,E,'Name','Plant');

    Затем создайте исполнительный механизм и датчик с помощью функций передачи.

    act = tf(1,[1 2 3],'Name','Actuator');
    sen = tf(1,[6 7],'Name','Sensor');

    Создайте объект контроллера PID для завода.

    con = pid(1,1,0.1,0.01,'Name','Controller');

    Используйте feedback команда на соединение установки, датчика, привода и контроллера в контуре обратной связи.

    sys = feedback(sen*plant*act*con,1)
    Sparse continuous-time state-space model with 1 outputs, 1 inputs, and 29 states.
    
    Use "spy" and "showStateInfo" to inspect model structure. 
    Type "properties('sparss')" for a list of model properties. 
    Type "help sparssOptions" for available solver options for this model.
    

    Результирующая система sys является sparss объект с sparss объекты имеют приоритет над tf и PID типы объектов модели.

    Использовать showStateInfo для просмотра групп компонентов и сигналов.

    showStateInfo(sys)
    The state groups are:
    
        Type          Name       Size
      -------------------------------
      Component      Sensor         1
      Component      Plant         20
      Signal                        1
      Component     Actuator        2
      Signal                        1
      Component    Controller       2
      Signal                        1
      Signal                        1
    

    Использовать xsort для сортировки компонентов и сигналов, а затем просмотра групп компонентов и сигналов.

    sysSort = xsort(sys);
    showStateInfo(sysSort)
    The state groups are:
    
        Type          Name       Size
      -------------------------------
      Component      Sensor         1
      Component      Plant         20
      Component     Actuator        2
      Component    Controller       2
      Signal                        4
    

    Обратите внимание, что компоненты теперь упорядочены перед разделением сигнала. Сигналы теперь сортируются и группируются в одном разделе.

    Можно также визуализировать массив разреженности результирующей системы с помощью spy.

    spy(sysSort)

    Figure contains an axes. The axes with title nnz: A=141, E=123, B=3, C=1. contains 15 objects of type line. These objects represent A, B, C, D.

    Ссылки

    [1] М. Осия и Л. Шампин. «Анализ и осуществление TR-BDF2.» Прикладная численная математика, том 20, № 1-2, стр. 21-37, 1996.

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