взаимодействие mathematica и matlab с NetLink и обмен данными между ними - PullRequest
0 голосов
/ 26 мая 2011

Я использовал следующий код в mathematica для вызова matlab

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

Я хочу получить переменную рабочей области matlab "a" из mathematica и преобразовать ее в матрицу mathematica.Как я могу сделать это с помощью Netlink?

Ответы [ 2 ]

3 голосов
/ 27 мая 2011

Предполагая, что вы получите вывод в виде

out = "
  a =

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

  ";

, вы можете преобразовать его в формат Mathematica , используя команду ImportString:

matrix = ImportString[out, "Table", "IgnoreEmptyLines" -> True, 
   "HeaderLines" -> 1];
matrix // TableForm
3 голосов
/ 27 мая 2011

Я не знаю, как вы соединяетесь с 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');

Mathematica:

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

enter image description here

...