找回密码
 注册
查看: 9965|回复: 1

simulink调用matlab function模块报错

[复制链接]
发表于 2018-1-24 17:33:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
学生初学simulink,在simulink里建立的是无人机横侧向控制框图,在里面调用matlab function模块运行的时候报错。下面有我搭建的simulink控制框图(里面有matlab function里的m文件)和报错的截图,望大神帮我看看,拜托诸位了。

报错的截图

报错的截图
 楼主| 发表于 2018-1-24 18:03:03 | 显示全部楼层
抱歉,代码忘记传了,现在上传,simulink框图传不了,我就截个图吧,拜托诸位了。
  1. function roll  = uav12(rollf)
  2. % 此函数是跟踪已知二维轨迹上的虚拟目标点
  3. n=5000;                          %假设取5000个点
  4. xm=zeros(n,1);
  5. ym=zeros(n,1);                   %初始位置
  6. vm=ones(n,1)*56.59;
  7. vmx=ones(n,1)*56.576;
  8. vmy=ones(n,1)*-1.256;            %初始速度方向 速度
  9. deltat=1/56.59;                  %采样时间间隔
  10. i=1;
  11. xt = zeros(n,1);
  12. yt = zeros(n,1);

  13. while(xm(i)<5000)
  14.     [xt(i,1),yt(i,1)]=myplace(xm(i),ym(i));   %求虚拟目标点位置
  15.     lamda = mysight(xm(i),ym(i),xt(i),yt(i)); %无人机当前位置与虚拟目标点间的视线角
  16.     gamma = myspeed(vmx(i),vmy(i));           %当前速度方向
  17.     yita = myangle(lamda,gamma);              %速度方向与视线角之间的夹角
  18.     vm(i) = vmx(i)*vmx(i)+vmy(i)*vmy(i);         %当前合速度
  19.     ac = myacceleration(vm(i),yita);          %非线性导航逻辑算法求加速度指令
  20.     roll = myroll(ac);                        %由加速度指令转换为滚转角指令
  21.     af = 9.81*tan(rollf);                     %通过接入无人机横侧向环节simulink框图得到当前滚转角响应值 滚转角响应值再转为加速度值
  22.     vmx(i+1)=vmx(i)+af*sin(gamma)*deltat;
  23.     vmy(i+1)=vmy(i)-af*cos(gamma)*deltat; %由加速度值求下一时刻无人机在xy轴的速度分量
  24.     xm(i+1)=xm(i)+vmx(i)*deltat;
  25.     ym(i+1)=ym(i)+vmy(i)*deltat;        %下一时刻无人机位置解算
  26.     i=i+1;
  27. end

  28. end
复制代码

simulink框图.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表