vs调用matlab的动态库(matlab为卡尔曼滤波相关算法)

这篇博客介绍了如何在VS2013环境下调用MATLAB2016a的动态库进行卡尔曼滤波。首先在MATLAB中将4个卡尔曼滤波子程序转化为function函数并生成动态链接库,然后在VS2013中使用mwArray类来创建数组和矩阵,实现与MATLAB程序的交互。通过cpp程序,输入1x8向量,得到12x1向量的输出结果。
摘要由CSDN通过智能技术生成

平台:VS2013+matlab2016a

在这里以一个具体的例子来做示范,matlab程序为卡尔曼滤波相关程序,并且把matlab的各个子程序都做成了function函数的形式。卡尔曼滤波相关程序有四个子程序,调用test.m中的test函数可在matlab中显示出结果,输入为一个1x8的向量,输出为一个12x1的向量。程序如下:

function y=test(z)

% clear all;clc;
t=0.5;

RelatObjCoor = [3.75 3.75 0;1.25 3.75 0; 1.25 1.25 0; 3.75 1.25 0];
%RelatObjCoor = [1.25 1.25 0;-1.25 1.25 0; -1.25 -1.25 0; 1.25 -1.25 0];
Init_X = [0;0;-1.75;0;21.2235;0;0;0;1/6*pi;0;0;0];
f=@(x)[x(1)+t*x(2);x(2);x(3)+t*x(4);x(4);x(5)+t*x(6);x(6);x(7)+t*x(8);x(8);x(9)+t*x(10);x(10);x(11)+t*x(12);x(12);];
h=@(x)[856.66*(x(1)+cos(x(7))*cos(x(9))*RelatObjCoor(1,1)+(cos(x(7))*sin(x(9))*sin(x(11))+sin(x(7))*cos(x(11)))*RelatObjCoor(1,2)+(-cos(x(7))*sin(x(9))*cos(x(11))+sin(x(7))*sin(x(11)))*RelatObjCoor(1,3))/(x(5)+sin(x(9))*RelatObjCoor(1,1)-cos(x(9))*sin(x(11))*RelatObjCoor(1,2)+cos(x(9))*cos(x(11))*RelatObjCoor(1,3))+233.05;
       860.36*(x(3)-sin(x(7))*cos(x(9))*RelatObjCoor(1,1)+(-sin(x(7))*sin(x(9))*sin(x(11))+cos(x(7))*cos(x(11)))*RelatObjCoor(1,2)+(sin(x(7))*sin(x(9))*cos(x(11))+cos(x(7))*sin(x(11)))*RelatObjCoor(1,3))/(x(5)+sin(x(9))*RelatObjCoor(1,1)-cos(x(9))*sin(x(11))*RelatObjCoor(1,2)+cos(x(9))*cos(x(11))*RelatObjCoor(1,3))+169.4;
       856.66*(x(1)+cos(x(7))*cos(x(9))*RelatObjCoor(2,1)+(cos(x(7))*sin(x(9))*sin(x(11))+sin(x(7))*cos(x(11)))*RelatObjCoor(2,2)+(-cos(x(7))*sin(x(9))*cos(x(11))+sin(x(7))*sin(x(11)))*RelatObjCoor(2,3))/(x(5)+sin(x(9))*RelatObjCoor(2,1)-cos(x(9))*sin(x(11))*RelatObjCoor(2,2)+cos(x(9))*cos(x(11))*RelatObjCoor(2,3))&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值