关于matlab和C++混编问题

daiweiru 2015-05-29 03:56:12
如题,现在有多组(x,y)数据,想要得到它们之间的二维曲线关系系数,我将matlab里的Polyfit函数生成了C++可以调用的动态链接库,但是我在调用的时候发现得到的系数行向量得不到正确的值,都是乱的或者是0,求做过这两者混编的大神帮帮忙!!!!我的调用代码贴在下边了,还有生成的polyfit在C++下的函数定义
mxArray *m_x;
m_x = mxCreateDoubleMatrix(1,nCount,mxREAL);
memcpy(mxGetPr(m_x),&Cur,nCount*sizeof(double)); //对x赋值

mxArray *m_y;
m_y = mxCreateDoubleMatrix(1,nCount,mxREAL);
memcpy(mxGetPr(m_y),&Temp,nCount*sizeof(double)); //对y赋值

double fValue = 0;
mxArray *m_p;
m_p = mxCreateDoubleMatrix(1,nRank,mxREAL);
memcpy(mxGetPr(m_p),&fValue,nRank*sizeof(double)); //对p赋值

nRank = nRank -1;//拟合阶次
mxArray *m_n;
m_n = mxCreateDoubleMatrix(1,1,mxREAL);
memcpy(mxGetPr(m_n),&nRank,sizeof(double));

nRank = nRank+1;//nRank代表返回值个数,即系数个数
mlfXyPoly(1,&m_p,m_x,m_y,m_n);//调用组件中的函数绘制曲线

double pValue[10]={0.0};
memcpy(&pValue,mxGetPr(m_p),nRank*sizeof(double));
for (i=0;i<nRank;i++)
{
str.Format(_T("%.5f "),pValue[i]);
m_Modulus += str;
}


extern LIB_xyPoly_C_API bool MW_CALL_CONV mlfXyPoly(int nargout, mxArray** p, mxArray* x, mxArray* y, mxArray* n);

大家帮帮忙了,拜托拜托~~~
...全文
444 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-06-03
  • 打赏
  • 举报
回复
在VoIP领域,为什么SIP协议活下来了,RS232协议夭折了呢?
赵4老师 2015-06-03
  • 打赏
  • 举报
回复
为什么人和人、电脑和人、电脑和电脑交流信息的时候大多都用纯文本文件呢?
daiweiru 2015-06-03
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
不要做A语言代码修改为B语言代码的无用功。 也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。 只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。 即可很方便地让A、B两种语言之间协调工作。 比如: A将请求数据写到文件a.txt,写完后改名为aa.txt B发现aa.txt存在时,读取其内容,调用相应功能,将结果写到文件b.txt,写完后删除aa.txt,改名为bb.txt A发现bb.txt存在时,读取其内容,读完后删除bb.txt 以上A可以替换为任何一种开发语言或开发环境,B可以替换为任何一种与A不同的开发语言或开发环境。 除非A或B不支持判断文件是否存在、文件读写和文件更名。 但是谁又能举出不支持判断文件是否存在、文件读写和文件更名的开发语言或开发环境呢? 共享临时文本文件这种进程之间的通讯方法相比其它方法的优点有很多,下面仅列出我现在能想到的: ·进程之间松耦合 ·进程可在同一台机器上,也可跨机,跨操作系统,跨硬件平台,甚至跨国。 ·方便调试和监视,只需让第三方或人工查看该临时文本文件即可。 ·方便在线开关服务,只需删除或创建该临时文本文件即可。 ·方便实现分布式和负载均衡。 ·方便队列化提供服务,而且几乎不可能发生队列满的情况(除非硬盘空间满) ·…… “跨语言、跨机,跨操作系统,跨硬件平台,跨国,跨*.*的”苦海无边, 回头是“使用共享纯文本文件进行信息交流”的岸! 无profiler不要谈效率!!尤其在这个云计算、虚拟机、模拟器、CUDA、多核 、多级cache、指令流水线、多种存储介质、……满天飞的时代!
大哥,你回复帖子是不是就这一段话都百年不换啊,烦你呢好嘛,别在我帖子下边儿得瑟了好嘛,跪求你好嘛~~
ArthurKingYs 2015-06-01
  • 打赏
  • 举报
回复
现在matlab里面试试能不能用 在看看调用MATLAB 有没有问题
daiweiru 2015-06-01
  • 打赏
  • 举报
回复
自顶一下,求大神帮忙,别沉下去啊~~~
shiter 2015-06-01
  • 打赏
  • 举报
回复
http://blog.csdn.net/wangyaninglm/article/details/39188535 http://blog.csdn.net/wangyaninglm/article/details/38390271 不知道能帮上忙不,这个混编调试我觉的都挺麻烦的
赵4老师 2015-06-01
  • 打赏
  • 举报
回复
不要做A语言代码修改为B语言代码的无用功。 也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。 只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。 即可很方便地让A、B两种语言之间协调工作。 比如: A将请求数据写到文件a.txt,写完后改名为aa.txt B发现aa.txt存在时,读取其内容,调用相应功能,将结果写到文件b.txt,写完后删除aa.txt,改名为bb.txt A发现bb.txt存在时,读取其内容,读完后删除bb.txt 以上A可以替换为任何一种开发语言或开发环境,B可以替换为任何一种与A不同的开发语言或开发环境。 除非A或B不支持判断文件是否存在、文件读写和文件更名。 但是谁又能举出不支持判断文件是否存在、文件读写和文件更名的开发语言或开发环境呢? 共享临时文本文件这种进程之间的通讯方法相比其它方法的优点有很多,下面仅列出我现在能想到的: ·进程之间松耦合 ·进程可在同一台机器上,也可跨机,跨操作系统,跨硬件平台,甚至跨国。 ·方便调试和监视,只需让第三方或人工查看该临时文本文件即可。 ·方便在线开关服务,只需删除或创建该临时文本文件即可。 ·方便实现分布式和负载均衡。 ·方便队列化提供服务,而且几乎不可能发生队列满的情况(除非硬盘空间满) ·…… “跨语言、跨机,跨操作系统,跨硬件平台,跨国,跨*.*的”苦海无边, 回头是“使用共享纯文本文件进行信息交流”的岸! 无profiler不要谈效率!!尤其在这个云计算、虚拟机、模拟器、CUDA、多核 、多级cache、指令流水线、多种存储介质、……满天飞的时代!
daiweiru 2015-06-01
  • 打赏
  • 举报
回复
引用 2 楼 u011001084 的回复:
现在matlab里面试试能不能用 在看看调用MATLAB 有没有问题
我在matlab试过了,这个函数是可以得到正确结果的,调用的部分的话,程序没有任何报错,是正确的,但是我mlfXyPoly这个函数的调用没有做返回接收,我不知道怎么定义返回接收!

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧