稀疏二阶状态空间模型
使用mechss
使用从有限元分析(FEA)包中获得的矩阵表示二阶稀疏模型。这种稀疏模型源自有限元分析(FEA),在结构分析、流体流动、传热和电磁学等领域非常有用。这种类型建模的结果矩阵相当大,具有稀疏的模式。因此,使用mechss
是一种有效的方法在MATLAB中表示如此大的稀疏状态空间模型®进行线性分析。你也可以用mechss
转换一阶桅杆
模型对象或其他动态系统模型到一个mechss
对象。
你可以用mechss
建模对象来表示连续时间或离散时间中的SISO或MIMO状态空间模型。在连续时间条件下,二阶稀疏质量-弹簧-阻尼器模型表示为:
这里,完整的状态向量由
在哪里
而且
是位移和速度向量。u
而且y
分别表示输入和输出。米
,C
而且K
分别表示质量、阻尼和刚度矩阵。B
输入矩阵是当吗F
而且G
分别为位移和速度的输出矩阵。D
是输入输出矩阵。
你可以使用mechss
对象:
执行时域和频域响应分析。
指定与其他LTI模型的基于信号的连接。
方法指定组件之间的物理接口接口
命令。
有关更多信息,请参见稀疏模型基础知识.
米
- - - - - -质量矩阵Nq
——- - - - - -Nq
稀疏矩阵质量矩阵,指定为Nq
——- - - - - -Nq
稀疏矩阵,其中Nq
是自由度的数量。此输入设置属性的值米.
C
- - - - - -阻尼矩阵Nq
——- - - - - -Nq
稀疏矩阵阻尼矩阵,指定为Nq
——- - - - - -Nq
稀疏矩阵,其中Nq
是自由度的数量。您还可以设置C = []
指定零阻尼。此输入设置属性的值C.
K
- - - - - -刚度矩阵Nq
——- - - - - -Nq
稀疏矩阵刚度矩阵,指定为Nq
——- - - - - -Nq
稀疏矩阵,其中Nq
是自由度的数量。此输入设置属性的值K.
B
- - - - - -Input-to-state矩阵Nq
——- - - - - -ν
稀疏矩阵输入到状态矩阵,指定为Nq
——- - - - - -ν
稀疏矩阵,其中Nq
自由度的个数是和吗ν
是输入的数量。此输入设置属性的值B.
F
- - - - - -Displacement-to-output矩阵纽约
——- - - - - -Nq
稀疏矩阵位移到输出矩阵,指定为纽约
——- - - - - -Nq
稀疏矩阵,其中Nq
自由度的个数是和吗纽约
是输出的数量。此输入设置属性的值F.
G
- - - - - -Velocity-to-output矩阵纽约
——- - - - - -Nq
稀疏矩阵速度到输出矩阵,指定为纽约
——- - - - - -Nq
稀疏矩阵,其中Nq
自由度的个数是和吗纽约
是输出的数量。此输入设置属性的值G.
D
- - - - - -Input-to-output矩阵纽约
——- - - - - -ν
稀疏矩阵输入到输出矩阵,指定为纽约
——- - - - - -ν
稀疏矩阵,其中纽约
输出的数量和ν
是输入的数量。此输入设置属性的值D.
ts
- - - - - -样品时间采样时间,指定为一个标量。有关更多信息,请参阅Ts财产。
sys
-输出系统模型mechss
模型对象输出系统模型,返回为mechss
模型对象。
米
- - - - - -质量矩阵Nq
——- - - - - -Nq
稀疏矩阵质量矩阵,指定为Nq
——- - - - - -Nq
其中,Nq
是自由度的数量。
C
- - - - - -阻尼矩阵Nq
——- - - - - -Nq
稀疏矩阵阻尼矩阵,指定为Nq
——- - - - - -Nq
其中,Nq
是自由度的数量。
K
- - - - - -刚度矩阵Nq
——- - - - - -Nq
稀疏矩阵阻尼矩阵,指定为Nq
——- - - - - -Nq
其中,Nq
是自由度的数量。
B
- - - - - -Input-to-state矩阵Nq
——- - - - - -ν
稀疏矩阵输入到状态矩阵,指定为Nq
——- - - - - -ν
其中,Nq
自由度的个数是和吗ν
是输入的数量。
F
- - - - - -Displacement-to-output矩阵纽约
——- - - - - -Nq
稀疏矩阵位移到输出矩阵,指定为纽约
——- - - - - -Nq
其中,Nq
自由度的个数是和吗纽约
是输出的数量。
G
- - - - - -Velocity-to-output矩阵纽约
——- - - - - -Nq
稀疏矩阵速度到输出矩阵,指定为纽约
——- - - - - -Nq
其中,Nq
自由度的个数是和吗纽约
是输出的数量。
D
- - - - - -Input-to-output矩阵纽约
——- - - - - -ν
稀疏矩阵输入到输出矩阵,指定为纽约
——- - - - - -ν
其中,纽约
输出的数量和ν
是输入的数量。D
也称为静态增益矩阵,表示稳态条件下输出与输入的比值。
StateInfo
- - - - - -状态分区信息包含状态向量组件、组件之间的接口和连接组件的内部信号的状态分区信息,指定为具有以下字段的结构数组:
类型
-类型包括组件、信号或物理接口
的名字
—部件名称、信号名称或物理接口名称
大小
-分区中的状态或自由度的数目
您可以使用。查看稀疏状态空间模型的分区信息showStateInfo
.您还可以对稀疏模型中的分区进行排序和排序xsort
.
SolverOptions
- - - - - -模型分析的选项模型分析的选项,指定为具有以下字段的结构:
UseParallel
—设置为真正的
使并行计算和假
禁用它。默认情况下禁用并行计算。的UseParallel
选项需要并行计算工具箱™许可证。
DAESolver
-使用此选项选择微分代数方程(DAE)求解器的类型。下列DAE求解器可用:
减小步长可以提高精度并扩展数值阻尼可以忽略不计的频率范围。“遗传性出血性毛细血管扩张症”
是最快的,但会遇到高初始加速度的困难(例如,有初始跳的脉冲响应)。“trbdf2”
需要的计算量是“遗传性出血性毛细血管扩张症”
而且“trbdf3”
需要比。多50%的计算“trbdf2”
.
示例请参见稀疏二阶模型的时频响应.
InternalDelay
- - - - - -模型中的内部延迟模型中的内部延迟,指定为一个向量。例如,当关闭有延迟的系统的反馈循环时,或当串联或并行连接延迟系统时,就会出现内部延迟。有关内部延迟的更多信息,请参见使用时间延迟关闭反馈循环.
对于连续时间模型,内部延迟用函数指定的时间单位表示TimeUnit
模型的属性。对于离散时间模型,内部延迟表示为样本时间的整数倍Ts
.例如,InternalDelay = 3
表示三个采样周期的延迟。
可以使用该属性修改内部延迟的值InternalDelay
.然而,条目的数量sys。InternalDelay
不能更改,因为这是模型的结构属性。
InputDelay
- - - - - -输入延迟0
(默认)|标量|ν
1的向量每个输入通道的输入延迟,指定为以下之一:
标量——为SISO系统指定输入延迟,或为多输入系统的所有输入指定相同的延迟。
ν
-by-1 vector -为多输入系统的输入指定单独的输入延迟,其中ν
是输入的数量。
方法指定的时间单位指定输入延迟TimeUnit
财产。对于离散时间系统,指定输入延迟为采样时间的整数倍,Ts
.
有关更多信息,请参见线性系统中的时滞.
OutputDelay
- - - - - -输出延迟0
(默认)|标量|纽约
1的向量每个输出通道的输出延迟,指定为以下之一:
标量-为一个SISO系统指定输出延迟,或为一个多输出系统的所有输出指定相同的延迟。
纽约
-by-1 vector -为多输出系统的输出指定单独的输出延迟纽约
是输出的数量。
对于连续时间系统,以指定的时间单位指定输出延迟TimeUnit
财产。对于离散时间系统,指定输出延迟为采样时间的整数倍,Ts
.
有关更多信息,请参见线性系统中的时滞.
TimeUnit
- - - - - -时间变量单位“秒”
(默认)|“纳秒”
|微秒的
|的毫秒
|“分钟”
|“小时”
|“天”
|“周”
|“月”
|“年”
|……时间变量单位,指定为以下之一:
“纳秒”
微秒的
的毫秒
“秒”
“分钟”
“小时”
“天”
“周”
“月”
“年”
改变TimeUnit
对其他属性没有影响,但会改变整个系统行为。使用chgTimeUnit
在不修改系统行为的情况下在时间单位之间进行转换。
InputName
- - - - - -输入通道名称”
(默认)|特征向量|字符向量的单元格数组输入通道名,指定为以下之一:
字符向量,用于单输入模型。
字符向量的单元格数组,用于多输入模型。
”
,为任何输入通道不指定名称。
或者,您可以使用自动矢量展开为多输入模型分配输入名称。例如,如果sys
是双输入模型,输入如下:
sys。InputName =“控制”;
输入名称自动展开为{“控制(1)”,“控制”(2)}
.
你可以使用速记符号u
请参阅InputName
财产。例如,sys.u
等于sys。InputName
.
使用InputName
:
确定模型显示和图上的通道。
提取MIMO系统的子系统。
在连接模型时指定连接点。
InputUnit
- - - - - -输入通道单位”
(默认)|特征向量|字符向量的单元格数组输入通道单位,指定为以下之一:
字符向量,用于单输入模型。
字符向量的单元格数组,用于多输入模型。
”
,对于任何输入通道,不指定单位。
使用InputUnit
指定输入信号单位。InputUnit
对系统行为没有影响。
InputGroup
- - - - - -输入通道组输入通道组,指定为结构。使用InputGroup
将MIMO系统的输入通道分组,并以名称引用每一组。的字段名InputGroup
为组名,字段值为每个组的输入通道。例如,输入以下命令创建名为控制
而且噪音
包括输入通道1
而且2
,3.
而且5
,分别。
sys.InputGroup.controls = [1 2];sys.InputGroup.noise = [3 5];
然后,您可以从控制
输入到所有输出使用以下。
sys (:,“控制”)
默认情况下,InputGroup
是一个没有字段的结构。
OutputName
- - - - - -输出通道名称”
(默认)|特征向量|字符向量的单元格数组输出通道名,指定为以下之一:
字符向量,用于单输出模型。
字符向量的单元格数组,用于多输出模型。
”
,为任何输出通道不指定名称。
或者,您可以使用自动矢量展开为多个输出模型分配输出名称。例如,如果sys
是双输出模型,输入如下。
sys。OutputName =“测量”;
输出名称自动展开为{“测量(1)”,“测量”(2)}
.
您也可以使用简写符号y
请参阅OutputName
财产。例如,sys.y
等于sys。OutputName
.
使用OutputName
:
确定模型显示和图上的通道。
提取MIMO系统的子系统。
在连接模型时指定连接点。
OutputUnit
- - - - - -输出通道单元”
(默认)|特征向量|字符向量的单元格数组输出通道单位,指定为以下之一:
字符向量,用于单输出模型。
字符向量的单元格数组,用于多输出模型。
”
,对于任何输出通道,不指定单位。
使用OutputUnit
指定输出信号单位。OutputUnit
对系统行为没有影响。
OutputGroup
- - - - - -输出通道组输出通道组,指定为结构。使用OutputGroup
将MIMO系统的输出通道分组,并以名称引用每组。的字段名OutputGroup
为组名,字段值为每个组的输出通道。例如,创建名为温度
而且测量
包括输出通道1
,3.
而且5
,分别。
sys.OutputGroup.temperature = [1];sys.InputGroup.measurement = [3 5];
然后可以从所有输入中提取子系统测量
使用以下命令输出。
系统(“测量”:)
默认情况下,OutputGroup
是一个没有字段的结构。
笔记
- - - - - -指定的文本{}
(默认)|特征向量|字符向量的单元格数组希望与系统关联的用户指定的文本,指定为字符向量或字符向量的单元格数组。例如,“系统是MIMO”
.
用户数据
- - - - - -用户指定的数据[]
(默认)|任何MATLAB数据类型您想要与系统关联的用户指定的数据,指定为任何MATLAB数据类型。
的名字
- - - - - -系统名称”
(默认)|特征向量系统名称,指定为字符向量。例如,“system_1”
.
SamplingGrid
- - - - - -模型阵列的采样网格用于模型数组的采样网格,指定为结构数组。
使用SamplingGrid
跟踪与模型数组中每个模型相关的变量值。
将结构的字段名设置为采样变量的名称。将字段值设置为与数组中每个模型关联的采样变量值。所有采样变量必须是数值标量,所有采样值的数组必须与模型数组的尺寸相匹配。
例如,你可以创建一个11 × 1的线性模型数组,sysarr
,通过对线性时变系统进行快照T = 0:10
.下面的代码使用线性模型存储时间样本。
sysarr。SamplingGrid = struct(“时间”0:10)
类似地,你可以创建一个6乘9的模型数组,米
,通过独立抽样两个变量,ζ
而且w
.下面的代码映射(ζ,w)
值米
.
[zeta,w] = ndgrid(zeta> <6个值,w > <9个值)“ζ”ζ,' w 'w)
默认情况下,SamplingGrid
是一个没有字段的结构。
下面的列表显示了可以使用的函数mechss
模型对象。
sparssdata |
访问一阶稀疏状态空间模型数据 |
mechssdata |
访问二阶稀疏状态空间模型数据 |
showStateInfo |
稀疏模型的状态向量映射 |
间谍 |
可视化稀疏模型的稀疏模式 |
对于本例,考虑文件中受脉冲点荷载影响的三维梁模型的稀疏矩阵sparseBeam.mat
.
提取稀疏矩阵sparseBeam.mat
.
负载(“sparseBeam.mat”,“米”,“K”,“B”,“F”,‘G’,' D ');
创建mechss
通过指定对对象建模[]
对矩阵C
,因为没有阻尼。
sys = mechss(M,[],K,B,F,G,D)
具有3输出1输入3408自由度的稀疏连续时间二阶模型。使用“spy”和“showStateInfo”检查模型结构。键入“properties('mechss')”以获取模型属性列表。输入“help mechssOptions”以获取此模型的可用求解器选项。
输出sys
是一个mechss
模型对象,包含一个3 × 1的稀疏模型数组,具有3408个自由度、1个输入和3个输出。
您可以使用间谍
命令来可视化的稀疏性mechss
模型对象。
间谍(系统)
对于本例,考虑文件中离散系统的稀疏矩阵discreteSOSparse.mat
.
加载稀疏矩阵discreteSOSparse.mat
.
负载(“discreteSOSparse.mat”,“米”,“C”,“K”,“B”,“F”,‘G’,' D ',“t”);
创建离散时间mechss
通过指定采样时间对对象建模ts
.
sys = mechss(M,C,K,B,F,G,D,ts)
具有1输出,1输入,28408个自由度的稀疏离散时间二阶模型。使用“spy”和“showStateInfo”检查模型结构。键入“properties('mechss')”以获取模型属性列表。输入“help mechssOptions”以获取此模型的可用求解器选项。
输出sys
是离散时间吗mechss
具有28408个自由度、1个输入和1个输出的模型对象。
您可以使用间谍
控件的稀疏模式可视化mechss
模型对象。您可以右键单击图以选择要显示的矩阵。
间谍(系统)
对于本例,请考虑sparseSOArray.mat
其中包含三组稀疏矩阵,它们定义了多个稀疏二阶状态空间模型。
提取数据sparseSOArray.mat
.
负载(“sparseSOArray.mat”);
预分配一个3 × 1的数组mechss
模型。
Sys = mechss(0 (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,[]);大小(系统)
稀疏二阶模型的3x1数组。每个模型有1个输出,1个输入,自由度在385到738之间。
方法也可以创建稀疏二阶模型的数组堆栈
当您的模型具有相同的I/O大小。
The MathWorks, Inc .版权所有2020
建立静态增益MIMO稀疏二阶状态空间模型。
考虑下面的双输入三输出静态增益矩阵:
指定增益矩阵,建立静态增益稀疏二阶状态空间模型。
D = [1,5;2,3;5,9];sys = mechss(D);大小(系统)
3输出2输入0自由度的稀疏二阶模型。
对于本例,请考虑sparseSOSignal.mat
其中包含质量、刚度和阻尼稀疏矩阵。
加载稀疏矩阵sparseSOSignal.mat
并创建稀疏二阶模型对象。
负载(“sparseSOModel.mat”,“米”,“C”,“K”);sys = mechss(M,C,K);
mechss
创建模型对象sys
假设如下:
的单位矩阵B
而且F
与质量矩阵大小相同米
.
零矩阵G
而且D
.
对于本例,请考虑sparssModel.mat
包含桅杆
模型对象ltiSys
.
加载桅杆
的模型对象sparssModel.mat
.
负载(“sparssModel.mat”,“ltiSys”);ltiSys
具有1个输出、1个输入和354个状态的稀疏连续时间状态空间模型。使用“spy”和“showStateInfo”检查模型结构。键入“properties('sparss')”以获取模型属性列表。输入“help sparssOptions”以获取此模型的可用求解器选项。
使用mechss
要转换为mechss
建模对象表示。
sys = mechss(ltiSys)
具有1输出,1输入,354自由度的稀疏连续时间二阶模型。使用“spy”和“showStateInfo”检查模型结构。键入“properties('mechss')”以获取模型属性列表。输入“help mechssOptions”以获取此模型的可用求解器选项。
对于本例,请考虑tuningForkData.mat
这包含了一个稀疏的二阶模型,一个音叉被轻轻地但快速地敲击在它的一个尖上。该系统有一个输入,即施加在其中一个音叉上的压力,产生两个输出——音叉顶端和底部的位移。
加载稀疏矩阵tuningForkData.mat
并创建mechss
模型对象。
负载(“tuningForkData.mat”,“米”,“K”,“B”,“F”);sys = mechss(M,[],K,B,F,“InputName”,“压力”,“Outputname”,{“y”提示,“x基地”})
接下来,通过设置模型的求解器选项UseParallel
参数真正的
和DAESolver
使用trbdf3
.使用间谍
检查模型结构。启用并行计算需要并行计算工具箱™许可证。
sys.SolverOptions.UseParallel = true;sys.SolverOptions.DAESolver =“trbdf3”;间谍(系统)
你也可以用showStateInfo
检查组件。
showStateInfo(系统)
使用一步
得到系统的阶跃响应图。您需要为稀疏模型提供时间向量或最终时间。
T = linspace(0,0.5,1000);步骤(sys, t)
接下来,得到波德图来检验频率响应。您需要为稀疏模型提供频率向量。
W = logspace(1,5,1000);波德(sys, w),网格
对于本例,请考虑sparseSOSignal.mat
它包含一个稀疏的二阶模型。定义执行器、传感器和控制器,并将它们与装置连接在一个反馈回路中。
加载稀疏矩阵并创建mechss
对象。
负载sparseSOSignal.matplant = mechss(M,C,K,B,F,[],[],“名字”,“植物”);
接下来,使用传递函数创建执行器和传感器。
Act = tf(1,[1 0.5 3],“名字”,“执行机构”);Sen = tf(1,[0.02 7],“名字”,“传感器”);
为工厂创建一个PID控制器对象。
Con = pid(1,1,0.1,0.01,)“名字”,“控制器”);
使用反馈
命令将设备、传感器、执行器和控制器连接到一个反馈回路中。
系统=反馈(sen*plant*act*con,1)
具有1输出,1输入,7111自由度的稀疏连续时间二阶模型。使用“spy”和“showStateInfo”检查模型结构。键入“properties('mechss')”以获取模型属性列表。输入“help mechssOptions”以获取此模型的可用求解器选项。
合成系统sys
是一个mechss
对象自mechss
对象优先于所有其他模型对象类型。
使用showStateInfo
查看组件和信号组。
showStateInfo(系统)
状态组包括:类型名称大小-------------------------------部件传感器1部件工厂7102信号1部件执行器2信号1部件控制器2信号1信号1
使用xsort
对组件和信号进行排序,然后查看组件和信号组。
sysSort = xsort(sys);showStateInfo (sysSort)
状态组包括:类型名称大小-------------------------------部件传感器1部件工厂7102部件执行器2部件控制器2信号4
注意,现在组件的顺序在信号分区之前。信号现在被排序和分组在一个单独的分区。
您还可以使用可视化结果系统的稀疏模式间谍
.
间谍(sysSort)
对于本例,考虑一个结构模型,该模型由两个方板组成,每个顶点上都有柱子相连,如下图所示。较低的板被刚性地固定在地面上,而柱子则被刚性地固定在正方形板的每个顶点上。
加载包含的有限元模型矩阵platePillarModel.mat
并建立了表示上述系统的稀疏二阶模型。
负载(“platePillarModel.mat”) sys =...mechss (M1, [], K1, B1, F1,“名字”,“Plate1”) +...mechss (M2, [], K2, B2, F2,“名字”,“Plate2”) +...mechss (Mp, [], Kp,英国石油(Bp)的领导下,金融产品部,“名字”,“Pillar3”) +...mechss (Mp, [], Kp,英国石油(Bp)的领导下,金融产品部,“名字”,“Pillar4”) +...mechss (Mp, [], Kp,英国石油(Bp)的领导下,金融产品部,“名字”,“Pillar5”) +...mechss (Mp, [], Kp,英国石油(Bp)的领导下,金融产品部,“名字”,“Pillar6”);
使用showStateInfo
检查的组成部分mechss
模型对象。
showStateInfo(系统)
状态组包括:类型名称大小---------------------------- Component Plate1 2646 Component Plate2 2646 Component Pillar3 132 Component Pillar4 132 Component Pillar5 132 Component Pillar6 132
现在,加载接口自由度(DOF)索引数据dofData.mat
和使用接口
在两个板块和四根柱子之间建立物理连接。自由度
是一个6 x7
单元格数组,其中前两行包含第一和第二板的自由度索引数据,而其余四行包含四个支柱的索引数据。
负载(“dofData.mat”,“自由度”)为I =3:6 sys = interface(sys,“Plate1”,自由度{1,},“支柱”+我,自由度{我1});Sys = interface(Sys,“Plate2”,自由度{2,},“支柱”+我,自由度{我2});结束
说明底板与地面之间的连接。
sysCon = interface(sys,“Plate2”,自由度{2,7});
使用showStateInfo
确认物理接口。
showStateInfo (sysCon)
国家组织:类型名的大小 ----------------------------------- 组件Plate1 2646组件Plate2 2646组件Pillar3 132组件Pillar4 132组件Pillar5 132组件Pillar6 132接口Plate1-Pillar3 12接口Plate2-Pillar3 12接口Plate1-Pillar4 12接口Plate2-Pillar4 12接口Plate1-Pillar5 12接口Plate2-Pillar5 12接口Plate1-Pillar6 12接口Plate2-Pillar6 12接口Plate2-Ground 6
你可以用间谍
将最终模型中的稀疏矩阵可视化。
间谍(sysCon)
本例的数据集由来自ASML的Victor Dolk提供。
H. Hilber, T. Hughes & R. Taylor。”结构动力学中时间积分算法的改进数值耗散。”地震工程与结构动力学“,第5卷第5期。3,页283-292,1977。
M.何西阿和L.香皮恩。TR-BDF2的分析与实现应用数值数学,第20卷,no。1-2页,第21-37页,1996。
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。