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)

    Здесь, xU и y представляйте состояния, вводы и выводы соответственно, в то время как ABCD и E матрицы пространства состояний. sparss объект представляет модель в пространстве состояний в MATLAB, хранящем разреженные матрицы ABCD и 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.

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

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

    Индексом ДАУ является 0 если x2 isempty. Индексом является 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 шаг size.[1]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Шаг расчета в виде:

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

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

    • -1 для системы дискретного времени с незаданным шагом расчета.

    Примечание

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

    Модули переменной Time в виде одного из следующего:

    • 'nanoseconds'

    • 'microseconds'

    • 'milliseconds'

    • 'seconds'

    • 'minutes'

    • 'hours'

    • 'days'

    • 'weeks'

    • 'months'

    • 'years'

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

    Введите названия канала в виде одного из следующего:

    • Вектор символов, для моделей одно входа.

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

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

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

    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 2D выходная модель, введите:

    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Низкочастотный (DC) усиление системы 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.

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

    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 разреженная модель в пространстве состояний первого порядка.

    Считайте следующий с тремя входами, 2D выход статической матрицей усиления:

    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 команда, чтобы преобразовать в разреженный represnentation первого порядка.

    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