不懂C语言怎么用Matlab,是关于在c语言中实现对matlab调用的,但是这个实在是不会啦,求帮助...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

因为要用authorware这个软件~而authorware调用matlab很麻烦~只能通过调用c++~所以要利用matlab得到这个函数的仿真图象就要把用matlab实现函数的部分也编进C++~~~下面是这个函数~~有没有高手明白~~提点小建议也行啦~~~~

91aaaaa268093e98a374e6fe2be03ccb.gif,,3Q3Q!!!!!

clear all

clc

clear

tt=0.1;

sm=0.6*tt;

st=0.42*tt;

x(1)=0;y(1)=0;z(1)=0;

pmr(:,1)=[x(1);y(1);z(1)];

ptr(:,1)=[25;5;10];

m=3;

q(1)=0;

o(1)=0;

a(1)=0;

for(k=2:600)

ptr(:,k)=[25-0.42*cos(pi/6)*tt*k;5;10+0.42*sin(pi/6)*k*tt];

r(k-1)=sqrt((ptr(1,k-1)-pmr(1,k-1))^2+(ptr(2,k-1)-pmr(2,k-1))^2+(ptr(3,k-1)-pmr(3,k-1))^2);

c=sqrt((ptr(1,k)-pmr(1,k-1))^2+(ptr(2,k)-pmr(2,k-1))^2+(ptr(3,k)-pmr(3,k-1))^2);

b=acos((r(k-1)^2+st^2-c^2)/(2*r(k-1)*st));

dq=acos((r(k-1)^2-st^2+c^2)/(2*r(k-1)*c));

if abs(imag(b))>0

b=0.0000001;

end

if abs(imag(dq))>0

dq=0.0000001;

end

q(k)=q(k-1)+dq;

o(k)=o(k-1)+m*dq;

a(k)=o(k)-q(k);

c1=r(k-1)*sin(b)/sin(a(k)+b);

c2=r(k-1)*sin(a(k))/sin(a(k)+b);

c3=sqrt((c1-sm)^2+(c2-st)^2+2*(c1-sm)*(c2-st)*cos(a(k)+b));

dq=a(k)-acos(((c1-sm)^2+c3^2-(c2-st)^2)/(2*(c1-sm)*c3));

if abs(imag(dq))>0

dq=0.0000001;

end

q(k)=q(k-1)+dq;

o(k)=o(k-1)+m*dq;

a(k)=o(k)-q(k);

c1=r(k-1)*sin(b)/sin(a(k)+b);

c2=r(k-1)*sin(a(k))/sin(a(k)+b);

c3=sqrt((c1-sm)^2+(c2-st)^2+2*(c1-sm)*(c2-st)*cos(a(k)+b));

dq=a(k)-acos(((c1-sm)^2+c3^2-(c2-st)^2)/(2*(c1-sm)*c3));

if abs(imag(dq))>0

dq=0.0000001;

end

q(k)=q(k-1)+dq;

o(k)=o(k-1)+m*dq;

a(k)=o(k)-q(k);

c1=r(k-1)*sin(b)/sin(a(k)+b);

c2=r(k-1)*sin(a(k))/sin(a(k)+b);

c3=sqrt((c1-sm)^2+(c2-st)^2+2*(c1-sm)*(c2-st)*cos(a(k)+b));

x1(k)=ptr(1,k-1)+c2/st*(ptr(1,k)-ptr(1,k-1));

y1(k)=ptr(2,k-1)+c2/st*(ptr(2,k)-ptr(2,k-1));

z1(k)=ptr(3,k-1)+c2/st*(ptr(3,k)-ptr(3,k-1));

x(k)=pmr(1,k-1)+sm/c1*(x1(k)-pmr(1,k-1));

y(k)=pmr(2,k-1)+sm/c1*(y1(k)-pmr(2,k-1));

z(k)=pmr(3,k-1)+sm/c1*(z1(k)-pmr(3,k-1));

pmr(:,k)=[x(k);y(k);z(k)];

r(k)=sqrt((ptr(1,k)-pmr(1,k))^2+(ptr(2,k)-pmr(2,k))^2+(ptr(3,k)-pmr(3,k))^2);

if r(k)<0.06;

break;

end;

end

sprintf('遭遇时间:%3.1f',0.1*k);

figure(1);

plot3(pmr(1,1:k),pmr(2,1:k),pmr(3,1:k),'k',ptr(1,:),ptr(2,:),ptr(3,:));

axis([0 25 0 5 0 25]);

text(x(80),y(80),z(80),'\leftarrow 比例导引');

grid on

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值