Daftar Isi:

Membuat File Matlab MEX: 3 Langkah
Membuat File Matlab MEX: 3 Langkah

Video: Membuat File Matlab MEX: 3 Langkah

Video: Membuat File Matlab MEX: 3 Langkah
Video: How to Create C++ mex files for MATLAB 2024, November
Anonim
Membuat File MEX Matlab
Membuat File MEX Matlab

Petunjuk tentang cara mengintegrasikan kode C yang dikompilasi dengan Matlab. MEX adalah singkatan dari MATLAB Executable. File-MEX adalah subrutin yang terhubung secara dinamis yang dihasilkan dari kode sumber C atau Fortran yang, ketika dikompilasi, dapat dijalankan dari dalam MATLAB dengan cara yang sama seperti file-M MATLAB atau fungsi bawaan. Fungsi antarmuka eksternal menyediakan fungsionalitas untuk mentransfer data antara file MEX dan MATLAB, dan kemampuan untuk memanggil fungsi MATLAB dari kode C atau Fortran. Di sini saya akan menunjukkan semua yang Anda butuhkan untuk membuat file mex yang berguna dengan cepat. perlu:= editor teks= matlab 6.1 atau lebih tinggi (versi sebelumnya dapat melakukan file mex juga tetapi formatnya sedikit berbeda) = matlab memiliki kompiler c sendiri yang menyertainya, tetapi saya menggunakan kompiler visual c++ karena saya memilikinya.

Langkah 1: Kode

Kode
Kode

unduh file yang saya lampirkan: mextest1p0.cpp

cpp adalah singkatan dari c++ ………Inilah yang dilakukan oleh kode:……… dibutuhkan nomor yang Anda kirimkan dari command prompt matlab. Itu mencetak "hello world" di matlab itu mengembalikan dua argumen ke matlab, array nomor dua elemen dan string elemen pertama dari array angka yang dikembalikan adalah 1 + nomor yang Anda kirimkan elemen kedua dari array angka yang dikembalikan adalah 2 + nomor yang Anda kirimkan ………. Ini adalah cara menerapkannya: ………… simpan file ke komputer Anda mulai matlab navigasikan di matlab ke direktori tempat file tersebut kemudian ikuti instruksi kompilasi dan eksekusi di bagian atas file.cpp. Saya tidak dapat menulis instruksi ini di sini karena instruksi otomatis mengedit perintah dan membuatnya muncul dengan tidak benar. Pada gambar di bawah ini Anda dapat melihat kode berfungsi. Jangan khawatir tentang "peringatan baris perintah", sepertinya tidak berpengaruh apa-apa. Perhatikan di sisi kiri, direktori saat ini berisi file.cpp. Di sebelah kanan Anda dapat melihat saya mengkompilasi kode dan kemudian menjalankannya dari matlab. Baca file di editor teks Anda (misalnya notepad di windows), didokumentasikan dengan sangat baik dan cukup jelas, Anda akan dapat melakukan hampir semua yang Anda butuhkan dengan mengikuti konvensi dalam kode (yaitu menyalin dan menempelkannya dan membuat sedikit modifikasi) ############################################################## ######################## …….. CATATAN…….. karena beberapa pengeditan otomatis yang mengganggu yang dilakukan oleh instruksi, kode seperti yang terlihat pada halaman berikutnya TIDAK AKAN BEKERJA, ANDA HARUS MENGUNDUH FILE yang saya lampirkan alih-alih menyalin dan menempel ini. ############################################################# ############################

Langkah 2: Ini Kodenya, JANGAN COPY AND PASTE

Ini Kodenya, JANGAN COPY AND PASTE
Ini Kodenya, JANGAN COPY AND PASTE

############################################################# #####################…….. CATATAN……..karena beberapa pengeditan otomatis yang mengganggu yang dilakukan oleh instruksi, kode seperti yang terlihat pada halaman ini TIDAK AKAN BEKERJA, ANDA HARUS MENGUNDUH FILE yang saya lampirkan daripada menyalin dan menempel ini.############################################# #####################################################################//Ini ditulis dalam c++ oleh leevonk// itu adalah kode untuk file matlab mex // kode akan mengambil nilai satu angka dan menghasilkan dua nilai angka // dua angka output dihitung dari nomor input // kode juga akan menampilkan nilai string // kode akan cetak juga "hello world"#include "mex.h"void mexFunction(int nlhs, mxArray *plhs, int nrhs, mxArray *prhs) {//############# ############################/#######--print "hello world"--### #########//################################################## ###mexPrintf("Halo dunia");//###################################################### #####//########--Dapatkan Barang Dari Matlab--#########//############################# ################################/ * mendeklarasikan variabel array untuk menampung nilai yang masuk */double* InValues;/* mendapatkan nilai yang dikirim dari matlab */InValues = mxGetPr(prhs[0]);/* untuk menggunakan nilai yang dikirim dari matlab, lakukan InValues [0], InValue[1], dll sesuai dengan berapa banyak nilai yang ada. InValues akan digunakan di bawah ini *///########################################################## ##//########--Mengembalikan array angka--#########//############################ #######################/* mendeklarasikan array yang akan dikirim ke matlab (yang * membuatnya menjadi array) */double* OutValues;/ * Buat/alokasikan argumen pengembalian, Matriks 1x2 (1 baris 2 kolom) untuk slot pertama larik pengembalian (plhs[0]) */plhs[0]=mxCreateDoubleMatrix(1, 2, mxREAL); /* Dapatkan pointer ke argumen pengembalian */OutValues = mxGetPr(plhs[0]); /* memberikan nilai ke OutValues yang akan berada di slot pertama array kembali, di sini kita menggunakan InValues untuk komputer OutValues */OutValues[0] = InValues[0] + 1;OutValues[1] = InValues[0] + 2;//############################################################// ###########--Mengembalikan String--############//############################ ##########################/* mendeklarasikan variabel string yang akan dikirim ke matlab */char* str;/* menetapkan nilai ke string */str = "byebye";/* masukkan string ke dalam slot kedua array kembali (plhs[1]) */plhs[1]=mxCreateString(str);//########## ##################################//###########--kembali lebih banyak barang--############//################################ ############/* untuk mengembalikan lebih banyak barang, ikuti aturan umum di atas tetapi masukkan barang ke slot lain, plhs[somenumber] */ }

Langkah 3: Jika Karena Alasan Apa Pun Itu Tidak Dikompilasi

Jika Karena Alasan Apa Pun Itu Tidak Dikompilasi
Jika Karena Alasan Apa Pun Itu Tidak Dikompilasi

Jika karena alasan apa pun itu tidak dapat dikompilasi (seharusnya, berfungsi dengan baik di komputer saya) lihat sumber daya ini, dari sanalah saya belajar. Mereka memiliki sedikit gangguan (penggunaan beberapa tata bahasa lama yang tidak berfungsi, dll) tetapi jika Anda bolak-balik di antara keduanya, Anda harus dapat menyatukan sesuatu yang berfungsi. https://web.ccr.jussieu.fr/ccr/ Documentation/Calcul/matlab5v11/docs/00009/009a1.htmhttps://cnx.org/content/m12348/latest/

Direkomendasikan: