⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 step.m

📁 模型预测控制的一个小例子~Gravity Drained Water Tank
💻 M
字号:
% Step test for Model 16 - Tank
% Created by John Hedengren

global u

for k = 1:3,

clear volume_exp t_exp v_exp u_exp t_model v_model u_model

% Experimental Data
load_name = ['tank_data' int2str(k)];
load(load_name, 'volume_exp');
t_exp = volume_exp(:,1);
v_exp = volume_exp(:,2);
u_exp = volume_exp(:,3);

% Record How Many Time Steps Were Taken
t_steps = size(volume_exp,1);

% Initial Conditions for the State
x_init = v_exp(1);

for i = 1:t_steps-1,
   t_range = [t_exp(i,1) t_exp(i+1,1)];

	% Open Loop
	u = u_exp(i,1);
   x = x_init;
   
   t_model(i,1) = t_exp(i,1);
   v_model(i,1) = x;
   
   [t,x] = ode15s('tank',t_range,x_init);
   
	% Get final state for the next move
   x_init = x(size(t,1),:);
   
end

% Record the final time and state
t_model(t_steps,1) = t_exp(t_steps,1);
v_model(t_steps,1) = x_init;

figure(k);
subplot(2,1,1), plot(t_model,v_model,'k-',t_exp,v_exp,'b--');
xlabel('Time (sec)');
ylabel('Volume (mL)');
legend('Model Prediction','Experimental Data');

subplot(2,1,2), plot(t_exp,u_exp,'k-');
axis([t_exp(1,1) t_exp(t_steps,1) -1 101]);
xlabel('Time (sec)');
ylabel('Inlet Valve % Open');

end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -