mathematica和matlab与NetLink的交互以及它们之间的数据交换

时间:2011-05-26 19:43:47

标签: matlab wolfram-mathematica netlink

我在mathematica中使用以下代码来调用matlab

In[1]:= Needs["NETLink`"]
matlab = CreateCOMObject["matlab.application"]
In[5]:= matlab@Execute["a=[1 2;3 4]"]

我想从mathematica获取matlab工作空间变量“a”并将其转换为mathematica矩阵。 我怎么能用netlink做到这一点?

2 个答案:

答案 0 :(得分:3)

我不知道你是如何与MATLAB联系的......你的ProgID对我来说不起作用,我也不确定它是否正确。一种更简单,更可靠的方法是在MATLAB中创建您想要的任何内容,然后将其保存为.mat文件并将其导入Mathematica。这是一个小例子:

MATLAB:

a=magic(4)

a =

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

save('file','a');

数学:

a = Transpose@Import["file.mat", {"HDF5", "Datasets", "a"}];

enter image description here

答案 1 :(得分:3)

假设您获得表格的输出

out = "
  a =

      16     2     3    13
       5    11    10     8
       9     7     6    12
       4    14    15     1

  ";

您可以使用ImportString命令将其转换为 Mathematica 的格式:

matrix = ImportString[out, "Table", "IgnoreEmptyLines" -> True, 
   "HeaderLines" -> 1];
matrix // TableForm