popis
Dostal som Mathematica Symbolický nástroj pre MATLAB - verzia 2.0 tu
Potom som použil dokumentáciu, ktorú si vyskúšala na kompiláciu v prostredí MATLAB
Inštalačné kroky:
- 1) Choďte na svoje Mathematica a nájdite súbor
mathlink.h
v E: mathMathematica5.AddOnsMathLinkDeveloperKitWindowsCompilerAdditionsmldev32include " a tiež súborml32i1m.lib
v E: mathMathematica5.AddOnsMathLinkDeveloperKitWindowsCompilerAdditionsmldev32lib. Skopírujte oba súbory do vopred určeného adresára (odkazujeme na tento adresár ako C: xxx).- 2) Skopírujte obsah komprimovaného súboru math.tar do C: xxx.
- 3) Otvorte okno príkazu Matlab a spustite ho
mex –setup
, Zvoľte "Microsoft Visual C / C ++ verzie 6.0 v C: Programové súbory Microsoft Visual Studio ". Toto informuje Matlab, že potrebuje kompilátor C (na rozdiel od kompilátora Fortran). Budete potrebovať Microsoft Visual C / C ++ nainštalovaný. Nevyberajte voľbu "Lcc C verzia 2.4 v C: MATLAB6P1syslcc". 4) Otvorte okno príkazu Matlab a spustite mathrun.m. Tento program bude kompilovať súbor Cmath.c
.
Súbor, ktorý som dostal ako béžová:
Potom krok za krokom
(1) Nájdite mathlink.h
a ml32i1m.lib
v nasledujúcej ceste
D: WolframResearchMathematica8.0SystemFilesLinksMathLinkDeveloperKitWindowsCompilerAdditionsmldev32include D: Wolfram ResearchMathematica8.0SystemFilesLinksMathLinkDeveloperKitWindowsCompilerAdditionsmldev32lib
(2) Skopírujte obsah komprimovaného súboru math.zip
do C: XXX
(3) Kompilácia v MATLABe
mex -setup
(4) posledné nastavenie
addpath C:XXX
run mathrun.m
Neviem prečo?
aktualizovať
Matlab kód v mathrun.m
addpath C:XXX;
% adds the directory C:XXX to the list of directories which Matlab "sees" (referred to as paths)
mlpath="C:XXX" % The directory where mathlink.h is
mllib="C:XXXml32i1m.lib" % The library ml32i1m.lib
% make command
command=sprintf("mex -D__STDC __ -I % s % s % s", mlpath, "math.c", mllib);
% compile
eval(command)
odpovede:
2 pre odpoveď č. 1Zdá sa, že cesta nie je správne odovzdaná mex
, takže to nemôže nájsť math.c
, Komentujte pôvodný riadok:
%command=sprintf("mex -D__STDC __ -I % s % s % s", mlpath, "math.c", mllib);
a pridajte túto adresu:
command=sprintf("mex -D__STDC __ -I%s %s %s", mlpath, "math.c", mllib);
pretože mex
dokumentácia špecifikuje, že medzi miestom nesmie byť žiadny priestor -I
prepínač a vstupná cesta. Ak chcete byť naozaj na bezpečnej strane, môžete dokonca napísať:
command=sprintf("mex -D__STDC __ -I%s %s %s", mlpath, fullfile(mlpath,"math.c"), mllib);