Spisu treści:
- Krok 1: Kodeks
- Krok 2: To jest kod, NIE KOPIUJ I WKLEJAJ
- Krok 3: Jeśli z jakiegokolwiek powodu się nie kompiluje
Wideo: Tworzenie pliku Matlab MEX: 3 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:33
Instrukcje jak zintegrować skompilowany kod C z Matlabem. MEX oznacza plik wykonywalny MATLAB. Pliki MEX to dynamicznie połączone podprogramy utworzone z kodu źródłowego C lub Fortran, które po skompilowaniu można uruchomić z poziomu MATLAB w taki sam sposób, jak pliki M lub wbudowane funkcje MATLAB. Funkcje interfejsu zewnętrznego zapewniają funkcjonalność przesyłania danych między plikami MEX i MATLAB oraz możliwość wywoływania funkcji MATLAB z kodu C lub Fortran. Tutaj pokażę ci wszystko, czego potrzebujesz, aby szybko utworzyć użyteczny plik mex. potrzeba: = edytor tekstu = matlab 6.1 lub nowszy (wcześniejsze wersje mogą również robić pliki mex, ale nieco inny format) = matlab ma własny kompilator c, który jest z nim dołączony, ale użyłem wizualnego kompilatora c ++, ponieważ go miałem.
Krok 1: Kodeks
pobierz załączony plik: mextest1p0.cpp
cpp oznacza c ++ ……… To właśnie robi kod: ……… pobiera liczbę, którą wysyłasz z wiersza poleceń programu Matlab. Wypisuje „hello world” w programie Matlab, zwraca dwa argumenty do programu Matlab, dwuelementową tablicę numerów i ciąg znaków pierwszy element zwróconej tablicy liczb to 1 + numer, który mu wysłałeś, drugi element zwróconej tablicy liczb to 2 + numer, który wysłałeś ………. Oto jak to zaimplementować: ………… zapisz plik na komputerze uruchom matlab nawiguj w programie Matlab do katalogu, w którym znajduje się plik, a następnie postępuj zgodnie z instrukcjami kompilacji i wykonania u góry plik.cpp. Nie mogę napisać tych instrukcji tutaj, ponieważ instrukcje automatycznie edytują polecenia i sprawiają, że pojawiają się one niepoprawnie. Na poniższym obrazku możesz zobaczyć działający kod. Nie przejmuj się „ostrzeżeniem w wierszu poleceń”, wydaje się, że nic nie wpływa. Zauważ, że po lewej stronie bieżący katalog zawiera plik.cpp. Po prawej stronie możesz zobaczyć, jak kompiluję kod, a następnie wykonuję go z programu Matlab. Przeczytaj plik w swoim edytorze tekstu (na przykład notatnik w systemie Windows), jest on bardzo dobrze udokumentowany i nie wymaga wyjaśnień, będziesz w stanie zrobić prawie wszystko, czego potrzebujesz, postępując zgodnie z konwencjami w kodzie (tj. kopiując i wklejając go i tworząc drobne modyfikacje) ############################################### ######################## …….. UWAGA…….. z powodu denerwującej automatycznej edycji, którą wykonują instrukcje, kod widoczny na następna strona NIE BĘDZIE DZIAŁAĆ, MUSISZ POBRAĆ DOŁĄCZONY PLIK, zamiast go kopiować i wklejać. ################################################## ######################
Krok 2: To jest kod, NIE KOPIUJ I WKLEJAJ
################################################## #####################…….. UWAGA……..z powodu irytującej automatycznej edycji, którą wykonują instrukcje, kod widoczny na tej stronie NIE BĘDZIE PRACA, MUSISZ POBRAĆ ZAŁĄCZONY PLIK, zamiast go kopiować i wklejać.################################ #########################################//To zostało napisane w c++ przez leevonk// jest to kod pliku MEX Matlab //kod przyjmie jedną wartość liczbową i wyprowadzi dwie wartości liczbowe//dwie liczby wyjściowe są obliczane z numeru wejściowego//kod wyprowadzi również wartość ciągu//kod będzie wypisz także "hello world"#include "mex.h"void mexFunction(int nlhs, mxArray *plhs, int nrhs, mxArray *prhs) {//############# #############################//#######--drukuj "Witaj świecie"--### #########//######################################## ###mexPrintf("Witaj świecie");//###################################### #####//########--Pobierz materiały z Matlab--##########//################ ##########################/ * zadeklaruj zmienną tablicową do przechowywania wartości przychodzących */double* InValues;/* pobierz wartości wysłane z matlaba */InValues = mxGetPr(prhs[0]);/* aby użyć tych wartości, które zostały wysłane z Matlaba, wykonaj InValues [0], InValue[1] itp.w zależności od liczby wartości. InValues będą używane poniżej *///######################################## ##//########--Zwróć tablicę liczb--#########//#################### #######################/* zadeklaruj tablicę, która zostanie wysłana do Matlaba (* czyni z niej tablicę) */podwójne* OutValues;/ * Utwórz/alokuj zwracany argument, macierz 1x2 (1 wiersz 2 kolumna) dla pierwszego slotu tablicy zwracanej (plhs[0]) */plhs[0]=mxCreateDoubleMatrix(1, 2, mxREAL); /* Uzyskaj wskaźnik do zwracanego argumentu */OutValues = mxGetPr(plhs[0]); /* przypisz wartości do OutValues, które będą znajdować się w pierwszym slocie tablicy zwracanej, tutaj używamy InValues do skomputeryzowania OutValues */OutValues[0] = InValues[0] + 1;OutValues[1] = InValues[0] + 2;//##########################################// ###########--Zwróć ciąg znaków--##############//################## ############################/* zadeklaruj zmienną łańcuchową do wysłania do programu Matlab */char* str;/* przypisz wartość do string */str = "byebye";/* umieść ciąg w drugim slocie tablic zwracanych (plhs[1]) */plhs[1]=mxCreateString(str);//########## ##################################//###########--powrót więcej rzeczy--############//################################ ############/* aby zwrócić więcej rzeczy, postępuj zgodnie z ogólnymi zasadami powyżej, ale umieść rzeczy w innych slotach plhs, plhs[jakaś liczba] */ }
Krok 3: Jeśli z jakiegokolwiek powodu się nie kompiluje
Jeśli z jakiegoś powodu się nie kompiluje (powinno, działa dobrze na moim komputerze) zobacz te zasoby, to tam się nauczyłem. Mają małe usterki (używają starej, niefunkcjonalnej gramatyki itp.), ale jeśli będziesz przechodzić między nimi, powinieneś być w stanie połączyć coś, co działa.https://web.ccr.jussieu.fr/ccr/ Dokumentacja/Calcul/matlab5v11/docs/00009/009a1.htmhttps://cnx.org/content/m12348/latest/
Zalecana:
Jak rozbić dowolny komputer za pomocą pliku wsadowego!: 10 kroków
Jak rozbić dowolny komputer za pomocą pliku wsadowego!: Łatwo rozbić dowolny komputer lub laptop
Tworzenie adaptera Bluetooth Pt.2 (tworzenie kompatybilnego głośnika): 16 kroków
Tworzenie adaptera Bluetooth Pt.2 (Tworzenie kompatybilnego głośnika): W tej instrukcji pokażę ci, jak wykorzystać mój adapter Bluetooth, aby stary głośnik był kompatybilny z Bluetooth. * Jeśli nie przeczytałeś mojej pierwszej instrukcji na temat tworzenia adapter Bluetooth” Proponuję to zrobić przed kontynuowaniem.C
Automatycznie wysyłaj e-mail ze zdjęciem z pliku wsadowego przy użyciu starego pulpitu i XP: 4 kroki
Automatycznie wysyłaj e-mail ze zdjęciem z pliku wsadowego przy użyciu starego pulpitu i XP: Mam szczęście, że mam wspaniały widok z okna mojego domowego biura. Kiedy mnie nie ma, chcę zobaczyć, czego mi brakuje i często mnie nie ma. Kiedyś miałem własną stronę internetową i domową stację pogodową, która przesyłałaby przez ftp wszystkie dane pogodowe
Jak pozbyć się głupiego „.hex Brak takiego pliku” Błąd podczas przesyłania Arduino !: 4 kroki
Jak pozbyć się głupiego „.hex Brak takiego pliku” Błąd podczas przesyłania Arduino !: Ten instruktaż zawiera instrukcje krok po kroku, jak sprawić, by Arduino Diecemella rzeczywiście przesyłał kod domowej roboty, zamiast tylko przykładów w systemie Windows XP
Jak zrobić animowany GIF z pliku wideo, używając tylko darmowego oprogramowania: 4 kroki
Jak zrobić animowany GIF z pliku wideo przy użyciu tylko bezpłatnego oprogramowania: dla tych, którzy nie znają GIF-a, jest to najczęściej używany format obrazu obsługujący wiele klatek w pokazie slajdów lub animacji. innymi słowy, możesz umieszczać krótkie filmy, do których zwykle trafiają tylko obrazy. Chciałem zrobić GIF-a z klipu wideo