大家好!我现在用VC6.0来实现数据的采集,并将其保存在.dat文件中,然后希望通过调用matlab引擎用matlab将数据曲线画出来。在VC中如何调用matlab这些都知道,而且都没问题,就是绘出的图形没有数据曲线,我想应该是读取.dat文件过程出错了,但不知道如何改才能正确读出文件的数据,下面是我读取数据和绘图的源代码,大家看看有什么问题,帮我改改,在此谢谢各位!engEvalString(ep, "load E:\ACIMotorControl_New\Current.dat;");//E:\ACIMotorControl_New\Current.dat是数据的绝对路径
engEvalString(ep, "figure(60);");
engEvalString(ep, "plot(Current(:,4), Current(:,1));");
engEvalString(ep, "set(60, 'NumberTitle', 'off', 'Name', 'A相电流');");
engEvalString(ep, "xlabel('时间轴(单位:秒)');");
engEvalString(ep, "ylabel('定子A相电流A/D采样值');");
engEvalString(ep, "grid on;"); 补充:.dat文件的数据是四列,行数不知道,很多。格式如下:
2186 2061 1897 0.000000 
2205 2030 1909 0.000200 
2206 2028 1910 0.000400 
2190 2016 1938 0.000600 
2220 2044 1880 0.000800 
2217 2042 1885 0.001000 
2228 2012 1904 0.001200 
2207 2045 1892 0.001400 
2232 2016 1896 0.001600 
2203 2024 1917 0.001800 
2229 2002 1913 0.002000 
...

解决方案 »

  1.   

    改了之后能画出来了,谢谢!
    再问个问题,能不能不用绝对路径?
    因为我用VC生成的.dat文件是存放在当前工程下。如何用相对路径调用它?
      

  2.   

    据说matlab有条命令叫cd吆
    另外pwd获取当前路径,呵呵,只用cd就够了cd .dat所在文件夹
      

  3.   

    在load前,先用下一句
    path是你data文件所在的路径,比如c:\mydata,这样就把matlab的工作路径改过去了,matlab就能找到了
    engEvalString(ep, "cd path;"); 另外,有什么命令不会,先在matlab中输入"help 命令"试试,别着急
      

  4.   

    可能我的问题没说清楚,我知道您的意思,就是先把matlab默认目录改过来,然后再用load是吧?
    我现在想做的是有没有这样的函数,能获取文件所在目录,因为我的工程文件指不定在哪个目录下。
    就比如说我的工程可能在c:\myproject下,也可能在d:\job\myproject下,等等。你所说的只能事先知道目录才可能,那样的话用绝对路径就可以了,呵呵!
      

  5.   


    用api很好实现
    DWORD GetCurrentDirectory( DWORD nBufferLength, LPTSTR lpBuffer );