




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、function S = dosim(T, cda, cdm, cm, sr_scale, sq_scale, stq_C, stq_F, stq_S)global d2r r2d;d2r = pi/180.0; % constant to convert degree to radianr2d = 180.0/pi; % constant to convert radian to degree% temporal parametersstime = T.stime; % length of sim secondmrate = T.mrate; % measurement rate 1/sec
2、onddt = 1/mrate;% water level limitsL_min = T.L_min; % where start filling, etc. meterL_max = T.L_max; % full meter% Measurement device parametersglobal db df ka kl;db = T.db; % Base for angular sensor, just above the max water meterdf = T.df; % Angular sensor arm w/ float, long enough to hit bottom
3、 on empty meterka = T.ka; % Angular/non-linear float scale constantkl = T.kl; % Level/linear float parameters scale constant% Sloshing (sinusoidal) parameterssf = T.sf; % slosh/sin frequency 1/secondsp = T.sp; % slosh phase degree% measurement noise magnitudessrl_m = sr_scale*T.srl_m; % stdev of lev
4、el/linear sensor noise metersra_d = sr_scale*T.sra_d; % stdev of angule/non-linear sensor noise degreeif (nargin = 6) % normal situationstq_C(1) = 5.9609e-05; % Tuned Constant w/ linear measstq_C(2) = 3.5936e-05; % Tuned Constant w/ angular meassq_C = mean(stq_C); % avg of the twostq_F(1) = 1.9638;
5、% Tuned Filling w/ linear measstq_F(2) = 2.027; % Tuned Filling w/ angular meassq_F = mean(stq_F); % avg of the twostq_S(1) = 5.9609e-05; % Tuned Sloshing w/ linear measstq_S(2) = 5.9609e-05; % Tuned Sloshing w/ angular meassq_S = mean(stq_S); % avg of the two% special tune case for filling and slos
6、hingif (cdm = 'FS')stq_F(1) = 0.0028009; % Tuned Filling w/ linear measstq_F(2) = 0.0021271; % Tuned Filling w/ angular meassq_F = mean(stq_F); % avg of the twostq_S(1) = 0.0014462; % Tuned Sloshing w/ linear measstq_S(2) = 0.0010254; % Tuned Sloshing w/ angular meassq_S = mean(stq_S); % avg
7、 of the twoendelseif (nargin = 9) % tuning the filterssq_C = stq_C;sq_F = stq_F;sq_S = stq_S;elseerror('Incorrect number of input arguments for dosim.m.')end% Measurement modelif (cm = 'L')mtype = 1;elseif (cm = 'A')mtype = 2;elseerror('Unkown measurement model.');end
8、% Set up the dynamic model parameters based on the input selector cdmswitch cdmcase 'C' % Constant level% State dimensionsd = 1;% Dynamic/process model% see Section 1.2.1 in document "models"A = zeros(1,1,T.nmeas);A(1,1,:) = 1;qc = (sq_scale*sq_C)2; % scale qc then square for varia
9、nceQ = zeros(1,1,T.nmeas);Q(1,1,:) = qc*dt;% Set aside space for resultsS.Xp = zeros(sd,T.nmeas); % predicted state (X)S.Xc = zeros(sd,T.nmeas); % correctedS.Pp = zeros(sd,sd,T.nmeas); % predicted covariance (P)S.Pc = zeros(sd,sd,T.nmeas); % correctedS.Zp = zeros(1,T.nmeas); % predicted measurement
10、(Z)S.K = zeros(sd,T.nmeas); % Kalman gain% Initialize filterL_init = L_max/2.0; % initial guessS.Xp(1,1) = L_init;S.Xc(1,1) = L_init;S.Pp(1:1,1:1,1) = L_max2;S.Pc(1:1,1:1,1) = L_max2;case 'F' % Filling% State dimensionsd = 2;% Dynamic/process model% see Section 1.2.2 and equations (4) and (5
11、) in document "models"A = zeros(sd,sd,T.nmeas);for m=1:T.nmeasA(1,1,m) = 1;A(2,2,m) = 1;A(1,2,m) = dt;endQ = zeros(sd,sd,T.nmeas);qc = (sq_scale*sq_F)2; % scale qc then square for variancefor m=1:T.nmeasQ(1,1,m) = qc*dt3/3.0;Q(1,2,m) = qc*dt2/2.0;Q(2,1,m) = Q(1,2,m);Q(2,2,m) = qc*dt;end% S
12、et aside space for resultsS.Xp = zeros(sd,T.nmeas); % predicted state (X)S.Xc = zeros(sd,T.nmeas); % correctedS.Pp = zeros(sd,sd,T.nmeas); % predicted covariance (P)S.Pc = zeros(sd,sd,T.nmeas); % correctedS.Zp = zeros(1,T.nmeas); % predicted measurement (Z)S.K = zeros(sd,T.nmeas); % Kalman gain% Ini
13、tialize filterL_init = L_max/2.0; % initial guessS.Xp(1,1) = L_init;S.Xc(1,1) = L_init;S.Pp(:,:,1) = L_max2,0;0,(L_max/stime)2;S.Pc(:,:,1) = L_max2,0;0,(L_max/stime)2;case 'S' % Sloshing% State dimensionsd = 2;% Dynamic/process model% see Section 1.2.3 and equations (6) and (7) in document &
14、quot;models"A = zeros(sd,sd,T.nmeas);w = 2*pi*sf; % omegafor m=1:T.nmeasA(1,1,m) = 1;A(2,2,m) = 1;A(1,2,m) = w*cos(w*T.ts(m)+sp*d2r);endQ = zeros(sd,sd,T.nmeas);qc = (sq_scale*sq_S)2; % scale qc then square for variancefor m=1:T.nmeasQ(1,1,m) = qc*w2*cos(w*T.ts(m)2*dt*(3*T.ts(m)2+3*T.ts(m)*dt+d
15、t2)/3.0;Q(1,2,m) = w*cos(w*T.ts(m)*qc*dt*(2*T.ts(m) + dt)/2.0;Q(2,1,m) = Q(1,2,m);Q(2,2,m) = qc*dt;end% Set aside space for resultsS.Xp = zeros(sd,T.nmeas); % predicted state (X)S.Xc = zeros(sd,T.nmeas); % correctedS.Pp = zeros(sd,sd,T.nmeas); % predicted covariance (P)S.Pc = zeros(sd,sd,T.nmeas); %
16、 correctedS.Zp = zeros(1,T.nmeas); % predicted measurement (Z)S.K = zeros(sd,T.nmeas); % Kalman gain% Initialize filterL_init = L_max/2.0; % initial guessS.Xp(1,1) = L_init;S.Xc(1,1) = L_init;S.Xp(2,1) = T.sm; % temp - cheatS.Xc(2,1) = T.sm;S.Pp(:,:,1) = L_max2,0;0,(L_max/2)2;S.Pc(:,:,1) = L_max2,0;
17、0,(L_max/2)2;case 'FS' % Filling and Sloshing% State dimensionsd = 3;% Dynamic/process model% see Section 1.2.4 and equations (8) and (9) in document "models"A = zeros(sd,sd,T.nmeas);w = 2*pi*sf; % omegafor m=1:T.nmeasA(1,1,m) = 1;A(2,2,m) = 1;A(3,3,m) = 1;A(1,2,m) = dt;A(1,2,m) =
18、w*cos(w*T.ts(m)+sp*d2r);endQ = zeros(sd,sd,T.nmeas);qcs = (sq_scale*sq_S)2; % scale qc then square for varianceqcf = (sq_scale*sq_F)2; % scale qc then square for variancefor m=1:T.nmeasQ(1,1,m) = dt*(dt2+3*T.ts(m)2+3*T.ts(m)*dt)*(qcf+w2*cos(w*T.ts(m)2*qcs)/3.0;Q(1,2,m) = qcf*dt*(2*T.ts(m) + dt)/2.0;
19、Q(2,1,m) = Q(1,2,m);Q(1,3,m) = w*cos(w*T.ts(m)*qcs*dt*(2*T.ts(m)+dt)/2.0;Q(3,1,m) = Q(1,3,m);Q(2,2,m) = qcf*dt;Q(3,3,m) = qcs*dt;end% Set aside space for resultsS.Xp = zeros(sd,T.nmeas); % predicted state (X)S.Xc = zeros(sd,T.nmeas); % correctedS.Pp = zeros(sd,sd,T.nmeas); % predicted covariance (P)
20、S.Pc = zeros(sd,sd,T.nmeas); % correctedS.Zp = zeros(1,T.nmeas); % predicted measurement (Z)S.K = zeros(sd,T.nmeas); % Kalman gain% Initialize filterL_init = L_max/2.0; % initial guessS.Xp(1,1) = L_init;S.Xc(1,1) = L_init;S.Xp(3,1) = T.sm; % temp - cheatS.Xc(3,1) = T.sm;S.Pp(:,:,1) = L_max2,0,0; 0,(
21、L_max/stime)2,0; 0,0,(L_max/2)2;S.Pc(:,:,1) = L_max2,0,0; 0,(L_max/stime)2,0; 0,0,(L_max/2)2;otherwiseerror('Unknown dynamic model type.');end% Choose the set of measurements based on the input selector cda (actual dynamics)switch cdacase 'C' % Constant level% Measurement modelif (mt
22、ype = 1)Za = T.m.l.C; % actual measurementselseZa = T.m.a.C; % actual measurementsendcase 'F' % Filling level% Measurement modelif (mtype = 1)Za = T.m.l.F; % actual measurementselseZa = T.m.a.F; % actual measurementsendcase 'S' % Sloshing level% Measurement modelif (mtype = 1)Za = T.
23、m.l.S; % actual measurementselseZa = T.m.a.S; % actual measurementsendcase 'FS' % Filling and Sloshing level% Measurement modelif (mtype = 1)Za = T.m.l.FS; % actual measurementselseZa = T.m.a.FS; % actual measurementsendotherwiseerror('Unknown dynamic model type.');end% Measurement n
24、oise modelif (mtype = 1)% see Section 2.1 in document "models"R = (srl_m * kl)2;else% see Section 2.2 in document "models"R = (sra_d * ka)2;end% Loop through all measurementsfor k = 2:T.nmeas% predictS.Xp(:,k) = A(:,:,k)*S.Xc(:,k-1);S.Pp(:,:,k) = A(:,:,k)*S.Pc(:,:,k-1)*A(:,:,k)
25、39; + Q(:,:,k);% measurement prediction and JacobianS.Zp(k) = meas(S.Xp(:,k),mtype,sd);H = measJacobian(S.Xp(:,k),mtype,sd);% correctS.K(:,k) = S.Pp(:,:,k)*H'*inv(H*S.Pp(:,:,k)*H' + R); % Kalman gainS.Xc(:,k) = S.Xp(:,k) + S.K(:,k)*(Za(k)-S.Zp(k);S.Pc(:,:,k) = (eye(sd) - S.K(:,k)*H)*S.Pp(:,:,k
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 七夕节活动方案 (15篇)
- 《绿野仙踪》读后感集合15篇
- 绿色制造工艺改造项目可行性研究报告
- 空调与照明系统优化在标准厂房节能中的作用
- 海洋科技创新的路径与行动计划
- 光伏电站光伏区技改项目可行性研究报告
- 工业遗产活化利用项目可行性研究报告
- 高效能电机研发项目可行性研究报告
- 家庭对学生心理健康教育
- 新疆维吾尔自治区塔城地区乌苏市第一中学2022-2023学年高一下学期3月月考政治 含解析
- 《网店美工实训教程》教学教案
- 儿科护理学第二章生长发育
- 德语四级真题2023
- 2023届高考模拟作文“人生有两段路要走”漫画作文导写及范文
- 机电安装施工工艺及质量验收标准
- JB/T 20051-2018炒药机
- GB/T 18442.6-2019固定式真空绝热深冷压力容器第6部分:安全防护
- 五年制高职语文课程标准
- 试验检测程序流程图
- 南京师范大学介绍课件
- 干部人事档案专项审核认定表填写模板
评论
0/150
提交评论