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})
结果展示:
