我想将数据从EViews(我很遗憾地被迫使用的点击式计量经济学软件)数据库直接导入MATLAB,而无需将任何临时文件写入磁盘。当然可以直接将系列导出到CSV或Excel并随后将其导入MATLAB,但这对于大量系列来说效率很低,并且它不允许自动化。
答案 0 :(得分:1)
这在EViews网站上的文档中有所介绍:Eviews COM Automation。从MATLAB中,创建一个ActiveX控件的句柄,并使用它来在内存中来回传递数据。
% launch EViews ActiveX server
hm = actxserver('Eviews.Manager') ;
h = hm.GetApplication(0) ;
% load file
h.Run(sprintf('wfuse %s',myPath)) ;
% dates
h.Run(sprintf('string startDate = %s.@first',myVar)) ;
startDate = h.Get('startDate') ;
h.Run(sprintf('string endDate = %s.@last',myVar)) ;
endDate = h.Get('endDate') ;
% drop consecutive leading/trailing missing observations
h.Run(sprintf('smpl %s %s',startDate,endDate)) ;
% transfer values
values = cell2mat(h.GetSeries(myVar)) ;
h.release ;
请注意,有一些启动时间,因为必须等待Eviews在后台启动才能使用,所以如果要导入多个系列,建议在创建后插入循环。处理ActiveX控件。
另请注意,这不适用于所有版本的Eviews。如果您遇到困难,请先与制造商联系以获取补丁。