สารบัญ:
- ขั้นตอนที่ 1: รหัส
- ขั้นตอนที่ 2: นี่คือรหัส ห้ามคัดลอกและวาง
- ขั้นตอนที่ 3: หากไม่รวบรวมด้วยเหตุผลใดก็ตาม
วีดีโอ: การสร้างไฟล์ Matlab MEX: 3 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:08
คำแนะนำเกี่ยวกับวิธีการรวมโค้ด C ที่คอมไพล์เข้ากับ Matlab MEX ย่อมาจาก MATLAB ปฏิบัติการ ไฟล์ MEX เป็นรูทีนย่อยที่เชื่อมโยงแบบไดนามิกที่สร้างจากซอร์สโค้ด C หรือ Fortran ซึ่งเมื่อคอมไพล์แล้ว สามารถเรียกใช้จากภายใน MATLAB ในลักษณะเดียวกับไฟล์ MATLAB M หรือฟังก์ชันในตัว ฟังก์ชันอินเทอร์เฟซภายนอกมีฟังก์ชันในการถ่ายโอนข้อมูลระหว่างไฟล์ MEX และ MATLAB และความสามารถในการเรียกใช้ฟังก์ชัน MATLAB จากโค้ด C หรือ Fortran ฉันจะแสดงทุกสิ่งที่คุณต้องการเพื่อสร้างไฟล์ mex ที่มีประโยชน์อย่างรวดเร็ว need:= ตัวแก้ไขข้อความ= matlab 6.1 หรือสูงกว่า (เวอร์ชันก่อนหน้าสามารถทำไฟล์ mex ได้เช่นกัน แต่มีรูปแบบที่แตกต่างกันเล็กน้อย) = matlab มีคอมไพเลอร์ c ของตัวเองที่มาพร้อมกับมัน แต่ฉันใช้คอมไพเลอร์ visual c++ เพราะฉันมีมัน
ขั้นตอนที่ 1: รหัส
ดาวน์โหลดไฟล์ที่ฉันแนบ: mextest1p0.cpp
cpp ย่อมาจาก c++ ………นี่คือสิ่งที่โค้ดทำ:………… มันใช้ตัวเลขที่คุณส่งจากพรอมต์คำสั่ง matlab มันพิมพ์ "hello world" ใน matlab ส่งคืนอาร์กิวเมนต์สองตัวไปยัง matlab อาร์เรย์ตัวเลขสององค์ประกอบและสตริงที่องค์ประกอบแรกของอาร์เรย์ตัวเลขที่ส่งคืนคือ 1 + หมายเลขที่คุณส่งองค์ประกอบที่สองของอาร์เรย์ตัวเลขที่ส่งคืนคือ 2 + หมายเลขที่คุณส่ง ……….นี่คือวิธีการใช้งาน:………… บันทึกไฟล์ลงในคอมพิวเตอร์ของคุณ เริ่ม matlab นำทางใน matlab ไปยังไดเร็กทอรีที่ไฟล์นั้นถูกปฏิบัติตามคำแนะนำการรวบรวมและดำเนินการที่ด้านบนของ ไฟล์.cpp ฉันไม่สามารถเขียนคำแนะนำเหล่านี้ที่นี่ได้ เนื่องจาก Instrucables จะแก้ไขคำสั่งโดยอัตโนมัติและทำให้ปรากฏอย่างไม่ถูกต้อง ในภาพด้านล่างคุณจะเห็นรหัสทำงาน ไม่ต้องกังวลกับ "คำเตือนบรรทัดคำสั่ง" ดูเหมือนจะไม่มีผลอะไร สังเกตทางด้านซ้าย ไดเร็กทอรีปัจจุบันมีไฟล์.cpp ทางขวามือ คุณจะเห็นว่าฉันกำลังคอมไพล์โค้ดแล้วเรียกใช้งานจาก matlab อ่านไฟล์ในโปรแกรมแก้ไขข้อความของคุณ (เช่น แผ่นจดบันทึกใน Windows) เอกสารนี้ได้รับการจัดทำเป็นเอกสารอย่างดีและอธิบายตนเองได้ คุณจะสามารถทำเกือบทุกอย่างที่คุณต้องการโดยปฏิบัติตามข้อตกลงในโค้ด (เช่น คัดลอกและวางและทำ แก้ไขเล็กน้อย) #################################################### ######################## ……..หมายเหตุ…….. เนื่องจากการแก้ไขอัตโนมัติที่น่ารำคาญซึ่งคำสั่งสอนทำได้ โค้ดตามที่เห็นใน หน้าถัดไปจะไม่ทำงาน คุณต้องดาวน์โหลดไฟล์ที่ฉันแนบมาแทนการคัดลอกและวางสิ่งนี้ ####################################################### ############################
ขั้นตอนที่ 2: นี่คือรหัส ห้ามคัดลอกและวาง
####################################################### ########################……..หมายเหตุ……..เนื่องจากการแก้ไขอัตโนมัติที่น่ารำคาญบางอย่างที่คำสั่งทำ รหัสตามที่เห็นในหน้านี้จะไม่ WORK คุณต้องดาวน์โหลดไฟล์ที่ฉันแนบมาแทนการคัดลอกและวางสิ่งนี้####################################### ########################################## // นี่เขียนด้วย c ++ โดย leevonk // เป็นรหัสสำหรับไฟล์ matlab mex//รหัสจะรับค่าตัวเลขหนึ่งค่าและส่งออกค่าตัวเลขสองค่า//ตัวเลขเอาต์พุตทั้งสองจะคำนวณจากหมายเลขอินพุต//รหัสจะส่งออกค่าสตริงด้วย//รหัสจะ ยังพิมพ์ "สวัสดีชาวโลก"#include "mex.h" void mexFunction(int nlhs, mxArray *plhs, int nrhs, mxArray *prhs) {//################ ###############################//#########-- พิมพ์ "สวัสดีชาวโลก"--### #########//########################################## ###mexPrintf("สวัสดีชาวโลก");//##################################### #####//##########--รับสิ่งของจาก Matlab---#########//################ ###############################/ * ประกาศตัวแปรอาร์เรย์เพื่อเก็บค่าขาเข้า */double* InValues;/* รับค่าที่ส่งจาก matlab */InValues = mxGetPr(prhs[0]);/* เพื่อใช้ค่าเหล่านี้ที่ส่งจาก matlab ให้ทำ InValues [0], InValue[1] เป็นต้นตามจำนวนค่าที่มี InValues จะถูกใช้ด้านล่าง *///########################################## ##//##########--ส่งคืนอาร์เรย์ตัวเลข---#########//##################### #########################/* ประกาศอาร์เรย์ที่จะส่งไปยัง matlab (* ทำให้เป็นอาร์เรย์) */double* OutValues;/ * สร้าง/จัดสรรอาร์กิวเมนต์การส่งคืน 1x2 (1 แถว 2 คอลัมน์) เมทริกซ์สำหรับช่องแรกของอาร์เรย์ส่งคืน (plhs[0]) */plhs[0]=mxCreateDoubleMatrix(1, 2, mxREAL); /* รับตัวชี้ไปยังอาร์กิวเมนต์ส่งคืน */OutValues = mxGetPr(plhs[0]); /* กำหนดค่าให้กับ OutValues ซึ่งจะอยู่ในช่องแรกของอาร์เรย์ส่งคืน ที่นี่เราใช้ InValues กับคอมพิวเตอร์ OutValues */OutValues[0] = InValues[0] + 1;OutValues[1] = InValues[0] + 2;//################################################// #############--ส่งคืนสตริง--###############//##################### ############################/* ประกาศตัวแปรสตริงที่จะส่งไปยัง matlab */char* str;/* กำหนดค่าให้กับ string */str = "byebye";/* ใส่สตริงลงในช่อง return arrays ที่สอง (plhs[1]) */plhs[1]=mxCreateString(str);//########## ##################################//###########--กลับ อื่นๆ --############//################################## ###############/* หากต้องการส่งคืนสินค้าเพิ่มเติม ให้ปฏิบัติตามกฎทั่วไปด้านบน แต่ใส่ของลงในช่อง plhs อื่น plhs[somenumber] */ }
ขั้นตอนที่ 3: หากไม่รวบรวมด้วยเหตุผลใดก็ตาม
หากไม่สามารถคอมไพล์ได้ (ควรใช้งานได้ดีบนคอมพิวเตอร์ของฉัน) ไม่ว่าจะด้วยเหตุผลใดก็ตาม แสดงว่าฉันได้เรียนรู้จากแหล่งข้อมูลเหล่านี้ พวกเขามีข้อบกพร่องเล็กน้อย (การใช้ไวยากรณ์ที่เก่าและใช้งานไม่ได้ ฯลฯ) แต่ถ้าคุณกลับไปกลับมาระหว่างทั้งสองคุณควรจะสามารถรวมสิ่งที่ใช้งานได้https://web.ccr.jussieu.fr/ccr/ เอกสารประกอบ/คำนวณ/matlab5v11/docs/00009/009a1.htmhttps://cnx.org/content/m12348/latest/
แนะนำ:
การแบ่งส่วน MatLab Lung: 5 ขั้นตอน
การแบ่งส่วน MatLab Lung: โดย: Phuc Lam, Paul Yeung, Eric Reyes ------------------------------ ------------------------------------- การยอมรับว่าข้อผิดพลาดในการแบ่งส่วนปอดจะทำให้เกิดข้อมูลเท็จเกี่ยวกับการระบุตัวตน ของพื้นที่โรคและสามารถ
MATLAB การตรวจจับใบหน้าอย่างง่าย: 4 ขั้นตอน
MATLAB Easy Face Detection: จุดประสงค์หลักของคำแนะนำนี้คือเพื่อแสดงให้เห็นว่าการประมวลผลภาพจะง่ายเพียงใด ด้วยความช่วยเหลือของ MATLABFace การตรวจจับและติดตามเป็นสาขาการวิจัยที่สำคัญและกระตือรือร้น นั่นคือเหตุผลที่ฉันจะอธิบาย จะทำได้อย่างไร
วิธีเขียนโค้ดและเผยแพร่ Matlab 2016b เป็น Word (คู่มือสำหรับผู้เริ่มต้น): 4 ขั้นตอน
How to Code and Publish Matlab 2016b to Word (Beginners Guide): Matlab เป็นโปรแกรมภาษาประสิทธิภาพสูงที่ใช้ในการคำนวณผลลัพธ์ทางเทคนิค มีความสามารถในการรวมภาพ การคำนวณ และการเขียนโปรแกรมในลักษณะที่เป็นมิตรต่อผู้ใช้ ด้วยโปรแกรมนี้ ผู้ใช้สามารถเผยแพร่ปัญหาและแนวทางแก้ไข
การควบคุม Raspberry Pi โดยใช้ Matlab: 5 ขั้นตอน
การควบคุม Raspberry Pi โดยใช้ Matlab: เฮ้ บทช่วยสอนนี้เกี่ยวกับการควบคุม Raspberry Pi ที่ไม่มีหัวของคุณโดยใช้ Matlab คุณอาจต้องติดตั้ง matlab เป็นเวอร์ชันล่าสุดเพื่อรองรับบอร์ด raspberry pi ที่ใหม่กว่า
ROS Robotic Controller ที่ใช้ Matlab: 9 ขั้นตอน
ROS Robotic Controller ที่ใช้ Matlab: ตั้งแต่ฉันยังเป็นเด็ก ฉันใฝ่ฝันที่จะเป็น Iron Man และยังคงทำเช่นนั้น Iron Man เป็นหนึ่งในตัวละครเหล่านั้นซึ่งเป็นไปได้อย่างสมจริง และเพียงแค่ทำให้ฉันปรารถนาที่จะเป็น Iron Man สักวันหนึ่ง แม้ว่าผู้คนจะหัวเราะเยาะฉันหรือบอกว่ามันเป็นไปไม่ได้