matlab函数封装.so供c++调用的方法

1. 首先用matlab编写好自己的一个函数。我这里使用的casadi进行编写:

X_traj = opti.variable(n_x,N_steps_ahead);
Ufp_traj = opti.variable(n_ufp,N_steps_ahead);
N_steps_ahead = 10;
cost = 0;
for n = 1:N_steps_ahead
    Xk = fd_alip(Xkm1,Ufp_traj(:,n),p_m,p_zH,dt); %每一步碰撞后的com初值
    for i = 0:N_intervals
        dt_interval = p_Ts/N_intervals;
        Yk = Ad_ALIP(p_m,p_zH,i*dt_interval)*Xk;        % state output
        X_error = Yk - X_des{n};
        cost = cost + X_error.'*Q*X_error;    
    end
    
end

opti.minimize(cost);
opti_RS = opti.copy();
opti_RS.solver('sqpmethod',opts);
opt_args = {...
        X_traj,...
        Ufp_traj};
opt_output = {X_traj; Ufp_traj};
name_cg_LS = char("f_opti_LS");
f_opti_LS = opti_LS.to_function(name_cg_LS,opt_args,opt_output);

注意,以上代码只是代码片段,不能运行!只要编写自己的matlab函数就行。

2. 生成.c文件

cg_options = struct();
cg = CodeGenerator(name_cg_LS,cg_options);
cg.add(f_opti_LS);
cg.generate()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值