资源简介
动态矩阵DMC算法 matlab程序实现

代码片段和文件信息
function [ADMC A y_step m_nHP m_nHM ] = CalcStepResponseADMC( T0_gp k0_gp Ts m_nHP m_nHM bFigure nLoop Kp2)
% 被控对象 仿真,获取 阶跃响应 向量
% y_step = 被控对象 到 稳态 的完整的阶跃响应
% A : 动态矩阵
% ADMC : deltaU = ADMC * DMC_ye
% m_nHP : 预测时域长度
% m_nHM : 控制时域长度
%m_nHP = 100;
%m_nHM = 5;
%bFigure = true;
% 第一部分:被控对象的仿真
% 被控对象参数
%
% 传递来的缺省参数
% T0_gp=25; k0_gp = 10;
% h_gp = T0_gp / 50; % 被控对象 仿真 时间步长
% Tend = 10 * T0_gp / h_gp;
%---- 2013 试验汽温对象
%nLoop = 1; % 内回路
%nLoop = 2; % 外回路
n_gp=5; % 5阶对象 2阶在内回路,3阶在外回路
%T0_gp = [15 15 20 20 20];
%k0_gp = [8 1 1.125 1 1 ];
h_gp = 0.5; % 被控对象 仿真 时间步长
a_gp = exp( - h_gp ./ T0_gp );
b_gp = k0_gp .* ( 1 - a_gp );
iTimeSimuEnd = 4500; % 仿真长度
iTimeSS = 0; % 达到稳态 static state
% y_pv(: [内回路导前区汽温, 外回路惰性区汽温] )
y_pv = zeros(iTimeSimuEnd 2); % 存储仿真结果以h为仿真步长
y_step = zeros(m_nHP1); % 控制器用以 Ts 为采样周期
y_pv(11) = 0; % 初始状态 y1(0)=0
y_pv(12) = 0; % 初始状态 y2(0)=0
%%%%%%%%%%%%%%%%%%%%%%%%%%%导入采样数据值%%%%%%%%%%%%%%%%%%%%%%%%%%%
uk = 1;
if ( nLoop ==1 ) % 只内回路 的
yss = 0.9999 * k0_gp(1) *k0_gp(2) * uk; % 导前汽温稳态值
nypvCol = 1;
elseif( nLoop == 2 ) % 只外回路 的
yss = 0.9999 * k0_gp(1) *k0_gp(2) * k0_gp(3) *k0_gp(4) * k0_gp(5) * uk; % 出口惰性区汽温
nypvCol = 2;
elseif( nLoop == 3 ) % 内回路 P, 外回路 DMC
Kinss = ( k0_gp(1) * k0_gp(2) * Kp2 );
Kinss = Kinss / (1 + Kinss );
% yss = 0.9999 * Kinss / (1 + Kinss ) * uk ; % 以 内回路的稳态值,作为 ss
yss = 0.9999 * Kinss * k0_gp(3) *k0_gp(4) * k0_gp(5) * uk;
nypvCol = 2;
end
x = zeros(n_gp+11); % 仿真中间变量 x
x(1) = uk;
for ( it = 1 : iTimeSimuEnd-1 )
if( nLoop ==1 | nLoop== 2)
x(1) = uk; % 内回路开环的情形
elseif( nLoop == 3 )
x(1) = Kp2 *( uk - x(3) ) ; % 内回路采用P控制,KP=Kp2
end
for( inh = 1 : 5 )
x(inh+1) = a_gp(inh) * x(inh+1) + b_gp(inh) * x(inh);
end
y_pv(it+11) = x(3); y_pv(it+12) = x(6);
% 达到稳态,则退出仿真
% if( y_pv(it+11) > yss2 )
% iTimeSS = it+1;
% break;
% end
if( (y_pv(it+1nypvCol) > yss) & (iTimeSS == 0 ) )
iTimeSS = it+1;
break;
end
end
y_len = max ( it+1 iTimeSS) ; % 画图时,尽量取更多的数据
if( bFigure )
t_time = 0: h_gp: (y_len-1)*h_gp;
figure();
plot(t_time y_pv(1:y_len1) ‘r-‘ t_time y_pv(1:y_len 2) ‘k-‘);
% legend(‘导前区汽温,内回路‘ ‘惰性区汽温,外回路‘ ‘Location‘ ‘SouthEast‘);
grid on;
hold on;
end
% 第二部分:根据控制器的采样周期,生成 控制器用的 阶跃响应
% Ts = 2; % 采样周期 =2
mulTime = Ts / h_gp;
it2 = 1; % 阶跃响应的 循环 a(it2)
it = 1+mulTime; % 4 = Ts / h
while( it <= iTimeSS )
y_step(it2) = y_pv(itnypvCol);
it = it + mulTime;
it2 = it2 + 1;
end
% y_step ( it2 ) = y_pv(iTimeSS); /// 是否 aN = ass
m_nHP = min(m_nHP it2-1);
% 第三部分:计算DMC所用的 模型矩阵 A
A=zeros(m_nHP m_nHM); % DMC的模型矩阵 A
for( it = 1 : m_nHM )
A([it : m_nHP] it) = y_step( [1 : m_nHP+1-it] );
end
if( bFigure)
t2_time = Ts : Ts : (it2-1)*Ts;
plot(t2_time y_step(1 : length(t2_
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-12-11 23:53 DMC算法\
目录 0 2014-05-06 14:49 DMC算法\DMC\
目录 0 2014-05-05 19:35 DMC算法\DMC-matlab\
文件 2599 2014-05-06 14:47 DMC算法\DMC-matlab\CalcStepResponseADMC.m
文件 1463 2014-05-06 14:44 DMC算法\DMC-matlab\CalcStepResponseADMC.mat
文件 2082 2011-08-26 10:39 DMC算法\DMC-matlab\CalcStepResponse_D.m
文件 716 2014-05-06 14:44 DMC算法\DMC-matlab\CalcStepResponse_D.mat
文件 886 2014-05-03 22:58 DMC算法\DMC-matlab\closeloop1.asv
文件 888 2014-05-03 23:01 DMC算法\DMC-matlab\closeloop1.m
文件 4171 2011-08-23 23:39 DMC算法\DMC-matlab\dmc1.m
文件 2035 2011-08-22 18:54 DMC算法\DMC-matlab\dmc1_p0.m
文件 7520 2014-05-06 14:46 DMC算法\DMC-matlab\dmcba
文件 8214 2011-08-26 00:14 DMC算法\DMC-matlab\dmcba
文件 8048 2014-05-06 14:41 DMC算法\DMC-matlab\dmcba
文件 8048 2014-05-06 14:42 DMC算法\DMC-matlab\dmcba
文件 7493 2011-08-27 22:24 DMC算法\DMC-matlab\dmcba
文件 600 2011-08-23 13:24 DMC算法\DMC-matlab\nostable.m
文件 432 2011-09-10 16:59 DMC算法\DMC-matlab\ref.m
文件 15059 2014-05-03 22:47 DMC算法\DMC.docx
文件 4488 2014-05-05 20:48 DMC算法\DMC\CalcStepResponseADMC.m
文件 210980 2014-05-05 20:52 DMC算法\DMC\CalcStepResponseADMC_out.mat
文件 9630 2014-05-05 20:48 DMC算法\DMC\dmcba
目录 0 2014-05-06 14:49 DMC算法\DMC\有扰动\
文件 2562 2011-08-26 16:02 DMC算法\DMC\有扰动\CalcStepResponseADMC.m
文件 1463 2014-05-06 14:48 DMC算法\DMC\有扰动\CalcStepResponseADMC.mat
文件 8219 2013-04-15 08:51 DMC算法\DMC\有扰动\dmcba
文件 8047 2011-08-26 00:17 DMC算法\DMC\有扰动\dmcba
文件 30208 2014-04-11 11:25 DMC算法\DMC控制算法.doc
文件 0 2014-05-05 15:49 DMC算法\DMC概述.docx
文件 642048 2013-04-12 15:07 DMC算法\DMC理论及MATLAB实现.ppt
文件 45056 2014-04-30 16:58 DMC算法\DMC程序实现.doc
............此处省略5个文件信息
相关资源
- MATLAB 经典程序源代码大全
- 克里金插值程序国外一个基金支持下
- 天线阵的波束形成在MATLAB仿真程序及
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- Matlab实现基于相关的模板匹配程序
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- optical_flow 光流法 matlab 实现程序
- 替代数据法的matlab程序
- 通过不同方法进行粗糙集属性约简m
- 神经网络分类matlab程序
- matlab程序用Hopfield网络解决TSP
- 实例matlab 编程100个常用程序
- 多用户检测MATLAB程序
- 实现2ask.4ask.2fsk.4fsk.qam16.qam8调制的m
- 基于MATLAB的线性控制系统分析与设计
- matlab版的车牌识别程序
- 数字信号处理 matlab实验源程序吴镇扬
- matlab编写的susan算法程序
- vc下实现的分段线性插值、二次多项式
- CRC循环冗余校验的matlab仿真程序
- 曲线旋转得到曲面的MATLAB程序
- MATLAB实现混沌图像加密仿真程序
- 主动轮廓模型算法matlab程序
- 数字信号处理 理论算法与实现 胡广书
- 基于BP神经网络的盲均衡算法 C程序(
- Lozi混沌系统相关分析的MATLAB程序
- 一个用MATLAB编写的用于估计信号谐波
- 图像匹配matlab源程序sift算法
评论
共有 条评论