mechss

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

    Описание

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

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

    q¨(t)+q˙(t)+q(t) = B u(t)y(t) = F q(t)+q˙(t)+u(t)

    Здесь, полным вектором состояния дают [q,q˙] где q и q˙ смещение и векторы скорости. u и y представляйте вводы и выводы, соответственно. MC и K представляйте массу, затухание и матрицы жесткости, соответственно. B входная матрица в то время как F и G выходные матрицы для смещения и скорости, соответственно. D вход к выходной матрице.

    Можно использовать mechss объект к:

    • Выполните временной интервал и анализ ответа частотного диапазона.

    • Задайте основанные на сигнале связи с другими моделями LTI.

    • Задайте физические интерфейсы между компонентами с помощью interface команда.

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

    Создание

    Описание

    пример

    sys = mechss(M,C,K,B,F,G,D) создает mechss объект, представляющий это непрерывное время модель массового пружинного демпфера второго порядка:

    q¨(t)+q˙(t)+q(t) = B u(t)y(t) = F q(t)+q˙(t)+u(t)

    Здесь, MC, и K представляйте массу, затухание и матрицы жесткости, соответственно. B матрица входа к состоянию в то время как F и G смещение к выходу и скорость к выходным матрицам, следующая из двух компонентов x состоянияD вход к выходной матрице. Можно установить M к [] когда большая матрица является единичной матрицей. Установите G и D к [] или не используйте их, когда они будут пусты.

    пример

    sys = mechss(M,C,K,B,F,G,D,ts) использует шаг расчета ts создать mechss объект, представляющий это дискретное время модель массового пружинного демпфера второго порядка:

    q[k+2]+q[k+1]+q[k] = B u[k]y[k] = F q[k]+q[k+1]+u[k]

    Оставить шаг расчета незаданным, набор ts к -1.

    пример

    sys = mechss(M,C,K) создает mechss объект модели со следующими предположениями:

    • Единичные матрицы для B и F с тем же размером как большая матрица M

    • Матрицы нулей для G и D

    пример

    sys = mechss(D) создает mechss объект модели, который представляет статическое усиление D. Выход разреженная модель в пространстве состояний эквивалентен mechss([],[],[],[],[],[],D).

    пример

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

    пример

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

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

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

    Большая матрица в виде Nq- Nq разреженная матрица, где Nq количество степеней свободы. Этот вход устанавливает значение свойства M.

    Затухание матрицы в виде Nq- Nq разреженная матрица, где Nq количество степеней свободы. Можно также установить C=[] задавать нулевое затухание. Этот вход устанавливает значение свойства C.

    Матрица жесткости в виде Nq- Nq разреженная матрица, где Nq количество степеней свободы. Этот вход устанавливает значение свойства K.

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

    Смещение к выходной матрице в виде Ny- Nq разреженная матрица, где Nq количество степеней свободы и Ny количество выходных параметров. Этот вход устанавливает значение свойства F.

    Скорость к выходной матрице в виде Ny- Nq разреженная матрица, где Nq количество степеней свободы и Ny количество выходных параметров. Этот вход устанавливает значение свойства G.

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

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

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

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

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

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

    Выведите системную модель, возвращенную как mechss объект модели.

    Свойства

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

    Большая матрица в виде Nq- Nq разреженная матрица, где, Nq количество степеней свободы.

    Затухание матрицы в виде Nq- Nq разреженная матрица, где, Nq количество степеней свободы.

    Затухание матрицы в виде Nq- Nq разреженная матрица, где, Nq количество степеней свободы.

    Матрица входа к состоянию в виде Nq- Nu разреженная матрица, где, Nq количество степеней свободы и Nu количество входных параметров.

    Смещение к выходной матрице в виде Ny- Nq разреженная матрица, где, Nq количество степеней свободы и Ny количество выходных параметров.

    Скорость к выходной матрице в виде Ny- Nq разреженная матрица, где, Nq количество степеней свободы и Ny количество выходных параметров.

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

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

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

    • Name — Имя компонента, предупредите или физический интерфейс

    • Size — Количество состояний или степеней свободы в разделе

    Можно просмотреть информацию о разделе разреженного использования модели в пространстве состояний showStateInfo. Можно также отсортировать и заказать разделы в разреженном использовании модели xsort.

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

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

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

      • 'trbdf2' — Решатель фиксированного шага с точностью до o(h^2), где h размер шага. [2] Это - решатель по умолчанию для mechss объект модели.

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

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

      Сокращение размера шага увеличивает точность и расширяет частотный диапазон, где числовое затухание незначительно. 'hht' является самым быстрым, но может столкнуться с трудностями с высоким начальным ускорением (например, импульсная характеристика с начальным толчком). 'trbdf2' требует о вдвое большем количестве расчетов как 'hht' и '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 названия группы, и значения полей являются входными каналами каждой группы. Например, введите следующее, чтобы создать входные группы под названием controls и noise это включает входные каналы 1 и 2, и 3 и 5, соответственно.

    sys.InputGroup.controls = [1 2];
    sys.InputGroup.noise = [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 названия группы, и значения полей являются выходными каналами каждой группы. Например, создайте выходные группы под названием temperature и measurement это включает выходные каналы 1, и 3 и 5, соответственно.

    sys.OutputGroup.temperature = [1];
    sys.InputGroup.measurement = [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 структура без полей.

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

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

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

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

    Примеры

    свернуть все

    В данном примере считайте разреженные матрицы для 3-D модели луча подвергнутыми импульсивной точечной нагрузке в ее совете в файле sparseBeam.mat.

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

    load('sparseBeam.mat','M','K','B','F','G','D');

    Создайте mechss объект модели путем определения [] для матричного C, с тех пор нет никакого затухания.

    sys = mechss(M,[],K,B,F,G,D)
    Sparse continuous-time second-order model with 3 outputs, 1 inputs, and 3408 degrees of freedom.
    
    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.
    

    Выход sys mechss объект модели, содержащий массив 3 на 1 разреженных моделей с 3 408 степенями свободы, 1 входом и 3 выходными параметрами.

    Можно использовать spy команда, чтобы визуализировать разреженность mechss объект модели.

    spy(sys)

    Figure contains an axes object. The axes object with title nnz: M=71076, K=212802, B=1, F=3, G=973. contains 9 objects of type line. These objects represent K, B, F, D.

    В данном примере считайте разреженные матрицы дискретной системы в файле discreteSOSparse.mat.

    Загрузите разреженные матрицы от discreteSOSparse.mat.

    load('discreteSOSparse.mat','M','C','K','B','F','G','D','ts');

    Создайте дискретное время mechss объект модели путем определения шага расчета ts.

    sys = mechss(M,C,K,B,F,G,D,ts)
    Sparse discrete-time second-order model with 1 outputs, 1 inputs, and 28408 degrees of freedom.
    
    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.
    

    Выход sys дискретное время mechss объект модели с 28 408 степенями свободы, 1 входом и 1 выходом.

    Можно использовать spy команда, чтобы визуализировать шаблон разреженности mechss объект модели. Можно щелкнуть правой кнопкой по графику выбрать матрицы, которые будут отображены.

    spy(sys)

    Figure contains an axes object. The axes object with title nnz: C=524538, K=1750850, B=28408, F=71, D=1. contains 9 objects of type line. These objects represent K, B, F, D.

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

    Извлеките данные из sparseSOArray.mat.

    load('sparseSOArray.mat');

    Предварительно выделите массив 3 на 1 mechss модели.

    sys = mechss(zeros(1,1,3));

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

    sys(:,:,1) = mechss(M1,[],K1,B1,F1,G1,[]);
    sys(:,:,2) = mechss(M2,[],K2,B2,F2,G2,[]);
    sys(:,:,3) = mechss(M3,[],K3,B3,F3,G3,[]);
    size(sys)
    3x1 array of sparse second-order models.
    Each model has 1 outputs, 1 inputs, and between 385 and 738 degrees of freedom.
    

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

    Copyright 2020 The MathWorks, Inc

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

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

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

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

    D = [1,5;2,3;5,9];
    sys = mechss(D);
    size(sys)
    Sparse second-order model with 3 outputs, 2 inputs, and 0 degrees of freedom.
    

    В данном примере рассмотрите sparseSOSignal.mat который содержит массу, жесткость и разреженные матрицы затухания.

    Загрузите разреженные матрицы от sparseSOSignal.mat и создайте разреженный объект модели второго порядка.

    load('sparseSOModel.mat','M','C','K');
    sys = mechss(M,C,K);

    mechss создает объект модели sys со следующими предположениями:

    • Единичные матрицы для B и F с тем же размером как большая матрица M.

    • Нулевые матрицы для G и D.

    В данном примере рассмотрите sparssModel.mat это содержит sparss объект модели ltiSys.

    Загрузите sparss объект модели от sparssModel.mat.

    load('sparssModel.mat','ltiSys');
    ltiSys
    Sparse continuous-time state-space model with 1 outputs, 1 inputs, and 354 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.
    

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

    sys = mechss(ltiSys)
    Sparse continuous-time second-order model with 1 outputs, 1 inputs, and 354 degrees of freedom.
    
    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.
    

    В данном примере рассмотрите tuningForkData.mat это содержит разреженную модель второго порядка камертона, поражаемого мягко, но быстро на одном из его зубцов. Система имеет вход того, давление, поданное на одном из его зубцов, который приводит к двум выходным параметрам - смещения в совете и основе камертона.

    Загрузите разреженные матрицы от tuningForkData.mat в рабочую область и создают mechss объект модели.

    load('tuningForkData.mat','M','K','B','F');
    sys = mechss(M,[],K,B,F,'InputName','pressure','Outputname',{'y tip','x base'})

    Затем установите опции решателя для модели путем установки UseParallel параметр к true и DAESolver использовать trbdf3. Используйте spy смотреть структуру модели. Включение параллельных вычислений требует лицензии Parallel Computing Toolbox™.

    sys.SolverOptions.UseParallel = true;
    sys.SolverOptions.DAESolver = 'trbdf3';
    spy(sys)

    Можно также использовать showStateInfo исследовать компоненты.

    showStateInfo(sys)

    Используйте step получить переходный процесс системы. Необходимо обеспечить временной вектор или итоговое время для разреженных моделей.

    t = linspace(0,0.5,1000);
    step(sys,t)

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

    w = logspace(1,5,1000);
    bode(sys,w), grid

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

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

    load sparseSOSignal.mat
    plant = mechss(M,C,K,B,F,[],[],'Name','Plant');

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

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

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

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

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

    sys = feedback(sen*plant*act*con,1)
    Sparse continuous-time second-order model with 1 outputs, 1 inputs, and 7111 degrees of freedom.
    
    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.
    

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

    Используйте showStateInfo просмотреть группы сигнала и компонента.

    showStateInfo(sys)
    The state groups are:
    
        Type          Name       Size
      -------------------------------
      Component      Sensor         1
      Component      Plant       7102
      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       7102
      Component     Actuator        2
      Component    Controller       2
      Signal                        4
    

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

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

    spy(sysSort)

    Figure contains an axes object. The axes object with title nnz: M=170134, C=5, K=340360, B=3, F=1. contains 17 objects of type line. These objects represent K, B, F, D.

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

    Загрузите матрицы модели конечного элемента, содержавшиеся в platePillarModel.mat и создайте разреженную модель второго порядка, представляющую вышеупомянутую систему.

    load('platePillarModel.mat')
    sys = ...
       mechss(M1,[],K1,B1,F1,'Name','Plate1') + ...
       mechss(M2,[],K2,B2,F2,'Name','Plate2') + ...
       mechss(Mp,[],Kp,Bp,Fp,'Name','Pillar3') + ...
       mechss(Mp,[],Kp,Bp,Fp,'Name','Pillar4') + ...
       mechss(Mp,[],Kp,Bp,Fp,'Name','Pillar5') + ...
       mechss(Mp,[],Kp,Bp,Fp,'Name','Pillar6');

    Используйте showStateInfo исследовать компоненты mechss объект модели.

    showStateInfo(sys)
    The state groups are:
    
        Type        Name      Size
      ----------------------------
      Component    Plate1     2646
      Component    Plate2     2646
      Component    Pillar3     132
      Component    Pillar4     132
      Component    Pillar5     132
      Component    Pillar6     132
    

    Теперь загрузите данные об индексе степеней свободы (DOF), с которыми соединяют интерфейсом, из dofData.mat и используйте interface создать физические соединения между этими двумя пластинами и этими четырьмя столбами. dofs 6x7 массив ячеек, где первые две строки содержат данные об индексе степени свободы для первых и вторых пластин, в то время как остающиеся четыре строки содержат данные об индексе для этих четырех столбов.

    load('dofData.mat','dofs')
    for i=3:6
       sys = interface(sys,"Plate1",dofs{1,i},"Pillar"+i,dofs{i,1});
       sys = interface(sys,"Plate2",dofs{2,i},"Pillar"+i,dofs{i,2});
    end

    Задайте связь между подопочным щитком и землей.

    sysCon = interface(sys,"Plate2",dofs{2,7});

    Используйте showStateInfo подтвердить физические интерфейсы.

    showStateInfo(sysCon)
    The state groups are:
    
        Type            Name         Size
      -----------------------------------
      Component        Plate1        2646
      Component        Plate2        2646
      Component       Pillar3         132
      Component       Pillar4         132
      Component       Pillar5         132
      Component       Pillar6         132
      Interface    Plate1-Pillar3      12
      Interface    Plate2-Pillar3      12
      Interface    Plate1-Pillar4      12
      Interface    Plate2-Pillar4      12
      Interface    Plate1-Pillar5      12
      Interface    Plate2-Pillar5      12
      Interface    Plate1-Pillar6      12
      Interface    Plate2-Pillar6      12
      Interface    Plate2-Ground        6
    

    Можно использовать spy визуализировать разреженные матрицы в итоговой модели.

    spy(sysCon)

    Figure contains an axes object. The axes object with title nnz: M=95256, K=249052, B=1, F=1. contains 37 objects of type line. These objects represent K, B, F, D.

    Набор данных для этого примера был обеспечен Виктором Долком от ASML.

    Ссылки

    [1] Х. Хилбер, T. Hughes & R. Тейлор. "Улучшенное числовое рассеяние для алгоритмов интегрирования времени в структурной динамике". Землетрясение Техническая и Структурная Динамика, издание 5, № 3, стр 283-292, 1977.

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

    Введенный в R2020b