একটি ম্যাটল্যাব MEX ফাইল তৈরি করা: 3 টি ধাপ
একটি ম্যাটল্যাব MEX ফাইল তৈরি করা: 3 টি ধাপ
Anonim

কিভাবে ম্যাটল্যাবের সাথে সংকলিত সি কোড সংহত করা যায় তার নির্দেশাবলী। MEX মানে MATLAB এক্সিকিউটেবল। MEX- ফাইলগুলিকে গতিশীলভাবে সংযুক্ত করা হয় সি বা ফোরট্রান সোর্স কোড থেকে উৎপন্ন সাবরুটিন যা কম্পাইল করার সময় MATLAB- এর মধ্যে MATLAB M-files বা অন্তর্নির্মিত ফাংশনগুলির মতই চালানো যায়। বাহ্যিক ইন্টারফেস ফাংশন MEX- ফাইল এবং MATLAB- এর মধ্যে ডেটা স্থানান্তর করার কার্যকারিতা প্রদান করে, এবং C বা Fortran কোড থেকে MATLAB ফাংশনকে কল করার ক্ষমতা এখানে আমি আপনাকে দ্রুত একটি দরকারী মেক্স ফাইল তৈরির জন্য প্রয়োজনীয় সবকিছু দেখাব। প্রয়োজন: = একটি টেক্সট এডিটর = ম্যাটল্যাব.1.১ বা তার উপরে (আগের ভার্সনগুলোও মেক্স ফাইল করতে পারে কিন্তু একটু ভিন্ন ফরম্যাট) = ম্যাটল্যাবের নিজস্ব সি কম্পাইলার আছে যা এর সাথে আসে, কিন্তু আমি ভিজ্যুয়াল সি ++ কম্পাইলার ব্যবহার করেছি কারণ আমার কাছে এটি ছিল।

ধাপ 1: কোড

কোড
কোড

আমার সংযুক্ত ফাইলটি ডাউনলোড করুন: mextest1p0.cpp

cpp মানে c ++ ……… এই কোডটি কি করে: ……… এটি একটি নম্বর নেয় যা আপনি ম্যাটল্যাব কমান্ড প্রম্পট থেকে পাঠান। এটি ম্যাটল্যাবে "হ্যালো ওয়ার্ল্ড" প্রিন্ট করে এটি ম্যাটল্যাবে দুটি আর্গুমেন্ট ফেরত দেয়, একটি দুটি এলিমেন্ট নম্বর অ্যারে এবং একটি স্ট্রিং ফেরত নম্বর অ্যারের প্রথম উপাদান হল 1 + আপনি যে নম্বরটি পাঠিয়েছেন সেটি ফেরত নম্বর অ্যারের দ্বিতীয় উপাদান হল 2 + যে নম্বরটি আপনি এটি পাঠিয়েছেন ……….এভাবে এটি বাস্তবায়ন করতে হয়: ………… ফাইলটি আপনার কম্পিউটারে সংরক্ষণ করুন ম্যাটল্যাব শুরু করুন ম্যাটল্যাবে ডাইরেক্টরিতে নেভিগেট করুন যেখানে ফাইলটি তারপর শীর্ষে সংকলন এবং এক্সিকিউশন নির্দেশাবলী অনুসরণ করুন.cpp ফাইল। আমি এখানে এই নির্দেশাবলী লিখতে পারি না কারণ নির্দেশাবলী কমান্ডগুলি স্বয়ংক্রিয়ভাবে সম্পাদনা করে এবং সেগুলি ভুলভাবে প্রদর্শিত হয়। নীচের ছবিতে আপনি কোডটি কাজ করতে পারেন। "কমান্ড লাইন সতর্কতা" সম্পর্কে চিন্তা করবেন না, এটি কোনও প্রভাব ফেলবে বলে মনে হচ্ছে না। বাম দিকে লক্ষ্য করুন, বর্তমান ডিরেক্টরিতে.cpp ফাইল রয়েছে। ডানদিকে আপনি আমাকে কোডটি সংকলন করতে এবং তারপরে ম্যাটল্যাব থেকে এটি কার্যকর করতে দেখতে পারেন। আপনার টেক্সট এডিটরের ফাইলের মাধ্যমে পড়ুন (উদাহরণস্বরূপ উইন্ডোতে নোটপ্যাড), এটি খুব ভালভাবে নথিভুক্ত এবং স্ব -ব্যাখ্যামূলক, আপনি কোডের নিয়মাবলী অনুসরণ করে আপনার যা প্রয়োজন তা করতে সক্ষম হবেন (যেমন এটি অনুলিপি এবং আটকানো এবং তৈরি করা সামান্য পরিবর্তন) ############### ########################## …….. পরের পৃষ্ঠাটি কাজ করবে না, আপনি এটি অনুলিপি এবং আটকানোর পরিবর্তে আমি সংযুক্ত ফাইলটি ডাউনলোড করতে হবে। ############################################ #######################

ধাপ 2: এই কোড, কপি এবং পেস্ট করবেন না

############################################ ##################### …… কাজ, আপনি এটি অনুলিপি এবং আটকানোর পরিবর্তে আমি সংযুক্ত ফাইলটি ডাউনলোড করতে হবে। ##### ####################################### এটি একটি ম্যাটল্যাব মেক্স ফাইলের জন্য কোড // কোডটি একটি সংখ্যা মান এবং আউটপুট দুটি সংখ্যা মান গ্রহণ করবে // দুটি আউটপুট সংখ্যা ইনপুট নম্বর থেকে গণনা করা হয় // কোডটি একটি স্ট্রিং মানও বের করবে // কোডটি হবে এছাড়াও "হ্যালো ওয়ার্ল্ড" মুদ্রণ করুন#অন্তর্ভুক্ত "mex.h" অকার্যকর mexFunction (int nlhs, mxArray *plhs , int nrhs, mxArray *prhs ) {// ############ ############################# // ############################ ### mexPrintf ("Hello world"); // ################# ##### // // ########-ম্যাটল্যাব থেকে স্টাফ পান- ###################### * ইনকামিং ভেলস*/ডাবল* ইনভ্যালিউস ধরে রাখার জন্য একটি অ্যারে ভেরিয়েবল ডিক্লেয়ার করুন;/* ম্যাটল্যাব থেকে পাঠানো মান পান*/InValues = mxGetPr (prhs [0]); [0], InValue [1], ইত্যাদি কতগুলি মান আছে সে অনুযায়ী। InValues নিচে ব্যবহার করা হবে */// ############################ ## // #########-একটি নম্বর অ্যারে ফেরত দিন- #########################/ * রিটার্ন আর্গুমেন্ট তৈরি করুন/বরাদ্দ করুন, রিটার্ন অ্যারের প্রথম স্লটের জন্য 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; // ############################# ############-একটি স্ট্রিং ফিরিয়ে দাও- ############################ স্ট্রিং */str = "বিদায়";/ *স্ট্রিংটিকে রিটার্ন অ্যারে দ্বিতীয় স্লটে রাখুন (plhs [1]) */plhs [1] = mxCreateString (str); // ########## ###################################### আরো স্টাফ--############//################################ ############/

ধাপ 3: যদি কোন কারণে এটি কম্পাইল না হয়

যাই হোক না কেন কারণ এটি কম্পাইল না
যাই হোক না কেন কারণ এটি কম্পাইল না

যদি কোন কারণে এটি কম্পাইল না হয় (এটি উচিত, আমার কম্পিউটারে সূক্ষ্ম কাজ করে) এই সম্পদগুলি দেখুন, তারা যেখানে আমি শিখেছি। তাদের সামান্য ত্রুটি রয়েছে (কিছু পুরানো, অকার্যকর ব্যাকরণ ইত্যাদি ব্যবহার করুন) তবে যদি আপনি দুজনের মধ্যে পিছনে যান তবে আপনি এমন কিছু কাজ করতে পারেন যা একসাথে কাজ করে। ডকুমেন্টেশন/ক্যালকুল/matlab5v11/ডক্স/00009/009a1.htmhttps://cnx.org/content/m12348/latest/

প্রস্তাবিত: