关于使用vc++调用matlab生成的dll传递数组的问题

       网络上许多vc++调用matlab 的dll的方法使用的都是单值传递参数,但在许多情况下,我们并不能确定要传递的参数的大小,那么这个问题如何解决那?我想大家一定想到了使用指针和动态数组,是的,就是这样解决。

   第一步将你的matlab程序编译生dll,这个过程有许多的参考资料,这里我就不再赘述了。

   第二部贴一些实际的代码来个大家分析一下:

     我做的是一个求农业上的期望产量与趋势产量的实际应用,从1971年开始年序为1,作为x轴,产量作为y轴,使用曲线拟合出产量的趋势走向,虽然我的数值分析学的也很不错,但是为了减少开发成本,我还是使用了matlab作为开发次拟合曲线的饿工具,即快又准,与农业专家使用其他工具拟合的曲线十分接近(一公顷的误差在10公斤以下)。下面是一些具体的代码:

    yy=Fun_NX(1971,year);//获得用户给定年的年序,1971年开始为1
    double k=3;//上包络产量要求三次是三次拟合函数
   double *x=new double[m];//声明动态double数组x
 double *y=new double[m];//声明动态double数组y
 //进行内存拷贝,这里需要注意的是,我一开始使用的是首地址赋值的方式,虽然可以完成设计任务,但是在调试 //的时候发现内存泄露,delete无法很好地产出x,y变量
    memcpy(x,Fun_Year(1971,end_year,region),m*sizeof(double));//将获得的上包络年序数组头指针赋值给x
    memcpy(y,Fun_Yield(

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值