2009-10-16 23 views
14

Wydaje się, że jest kilka sposobów wywoływania programu Matlab w języku C++ i wywoływania C++ w programie Matlab. Podczas gdy próbuję je tutaj wymienić, proszę wskazać, jeśli czegoś brakuje.Matlab w C C++ i C C++ w matlab

Aby wywołać C C++ w programie Matlab, istnieją również dwie metody. Pierwszym z nich jest wywoływanie funkcji we współdzielonych bibliotekach C. Drugi to budowanie kodu C++ na binarne pliki MEX, które będą wywoływane z wiersza poleceń MATLAB. W przypadku pierwszej metody biblioteki współużytkowane C są po prostu ogólne, tzn. Bez zmiany ich kodu C dla programu Matlab i kompilowane z ogólnego kompilatora C, takiego jak gcc?

Aby wywołać kod matlab w C++, dostępne są dwie metody. Pierwszym z nich jest silnik Matlaba. Drugim jest użycie MATLAB Compiler mcc do utworzenia wspólnych bibliotek C lub C++ z twojego kodu MATLAB.

Poza tym, Matlab i C C++ mogą komunikować się poprzez zapis i odczyt danych do iz niektórych plików (np. Plik matowy, plik tekstowy).

Posiadając więcej niż jeden sposób realizacji każdego z tych celów, mógłbyś mi powiedzieć, jakie przypadki są najlepsze w przypadku korzystania z któregoś z nich? tj. wywoływanie funkcji we współdzielonych bibliotekach VS budujących kod C++ na binarne pliki MEX, silnik Matlab VS kompilujący kod Matlaba do biblioteki współdzielonej C++.

Dzięki i pozdrawiam!

+0

Nie ma języka o nazwie C/C++. Interfejs między C i X będzie znacznie łatwiejszy niż połączenie między C++ i X. –

+11

Wiesz, co mam na myśli, "C i/lub C++" – Tim

+1

Odpowiedzi C będą dużo krótsze niż odpowiedzi w C++ (i w niektórych przypadkach , odpowiedzi C++ będą "zapisuj owijki w C"). Który z nich bardziej Cię interesuje? –

Odpowiedz

8

Mam tylko doświadczenie w wywoływaniu funkcji C lub C++ z MATLAB. Wydaje mi się, że jedyną różnicą między funkcjami wywołującymi w bibliotece współdzielonej a funkcjami wywołującymi z pliku MEX jest to, że z biblioteką współdzieloną, musisz wywołać funkcję z 'calllib', która jest funkcją typu linii poleceń i pozwalają funkcje MEX-a możesz wywoływać funkcje tak, jakby były wbudowanymi funkcjami, więc interfejs jest trochę czystszy.

Moja sugestia jest użycie plików MEX jeśli

  • Używasz C++ (być może trzeba napisać otoki używać C++ w udostępnionej biblioteki)
  • Używasz MATLAB jako klej do duża liczba zoptymalizowanych procedur C lub C++. Będziesz chciał mieć możliwość wywoływania ich w sposób czysty.

użycie biblioteki współdzielonej jeśli

  • Masz już istniejącej biblioteki C, które mogą być używane bez modyfikacji.
  • Wystarczy niewielka liczba połączeń z funkcjami C.

Naprawdę, sprowadza się do interfejsu. Osobiście wolę trasę pliku MEX, ponieważ zapewnia najczystszy interfejs od MATLAB do funkcji C lub C++. Możesz to nazwać jak inną funkcją ze standardowymi typami MATLAB. Z udostępnionej biblioteki, może trzeba zrobić kilka formatowanie danych przed wywołaniem funkcji bibliotecznych

3

myślę metody już nazwane są prawidłowe (to było dawno Użyłem ich)

MATLAB kompilator C nie jest naprawdę wyjątkowy; możliwe jest użycie różnych kompilatorów. Zobacz listę obsługiwanych kompilatorów na stronie link. Nie dotyczy to gcc, ale dołączone jest MS Visual Studio. Podczas łączenia z dostarczonymi bibliotekami napotkasz problemy.

Zasadniczo: wywołanie matlab z C jest czymś, co zrobiłbyś, gdybyś potrzebował ciasnego interfejsu; na przykład, jeśli chcesz zsynchronizować 2 narzędzia, lub twoja funkcja S (simulink) wymaga dodatkowych informacji. Ale wtedy taki plik jest prawdopodobnie wywoływany przez Matlab/Simulink w pierwszej kolejności.

Wywołanie c z matlab jest tym, co chcesz zrobić, pisząc własne funkcje S lub rozszerzenia programu Matlab.

Wybór między C i C++ należy do ciebie; jeśli zaczniesz od pustego arkusza, sugeruję użycie C++; nie musisz korzystać z pełnej funkcjonalności, ale pozwala ona na większą swobodę. Również więcej bibliotek jest obecnie dostępnych dla C++.

C jest językiem z wyboru, jeśli konieczna jest migracja do bardzo różnych środowisk; tj. na przykład kompilować C do DSP. Lub jeśli masz starsze kodu w C, aby rozpocząć. Mieszanie C i C++ jest możliwe, ale może być nieco uciążliwe; Jestem pewien, że znajdziesz tematy dotyczące StackOverflow tylko na ten temat.

2

filmy szkoleniowe o użyciu C++ w Matlab oraz Matlab w C++ (język perski)

utworu:

1 - Wstęp

  • Introduction.wmv [02:00 1,2 MB 800x600]

2 - C++ w Matlab

  • Podstawowe concepts.wmv [9:04, 5,9 MB, 800x600]
  • konfiguracyjne i prosty projekt [08:25, 13 MB, 800x600]
  • Próbki [02:17, 2,7 MB 800x600]
  • debugowanie [02:38, 3,4 MB 800x600]

3 - Matlab C++

  • Matlab C++ współdzielony DLL.wmv [05:42, 6,8 MB 800x600]
  • Matlab z vC++ [10:52 14,2 MB 800x600]

Watch or Download from Google

Download from 4Shared