【状态估计】用于描述符 LTI 和 LPV 系统的分析、状态估计和故障检测的算法(Matlab代码实现)

article/2025/9/11 19:32:10
💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥


🏆 博主优势: 🌞 🌞 🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。


座右铭:行百里者,半于九十。

📋 📋 📋 本文目录如下: 🎁 🎁 🎁
目录
💥1 概述
📚2 运行结果
🎉3 参考文献
🌈4 Matlab代码、数据、文章讲解

💥1 概述

文献来源:

摘要:本文讨论了在LTI或LPV描述子框架中建模的系统的MATLAB/SCILAB工具箱的开发。给出了正则性、可解性、可控性和可观测性。包括全阶观测器和降阶观测器,比例观测器和比例积分观测器。其中一些观察人士考虑了未知的输入。可以作为基于状态估计和故障检测的观测器的辅助工具。这些观察者已经从最近发表的几篇论文中得到了考虑。通过建立观测库来实现故障的检测和隔离。这些观察者库可以通过选择输入/输出矩阵来建立,也可以使用所提出的算法自动建立。

许多系统都可以用非线性微分方程来建模,但是监控系统的设计是一项困难的任务。因此,对非线性系统进行线性化以获得线性时不变(LTI)系统是非常常见的,但这种表示在一个平衡点或工作点附近是有效的。

改进模型表示的一种方法是包含一些限制。如果限制是模型的一部分,那么系统就变成了描述符- lti (DLTI)表示。DLTI系统的主要优点是集成了静态关系(例如物理约束)和动态关系。这些考虑允许对广泛的过程进行建模,例如,在Dai, 1989;段,2010)。

Luenberger观测者存在的充分条件在(Hou and Muller, 1999;Darouach和Boutayeb, 1995)。(Darouach等人,1996)的作者提出了一种降阶未知输入观测,类似于(Chen和Patton, 1999)中研究的LTI系统的观测器。

详细文章讲解及数学模型见第4部分。

📚2 运行结果

部分代码:

xe=[ 1 5 3 0]'% intial stimated states

ye(:,1)=C*xe % compute the initial output

t(1)=0;% initial time

u(1)=0;

% observer gains

% % if the system is observable then compute the restricted system equivalence systems by QR descomposition

disp('Simulation')

for k=1:50/Te

% Time counter

t(k+1)=t(k)+Te;

% input

if t(k)<7

u(k+1)=1;

else

u(k+1)=5;

end

% % the differentials equations can be solved by runge-kuta of four order

x1=x1+Te*(x3);

x2=x2+Te*(x1);

x4=x1;

x3=-x2-x4+u(k);

xx(:,k+1)=[x1 x2 x3 x4]';

y(:,k+1)=C*xx(:,k+1); % system output

% Observer

yi=[-Be1*u(k);y(:,k)]; % auxiliar for compute the observer

% Reduced order observer

% $z=Piz+Lyi+H*u $

% $\hat{x}=Mz+Fyi$

z(k+1)=z(k)+Te*(Pi*z(k)+L*yi+H*u(k)); %

xe(:,k+1)=M*z(k)+F*yi;

ye(:,k+1)=C*xe(:,k+1); % stimated output

% Generation of residuos

end

disp('PLOTS')

pause

figure(2);

cla();

plot(t,y',t,ye')

legend('output', 'stimated')

n=size(A,1);

m=size(B1,2);

p=size(C,1);

if flag==1

P=sdpvar(n,n);

Y=sdpvar(m,n,'full');

Q=sdpvar(1,n,'full');

sdpvar g

% g=0.1

alpha=0;

Con=[P>=0,g>=0];

LMI=blkvar();

LMI(1,1)= (P*E'+S*Q)'*A'+Y'*B1'+A*(P*E'+S*Q)+B1*Y+B*B'+2*alpha*P;

LMI(1,2)=E*P'*C'+Q'*S'*C'+Y'*B2';

% (P*E'+S*Q)'*C'+Y'*B2';

LMI(2,2)=-g*eye(p);

LMI=sdpvar(LMI);

Con=[Con, LMI<=0]

op=sdpsettings('verbose',0,'solver','sedumi','sedumi.eps',1e-5);

solvesdp(Con,[],op)

P=double(P);

Y=double(Y);

Q=double(Q);

g=double(g);

% K=Y/((P*E'+S*Q))

K=Y/((P*E'+S*Q))

lamda=deig(A+B1*K,E)

% [Ccon, Rcon, Icon]=dcontr (E,A+B*K,B)

elseif flag==2

% g=0.01100

cvx_begin sdp

cvx_precision default

cvx_solver sedumi

variable g

variable P(n,n) symmetric

variable Y(m,n)

variable Q(1,n)

minimize g

P >= 0

[ (P*E'+S*Q)'*A'+Y'*B1'+A*(P*E'+S*Q)+B1*Y+B*B' E*P'*C'+Q'*S'*C'+Y'*B2' ; ...

(E*P'*C'+Q'*S'*C'+Y'*B2')' -g*eye(p)] <= 0

cvx_end

gamma = sqrt(g)

K=Y/((P*E'+S*Q));

lamda=deig(A+B1*K,E)

else

setlmis([]);

% create a blank LTI framework

P=lmivar(1,[n 1]); % declare X as a 3 脳 3 symmetrical matrix

Y=lmivar(2,[m n]); % declare Y as a n x n

Q=lmivar(2,[1 n]); % declare

lmiterm([1 1 1 P],A,E','s') % A*P*E' + *

lmiterm([1 1 1 Q],A*S,1,'s') % A*S*Q+*

lmiterm([1 1 1 Y],B1,1,'s') % B*Y+*

lmiterm([1 1 1 0],B*B') % B*B'+*

lmiterm([1 1 2 P'],E,C') % E*P'*C'

lmiterm([1 1 2 Q'],1,S'*C') % Q'*S'*C'

lmiterm([1 1 2 Y'],1,B2') % E*P'*C'

% lmiterm([1 1 1 P],2*5,1,'s') % B*Y+*

lmiterm([-2 1 1 P],1,1,'s') % P>0

% lmiterm([-3 1 1 Q],1,1) % P>0

Con=getlmis;

% c = mat2dec(Con,eye(3),eye(3),eye(1,n));

% options = [1e5,0,0,0,0];

% [copt,b] = mincx(Con,c,options);

[tmin b]=feasp(Con);

% [tmin b]=mincx(Con,-trac);

P=dec2mat(Con,b,P);

Y=dec2mat(Con,b,Y);

Q=dec2mat(Con,b,Q);

K=Y/((P*E'+S*Q));

lamda=deig(A+B*K,E);

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

编辑

🌈4 Matlab代码、数据、文章讲解


http://chatgpt.dhexx.cn/article/nR2smgJV.shtml

相关文章

Global Illumination_Light Propagation Volumes (LPV)

文章具体参照 https://ericpolman.com/ 本方法的思想就是把场景分成很多的小格子&#xff0c;然后计算每一个小格子里面的光照&#xff08;LPV&#xff09;。如果直接计算每个格子里面的光照那代价也是不可接受的&#xff0c;因此本算法用了一种很巧妙的方式来处理&#xff1…

LPV(Light Propagation Volumes)

lpv 测试了Light Propagation Volumes&#xff0c;全实时没有任何预处理的GI&#xff0c;而且可以适用任意场景。 文档很长&#xff0c;不过基本原理还是比较直白的&#xff1a; 生成reflect shadow map(rsm)。 将rsm信息用SH系数方式注入一个volumetexture中。 …

【GAMES-202实时渲染】4、3D空间全局光照(RSM、LPV、VXGI)

Lec7~8 1、Reflective Shadow Maps&#xff08;RSM&#xff09;2、Light Propagation Volumes&#xff08;LPV&#xff09;3、Voxel Global Illumination&#xff08;VXGI&#xff09; 1、Reflective Shadow Maps&#xff08;RSM&#xff09; RSM是一个特别经典的计算全局光照…

lpv

测试了Light Propagation Volumes&#xff0c;全实时没有任何预处理的GI&#xff0c;而且可以适用任意场景。 文档很长&#xff0c;不过基本原理还是比较直白的&#xff1a; 生成reflect shadow map(rsm)。 将rsm信息用SH系数方式注入一个volumetexture中。 在vol…

操作系统经典 pv过桥问题

Semophere bridge1; Semophere mutexNS1,mutexSN1;//用于保护countNS,countSN int countNS0,countSN0; Semophere s11,s20;//用于交替通过 StoN(){while(1){P(mutexSN);countSN;//来车了v(mutexSN);p(mutexSN);if(countNS0){//对面无车,则直接通过P(bridge);通过countSN--;V…

C语言解决四人/多人过桥问题

参加笔试的时候遇到一道经典的算法题&#xff0c;四人过桥问题。当时没写出来&#x1f605;。 四人过桥问题&#xff1a;在一个黑夜里&#xff0c;有四个人需要过桥&#xff0c;每次只能通过两人&#xff0c;其中一人必须拿着手电筒&#xff1b;但只有一个手电筒&#xff0c;所…

小明过桥问题

小明家必须要过一座桥。小明过桥最快要&#xff11;秒&#xff0c;小明的弟弟最快要&#xff13;秒&#xff0c;小明的爸爸最快要&#xff16;秒&#xff0c;小明的妈妈最快要&#xff18;秒&#xff0c;小明的爷爷最快要&#xff11;&#xff12;秒。每次此桥最多可过两人&…

过桥问题

在一个夜黑风高的晚上&#xff0c;有n&#xff08;n < 50&#xff09;个小朋友在桥的这边&#xff0c;现在他们需要过桥&#xff0c;但是由于桥很窄&#xff0c;每次只允许不大于两人通过&#xff0c;他们只有一个手电筒&#xff0c;所以每次过桥的两个人需要把手电筒带回来…

过桥问题的通解

问题一,一个典型过桥问题: 小明一家5口人在夜晚过一座桥,小明过桥要1分钟,小明的弟弟过桥要3分钟,小明的爸爸过桥要6分钟,小明的妈妈过桥要8分钟,小明的爷爷过桥要12分钟;这座桥每次只能过2个人,因是夜晚,过桥时必须提着灯,小明有一只灯,点燃后30分钟会熄灭,问怎…

如何打开tdms文件?

https://www.zhihu.com/question/305029962/answer/1203851780v 下载地址 http://www.ni.com/example/27944/en/ 还有一个综述&#xff0c;写的挺好&#xff01; https://wenku.baidu.com/view/c62700e4aa00b52acec7ca09.html

转载:TDM协议

转自http://www.wangdali.net/i2s/ 1. PCM简介 PCM (Pulse Code Modulation) 是通过等时间隔(即采样率时钟周期)采样将模拟信号数字化的方法。图11为4 bit 采样深度的PCM数据量化示意图。 图11. 4-bit PCM的采样量化 PCM数字音频接口,即说明接口上传输的音频数据通过PCM…

02 - DDMS

目录 一. DDMS 是什么&#xff1f; 二. 工作原理 三. ddmlib 1.ddmlib简介 总结 一. DDMS 是什么&#xff1f; DDMS 的全称是DalvikDebug Monitor Service&#xff0c;是 Android 开发环境中的Dalvik虚拟机调试监控服务。提供测试设备截屏、查看特定进程正在运行的线程以及堆信…

LabVIEW将现有数据文件映射至TDMS数据文件格式

LabVIEW将现有数据文件映射至TDMS数据文件格式 在某些情况下&#xff0c;可能无法使用TDMS文件格式&#xff0c;例如客户或供应商指定必须使用某种格式存储数据。有些传统仪器可能会自动使用某种自定义格式提供数据输出文件。此外&#xff0c;已经用某种方式收集的传统测量数据…

Matlab打开LabVIEW的tdm/tdms文件

1. 下去NI官网下载 MATLAB TDM Example文件 。 网址&#xff1a;Reading TDM/TDMS Files with The MathWorks, Inc. MATLAB Software - NI Community 这里我两个文件都下载了&#xff0c;但是只打开了2020那个&#xff0c;能用我就没看sp2010那个是干嘛的。 2. 使用Matlab打…

Labview-关于TDMS文件逻辑的学习-从今天开始学习Labview

1. TDMS文件的逻辑格式 TDMS文件的逻辑格式遵循TDM三层结构&#xff0c;仍然是文件、通道组、通道三层。用户在使用时只需要关心这三层就行了。2. TDMS文件API TDMS文件格式基本上可以称为NI用在测试测量领域的通用数据文件格式&#xff0c;LabVIEW, CVI/LabWindows, Signal Ex…

[Matlab科学计算] Matlab打开Labview保存的TDMS文件

1. TDMS文件简单介绍 TDMS文件格式由三个层次结构级别组成&#xff1a;文件、组、通道。文件级别可包含任意数量的组&#xff0c;而每个组又可包含任意数量的通道。通过通道分组&#xff0c;用户可以选择如何组织数据以使其更易于理解。每​个​TDMS​文件​都​包含​两​种​…

JAVA解析TDMS文件

2023年更新&#xff1a; 没想到还有人关注&#xff0c;上传了最新代码 https://github.com/yc97/TDMSDecoder 该代码经过测试&#xff0c;基本没什么bug了 reference: http://www.eefocus.com/Junking/blog/12-07/281264_7bf69.html http://www.ni.com/white-paper/14252/zh…

LabVIEW写入可快速加载的TDMS文件

LabVIEW写入可快速加载的TDMS文件 TDMS文件格式的设计目的是在尽可能快地读写数据的同时仍保持足够的灵活性来适应采集过程中通道数量和采样率的变化。 但是数据读写速度快的文件未必可快速加载。 TDMS文件是一个完全的二进制文件&#xff0c;由多个部分数据段组成&#xff0c;…

LabVIEW TDMS连续写入内存增长

LabVIEW TDMS连续写入内存增长 每次执行TDMS写入VI时&#xff0c;内存&#xff08;RAM&#xff09;使用量都会略有增加。这是内存泄漏吗&#xff0c;如何防止内存使用量增加&#xff1f; 解答 此问题有几种可能的解决方案&#xff1a; TDMS文件的引用可能没有适当地关闭。对…

Matlab查看tdms文件

由于最近项目需要使用Labview开发解调设备&#xff0c;对于高速采集卡就需要使用tdms存储数据&#xff08;存储的数据量较大&#xff09;&#xff0c;而用matlab无法对tdms格式文件进行直接读取&#xff0c;所以查找一些相关博客&#xff0c;解决了读取的问题。&#xff08;以下…