排除在命令行线性化的结果
这个例子展示了如何调试的线性化模型®模型在命令行中使用金宝appLinearizationAdvisor
对象。你也可以排除交互式线性化的结果。有关更多信息,请参见排除在模型线性化电路线性化的结果。
打开模型。
mdl =“scdpendulum”;open_system (mdl)
摆角的初始条件90年
度直立不稳定平衡的逆时针方向0
度。摆角速度的初始条件0
度/ s。额定转矩保持这个状态-49.05
N m。保存该配置模型初始条件。
线性化模型
线性化模型使用分析点模型和模型中定义的操作点。
io = getlinio (mdl);linsys =线性化(mdl, io);
检查线性化的结果,其情节预示反应。
波德(linsys)
模型线性化零力矩,τ
没有影响的角度和角速度。找到零线性化的来源,您可以使用一个LinearizationAdvisor
对象。
启用了顾问的线性化模型
线性化过程中收集诊断信息并创建一个顾问故障排除,首先创建一个linearizeOptions
选项设置,指定StoreAdvisor
选择真正的
。
选择= linearizeOptions (“StoreAdvisor”,真正的);
线性化模型模型使用此选项设置金宝app,返回信息
输出参数,其中包含线性化诊断信息LinearizationAdvisor
对象。
[linsys1, ~,信息]=线性化(mdl, io、选择);
提取LinearizationAdvisor
对象。
顾问= info.Advisor;
强调线性化路径
显示当前的线性化的线性化路径,使用突出
。
突出(顾问)
查看摆子系统。
如线性化路径所示对话框中,突出显示的模块:
蓝色的数值影响模型线性化。
红色的线性化路径但不影响当前的操作点和块的模型线性化参数。
自模型线性化零,没有块导致线性化。
调查可能有问题的模块
获取诊断信息块可能有问题的线性化,使用建议
。这个函数返回一个新的LinearizationAdvisor
线性化路径的对象,其中包含的信息块,至少满足以下条件之一:
有诊断消息关于线性化
线性化到零
有代替线性化
adv1 =建议(顾问);
观点的总结这些块的诊断信息,使用getBlockInfo
。
getBlockInfo (adv1)
ans =线性化诊断模块:块信息:- - - - - - - - - - - -指数BlockPath路径有助于线性化线性化方法1。2,scdpendulum /摆/饱和度是的没有确切的消息。scdpendulum angle_wrap /三角Function1是的没有扰动3。scdpendulum /摆/三角函数对扰动
在这种情况下,可能产生问题顾问报告三块,一块饱和度和两个三角函数块。当你在MATLAB中运行这个例子,块路径显示为超链接。去其中一块模型中,点击相应的超链接块路径。
查看更多关于一个特定的块线性化的信息,使用getBlockInfo
。可用的诊断信息,请参阅BlockDiagnostic
。
例如,获得饱和的诊断信息块。
diagInfo = getBlockInfo (adv1, 1)
diagInfo =线性化诊断scdpendulum /摆/饱和度与属性:IsOnPath:‘是的’ContributesToLinearization:“不”LinearizationMethod:精确的线性化:[1 x1党卫军]OperatingPoint: [1 x1 linearize.advisor.BlockOperatingPoint]
这个街区有以下两个诊断消息关于其线性化的结果。
块分析线性化是零,因为外面的信号输入值(-49.05)的下限块(-49)。考虑线性化块作为一个利益。
物体的线性化至少有一个零输入/输出对导致零输入/输出对系统线性化。修改块参数和/或操作点如果块预计将导致模型线性化。
第一个消息表明,外块线性化的低饱和度的限制-49年
,因为输入操作点-49.05
。
消息也表明,块可以线性化增益,线性阻止1
无论输入操作点。
当你在MATLAB中运行这个例子,文本作为一个获得线性的块显示为超链接。打开饱和块的参数对话框,并强调线性化的选项块获得,点击这个链接。
选择治疗时获得线性化,然后单击好吧。
另外,您也可以从命令行设置该参数。
set_param (“scdpendulum /摆/饱和度”,“LinearizeAsGain”,“上”)
第二个诊断消息指出,这个块的线性化导致整体模型线性化零。查看这个块的线性化。
diagInfo.Linearization
ans u1日元= D = 0的名字:静态增益饱和。
因为这个块线性化至零,修改块线性化,把它作为一个增益是一个很好的第一步获得非零模型线性化。
Relinearize模型
看到治疗的效果作为增益饱和的块,relinearize模型,并绘制其预示反应。
[linsys2, ~,信息]=线性化(mdl, io、选择);波德(linsys2)
现在模型线性化零。
检查是否有块仍可能有问题的线性化,提取顾问对象,并使用建议
函数。
advisor2 = info.Advisor;adv2 =建议(advisor2);
查看块诊断信息。
getBlockInfo (adv2)
ans =线性化诊断模块:块信息:- - - - - - - - - - - -指数BlockPath路径有助于线性化线性化方法1。scdpendulum angle_wrap /三角Function1是的没有扰动2。scdpendulum /摆/三角函数对扰动
两个三角函数块仍然是上市。
突出的线性化路径更新后的线性化。
突出(advisor2)
查看摆子系统。
要理解为什么这些块不是导致线性化,查看相应的诊断信息。例如,获得第二个三角函数块的诊断信息。
diagInfo = getBlockInfo (adv2, 2)
diagInfo =线性化诊断scdpendulum /摆/三角函数的属性:IsOnPath:‘是的’ContributesToLinearization:“不”LinearizationMethod:扰动的线性化:[1 x1党卫军]OperatingPoint: [1 x1 linearize.advisor.BlockOperatingPoint]
查看这个块的线性化。
diagInfo.Linearization
ans u1日元= D = 0的名字:三角函数静态增益。
块线性化为零。看看这个结果预计当前块的操作条件,检查它的操作点。
diagInfo.OperatingPoint
ans = scdpendulum /摆块操作点/三角函数输入:- - - - - - - 1.5708端口1 u
输入块的操作点。
你可以找到物体的线性化分析的一阶导数的函数对输入的罪。
因此,当评估物体的线性化是零。输入的来源是第一个二阶积分器的输出,这是依赖于状态θ
。因此,如果这个块中渗流为零,在那里是一个整数。同等条件下申请的其他三角函数块angle_wrap子系统。如果不将这些块零线性化,您可以修改操作点的状态θ
,relinearize模型。
创建和运行自定义查询
线性化顾问还提供了对象和创建自定义查询的功能。使用这些查询,您可以找到匹配特定条件的块在你的模型。例如,找到所有的输出块使用数值摄动线性化,首先创建查询对象为每个搜索条件:
有一个输入
有一个输出
是数值摄动
秦= linqueryHasInputs (1);qOut = linqueryHasOutputs (1);qPerturb = linqueryIsNumericallyPerturbed;
创建一个CompoundQuery
对象通过结合这些查询对象使用逻辑运算符。
sisopert =秦& qOut & qPerturb;
搜索块诊断advisor2
块匹配这些标准。
sisopertBlocks =找到(advisor2 sisopert)
sisopertBlocks = LinearizationAdvisor属性:模型:“scdpendulum”OperatingPoint: [1 x1 opcond。OperatingPoint] BlockDiagnostics: [1 x3 linearize.advisor。BlockDiagnostic] QueryType: '((Has 1 Inputs & Has 1 Outputs) & Perturbation)'
有三个输出块在使用数值摄动线性化的模型。
有关使用自定义查询的更多信息,请参阅找块匹配特定条件的线性化的结果。
bdclose (mdl)