楼主: lzh8221
1689 0

[问答] 关于matlab 股票数据接口的编译问题 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

36%

还不是VIP/贵宾

-

威望
0
论坛币
2944 个
通用积分
1.1159
学术水平
4 点
热心指数
8 点
信用等级
1 点
经验
2032 点
帖子
156
精华
0
在线时间
161 小时
注册时间
2008-8-28
最后登录
2024-1-25

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
程序如下,但是用matlab mex编译 出错。求大侠帮忙。我用的版本是2010b的

void mexFunction(int nlhs,
    mxArray * plhs[] , int nrhs,const mxArray * pahs[])
{
typedef struct {
        DWORD    dt;  //日期: 比如读出数据为20031110,代表2003年11月10号
        DWORD    k_price;//开盘价*0.01():读出的价格乘0.01为实际价格。下同。
        DWORD    h_price;//最高价*0.01
        DWORD    l_price;//最底价*0.01
        DWORD    s_price;//收盘价
        float    s_tolmoney;//(单位:亿)
        DWORD bur_tol;//成交量
        DWORD unknown; ///没有使用
    }ST_K_DATE;
   
    FILE * f = 0;
    int nfieldidx= 0;
    char * pkdata;
    int lday = 8;
    int dims[2] = {1, lday };
   char msg[128] = "";
   char path[512] = {0};
   int i,r,c ,*val;
   double  *kp,*sp,*hp,*lp,*tm,*vol;
   int lseekpos;     
   mxArray *field_value;   
   const char *field_names[] = {"日期", "开盘价","最高价","最低价","收盘价","成交金额","成交量"};   
   ST_K_DATE * pd = 0;
   r = mxGetM(pahs[0]);
   c = mxGetN(pahs[0]);
   sprintf(msg,"r:%d , c:%d  rn",r,c);
   mexPrintf(msg);
   mxGetString(pahs[0],msg,128);
   sprintf(path,"D:/jcb_hxzq/vipdoc/sh/lday/sh%s.day",msg);
   mexPrintf(path);   
   lday = (int)*mxGetPr(pahs[1]);
   dims[1] = lday;
   pkdata = malloc (sizeof(ST_K_DATE)*lday);
   plhs[0] = mxCreateStructArray(2, dims, NUMBER_OF_FIELDS, field_names);
   plhs[1] = mxCreateDoubleMatrix(1,lday,mxREAL);
   plhs[2] = mxCreateDoubleMatrix(1,lday,mxREAL);
   plhs[3] = mxCreateDoubleMatrix(1,lday,mxREAL);
   plhs[4] = mxCreateDoubleMatrix(1,lday,mxREAL);
   plhs[5] = mxCreateDoubleMatrix(1,lday,mxREAL);
   plhs[6] = mxCreateDoubleMatrix(1,lday,mxREAL);
   f = fopen(path,"r+b");
   lseekpos = sizeof(ST_K_DATE)*lday;
   fseek(f,-lseekpos,SEEK_END);
   fread(pkdata,sizeof(ST_K_DATE),lday,f);
   pd = (ST_K_DATE*)pkdata;
   for (i=0;i<lday;i++){
       nfieldidx = 0;
       msg[0] = 0;
       sprintf(msg,"%d",pd.dt);
       mxSetField(plhs[0],i,field_names[nfieldidx++],mxCreateString(msg));  
       field_value = mxCreateDoubleMatrix(1,1,mxREAL);
       mxGetPr(plhs[nfieldidx]) = *mxGetPr(field_value) = pd.k_price*0.01f;
       mxSetField(plhs[0],i,field_names[nfieldidx++],field_value);
       field_value = mxCreateDoubleMatrix(1,1,mxREAL);
       mxGetPr(plhs[nfieldidx]) = *mxGetPr(field_value) = pd.h_price*0.01f;
       mxSetField(plhs[0],i,field_names[nfieldidx++],field_value);
       field_value = mxCreateDoubleMatrix(1,1,mxREAL);
       mxGetPr(plhs[nfieldidx]) = *mxGetPr(field_value) = pd.l_price*0.01f;
       mxSetField(plhs[0],i,field_names[nfieldidx++],field_value);
       field_value = mxCreateDoubleMatrix(1,1,mxREAL);
       mxGetPr(plhs[nfieldidx]) = *mxGetPr(field_value) = pd.s_price*0.01f;
       mxSetField(plhs[0],i,field_names[nfieldidx++],field_value);
       field_value = mxCreateDoubleMatrix(1,1,mxREAL);
       mxGetPr(plhs[nfieldidx]) = *mxGetPr(field_value) = pd.s_tolmoney;
       mxSetField(plhs[0],i,field_names[nfieldidx++],field_value);
       field_value = mxCreateDoubleMatrix(1,1,mxREAL);
       mxGetPr(plhs[nfieldidx]) = *mxGetPr(field_value) = pd.bur_tol;
       mxSetField(plhs[0],i,field_names[nfieldidx++],field_value);
   }
   fclose(f);
}

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:MATLAB atlab matla 股票数据 Mat matlab 接口

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 12:26