导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

关于VC和MATLAB混合编程

crazyyang1234 2009-08-31 07:27:25
请问各位大虾,我想在VC中做一个调用MATLAB函数进行PID仿真的程序,我的PID源程序为:
function trans
A=[0.2];
B=[2];
C=[1];
D=[0];
[num,den] = ss2tf(A,B,C,D);
kp=1;
ki=220;
kd=0.4;
simutime=10;
samplegap=0.01;
numcf = [kp ki kd];
dencf = [1 0];
numf = conv(numcf,num);
denf = conv(dencf,den);
[numc,denc]=cloop(numf,denf);
t = 0:samplegap:simutime;
step(numf,denf,t),

我进行MATLAB编译的时候出现错误,我不知道是什么意思.我以前没有做过MATLAB的PID仿真。还望各位大虾给出正解!!! 谢谢啦!
...全文
18 点赞 收藏 2
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
crazyyang1234 2009-08-31
谢谢楼上的回答,我要用到矩阵的一些计算,所以不得不用MATLAB。虽然没有回答出来,还是谢谢你啊!
回复
ssccll 2009-08-31
evalin

#include <iostream>
#include <math.h>
#include "engine.h"
using namespace std;
void main()
{
 const int N = 50;
 double x[N],y[N];
 int j = 1;
 for (int i=0; i<N; i++) //计算数组x和y
 {
  x[i] = (i+1);
  y[i] = sin(x[i]) + j * log(x[i]); //产生-之间的随机数赋给xx[i];
  j *= -1;
 }
 Engine *ep; //定义Matlab引擎指针。
 if (!(ep=engOpen(NULL))) //测试是否启动Matlab引擎成功。
 {
  cout <<"Can't start Matlab engine!" <<endl;
  exit(1);
 }

 //定义mxArray,为行,N列的实数数组。
 mxArray *xx = mxCreateDoubleMatrix(1,N, mxREAL);
 mxArray *yy = mxCreateDoubleMatrix(1,N, mxREAL); //同上。

 memcpy(mxGetPr(xx), x, N*sizeof(double)); //将数组x复制到mxarray数组xx中。
 memcpy(mxGetPr(yy), y, N*sizeof(double)); //将数组x复制到mxarray数组yy中。

 engPutVariable(ep, "xx",xx); //将mxArray数组xx写入到Matlab工作空间,命名为xx。
 engPutVariable(ep, "yy",yy); //将mxArray数组yy写入到Matlab工作空间,命名为yy。

 //向Matlab引擎发送画图命令。plot为Matlab的画图函数,参见Matlab相关文档。
 engEvalString(ep, "plot(xx, yy); ");

 mxDestroyArray(xx); //销毁mxArray数组xx和yy。
 mxDestroyArray(yy);

 cout <<"Press any key to exit!" <<endl;
 cin.get();
 engClose(ep); //关闭Matlab引擎。
}

  编译并运行程序得结果入下图:


y=sin(x) ±log(x)的图形
一个参考
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……