FAQ > 金融建模 > 第三方交互 > MatLab

Q:Matlab中如何传数组进天软函数中    

  • A:在天软中,数组都是用array()表示,一维,二维,多维等,矩阵也如此。
    在matlab调天软函数的过程中,经常会需要传入数组到天软模型中去使用,下面分别介绍传入一维数组(序列)、二维数组、多维数组、带下标数组等的方法。

    封装天软函数:该函数仅返回展示传入的数组源代码,方便对照是否有效。
    Function TestMatlab_01(s,t);
    Begin
      if ifstring(t) then
        try
          v:=Importjsonstring(t);
        except
          v:=eval(&t);
        end;
      else
        v:=t;
      return '传入'$s$'参数 '$tostn(v);
    End;

    Matlab调用天软之前,首先创建一个Com对象,代码如下(后面的范例中不再重复该步骤):
    ts=actxserver('TSExpert.CoExec');

    1、一维数组传递:matlab中使用{a,b,c}这种形式传递
    展示范例:
    data = ts.RemoteCallFunc('TestMatlab_01',{'一维数组',{'SZ000002','SZ000008'}})

    结果展示:其中参数成功转换成天软的一维数组array('SZ000002','SZ000008')


    2、二维数组传递:matlab中使用{a,b;c,d;e,f}的形式传递
    data = ts.RemoteCallFunc('TestMatlab_01',{'二维数组',{'a','b';2,2;3,3}})

    结果展示:


    3、多维数组传递:matlab中比如四维表示用{{a,b},{c,d};e,f}}的形式
    data = ts.RemoteCallFunc('TestMatlab_01',{'多维数组',{'a',1;{'b1','b2'},2;'c',{3,3}}})

    结果展示:

    4、带下标数组传递
    方法1:采用字符串格式传递,模型中用Eval转成数组
    展示范例:
    data = ts.RemoteCallFunc('TestMatlab_01',{'一维下标数组','array("a":"SZ000002","b":"SZ000008")'})

    结果展示:

    方法2:采用json串格式传递,模型中用Importjsonstring转成数组
    展示范例:
    s='{"R0":{"C0":0,"C1":0,"C2":0},"R1":{"C0":0,"C1":0,"C2":0},"R2":{"C0":0,"C1":0,"C2":0}}';
    data = ts.RemoteCallFunc('TestMatlab_01',{'二维下标数组',s})

    结果展示: