PDA

View Full Version : Matlab In Csharp



sepehr.net
جمعه 06 دی 1387, 17:05 عصر
سلام به همه ی دوستان
چند وقتی بود که دنبال پیدا کردن راه حلی بودم که بتونم از توابع Matlab در C# یا VB.net استفاده کنم. بعد از کلی جستجو بالاخره راه حلش رو پیدا کردم.
تو سایت هم یک جستجو کردم دیدم کم نیستند افرادی که دنبال این کار هستند. برای همین تصمیم گرفتم تا یک تاپیکی در این زمینه بسازم تا بتونیم در این زمینه با هم صحبت کنیم
دوستان هم اگه اطلاعاتی در این زمینه دارند خوشحال میشیم قرار بدهند

sepehr.net
جمعه 06 دی 1387, 17:11 عصر
من تونستم دو راه حل پیدا کنم
1- از امکانات خود Matlab استفاده کنیم
یک تابع بنویسیم که یک سری ورودی بگیره و یک خروجی رو به ما برگردونه بعد این تابع رو به یک DLL تبدیل کنیم و اون DLL رو بیاریم تو C# و از توابع اون استفاده کنیم
2- از DLL های خود Matlab استفاده کنیم
پس از نصب Matlab چند تا DLL در لیست DLL های دات نت اضافه میشه که ما میتونیم به وسیله ی این DLL ها با خط فرمان Matlab کار کنیم.
در ادامه هر دو روش رو توضیح میدم

sepehr.net
یک شنبه 08 دی 1387, 20:48 عصر
روش اول

در این روش ما ار امکانات مطلب 2008 استفاده میکنیم.
بدین صورت که تابع نوشته شده در نرم افزار مطلب را به یک فایل DLL تبدیل کرده و سپس در C# از اون DLL استفاده میکنیم.
برای شروع در M-File یک تابع بسازید.
پس از ذخیره ی آن در خط فرمان دستور deploytool را بنویسید.
در پنجره ایی که باز میشود میتوانید عمل تبدیل رو انجام دهید.
از منوی File گزینه ی NewProject را انتخاب کنید. از پنجره ی باز شده Matlab Builder NE
سپس .NetComponent را انتخاب کنید.
حالا نوبت آن رسیده که M-File مربوطه را به برنامه اضافه کنیم. گزینه ی Add File رو انتخاب کنید و آدرس M-File را به آن بدهید.و در انتها برای ساختن DLL گزینه ی Build رو انتخاب کنید.
با این کار یک DLL ساخته میشود.
حالا نوبت آن میرسد که از این DLL در زبان C# استفاده کنیم.
در ابتدا برای DLL ساخته شده و همچنین یک DLL به نام MathWorks, .Net MWArray API یک رفرنس بدهیم. سپس DLL ها را Using میکنیم و از کلاس های آنها سازنده ایی میسازیم و با پاس کردن متغیر ها به انها حاصل تابع را مشاهده میکنیم.
لازم به ذکر است برای داشتن متغیر های موجود مطلب در C# باید از کلاسی که در بالا به ان اشاره کردم استفاده کنید. برای مثال میتونید از کلاس WMArray برای نگهداری یک ماتریس استفاده کنید.

sepehr.net
دوشنبه 09 دی 1387, 23:23 عصر
روش دومی که برای این کار وجود داره و زیاد هم مناسب نیست اینه که ما مستقیما با خط فرمان مطلب در C# کار میکنیم . در این روش ما میتونیم پنجره ی خط فرمان را مستقیما" مشاهده کنیم.
خب برای این کار احتیاج به چند رفرنس داریم :
MathWorks, .Net MWArray API و Matlab Application Library
پس از رفرنس دادن و Using کردن یک متغیر از نوع MLAppClass تعریف کنید.
حالا هر چی تو متد Execute بنویسید انگار تو خط فرمان نوشتین :چشمک:

خوشحال میشیم اگه دوستان هم روشی بلد هستند به ما هم بگند !!!
یا اگه چیزی از دیگر متد ها و پروپرتی های این کلاس ها فهمیدین به ما هم بگین :چشمک:

Mahdi.Kiani
پنج شنبه 15 مرداد 1388, 23:22 عصر
کاربر@smhbf_20 (http://www.barnamenevis.org/forum/member.php?u=73633)
به جای فعالیت وارز (با اهداف تبلیغاتی) که طبق قوانین سایت ممنوع می باشد بهتر است به قوانین سایت رجوع کنید و طبق آن ها به فعالیت بپردازید
پ و:
کاربر@smhbf_20 (http://www.barnamenevis.org/forum/member.php?u=73633) : جریمه شدید
تاپیک به دلیل فعال نبودن قفل می گردد. اگر کاربری خواست در زمینه موضوع تاپیک پست بزند اطلاع دهد تا تاپیک را باز کنم
موفق باشید