sparss

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

    Описание

    Использование 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 являются матрицами пространства состояний. The 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-by- Nx real- или комплексные числа.

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

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

    • D - разреженная матрица усиления или ввода-вывода с Ny-by- Nu real- или комплексные числа.

    • 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-by- Nx разреженная матрица, где Nx количество состояний. Этот вход устанавливает значение свойства A.

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

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

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

    Большая матрица, заданная как Nx-by- Nx разреженная матрица, где Nx количество состояний. Этот вход устанавливает значение свойства E.

    Шаг расчета, заданный как скаляр. Для получения дополнительной информации см. свойство Ts.

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

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

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

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

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

    Свойства

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

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

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

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

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

    Большая матрица, заданная как Nx-by- Nx разреженная матрица. E - тот же размер, что и A.

    Дифференциальные алгебраические уравнения (ДАУ) характеризуются дифференциальным индексом, который является мерой их особенности. Линейная ДАУ имеет индекс ≤ 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 чтобы отключить его. Параллельные вычисления по умолчанию отключены. The UseParallel опция требуется лицензия Parallel Computing Toolbox™.

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

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

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

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

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

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

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

    Входная задержка для каждого входного канала, заданная как одно из следующего:

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

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

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

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

    Выходная задержка для каждого выходного канала, заданная как одно из следующего:

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

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

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

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

    Шаг расчета, заданная как:

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

    • A положительной скалярной величины, представляющее период дискретной дискретной системы времени. Задайте 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Реакция начального условия модели пространства состояний
    lsimПостройте моделируемую временную характеристику динамической системы на произвольные входы; симулированные отклики
    bodeДиаграмма Боде частотной характеристики, или данные величины и фазы
    nyquistГодограф Найквиста частотной характеристики
    nicholsГрафик Николса частотной характеристики
    sigmaГрафик сингулярных значений динамической системы
    passiveplotВычислите или постройте график индекса пассивности как функции частоты
    dcgainНизкочастотный коэффициент усиления системы LTI
    evalfrОцените частотную характеристику на заданной частоте
    freqrespЧастотная характеристика по сетке
    interfaceЗадайте физические соединения между компонентами mechss модель
    xsortСортировка состояний на основе разбиения состояний
    feedbackCоединение обратной связи многих моделей
    parallelПараллельное соединение двух моделей
    appendГруппируйте модели путем добавления их входов и выходов
    connectБлок взаимосвязей динамических систем
    lftОбобщенная взаимосвязь с обратной связью двух моделей (Звездообразного произведения Редхеффера)
    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');

    Создайте объект ПИД-регулятора для объекта.

    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