看了你在百度里关于matlab的一个回答,很细心。因为任务急,老板催,有些无奈,想冒昧问你一个问题

[复制链接]
查看11 | 回复2 | 2010-11-29 21:36:52 | 显示全部楼层 |阅读模式
是关于matlab的:
代码如下:
%PID Controler
clear all;
close all;
ts=1;
sys=tf([0.5],[720,1],'inputdelay',60);
dsys=c2d(sys,ts,'zoh')
[num,den]=tfdata(dsys,'v')
%初始化
u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;u_6=0;u_7=0;u_8=0;u_9=0;u_10=0;
u_11=0;u_12=0;u_13=0;u_14=0;u_15=0;u_16=0;u_17=0;u_18=0;u_19=0;u_20=0;
u_21=0;u_22=0;u_23=0;u_24=0;u_25=0;u_26=0;u_27=0;u_28=0;u_29=0;u_30=0;
u_31=0;u_32=0;u_33=0;u_34=0;u_35=0;u_36=0;u_37=0;u_38=0;u_39=0;u_40=0;
u_41=0;u_42=0;u_43=0;u_44=0;u_45=0;u_46=0;u_47=0;u_48=0;u_49=0;u_50=0;
u_51=0;u_52=0;u_53=0;u_54=0;u_55=0;u_56=0;u_57=0;u_58=0;u_59=0;u_60=0;
u_61=0;
y_1=0;
error_1=0;
error_2=0;
ei=0;
%bang-bang+pid控制
for k=1:1:2400
time(k)=k*ts;
yout(1)=0;
rin(1)=12;
%Linear model
if k0
u(k)=100;
elseif k=100
u(k)=100;
end
if u(k) test at 30
if k<=400&yout(k)<12
按理应该不会出现这个问题啊
是不是哪个细节出错了呢
谢谢了

回复

使用道具 举报

千问 | 2010-11-29 21:36:52 | 显示全部楼层
yout(k)<12,报错时,你可以看下工作空间里k=2,而yout(2)这是根本就没值,在执行此处时yout(1)=0;这一个初始值设置语句。
回复

使用道具 举报

千问 | 2010-11-29 21:36:52 | 显示全部楼层
这是我用matlab2007 Transfer function:
0.000694z^(-60) * ----------
z - 0.9986 Sampling time: 1num =1.0e-003 *
0
0.6940den
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行