الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ربط الجافا بالماتلاب

بدأه jfriend في 18 أغسطس 2009 · 9 رد · 4,529 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته

في البداية اود ان ابرق بالتحية للاخوة الكرام في هذا المنتدى الذين طالما لم يبخلو عليا بعلمهم و طيب اخلاقهم فقد كنتم دائما الملجأ الطيب لي في كل المشاكل الجافاوية –سوري من الاخ علاء مسروقة- حتى انهيت دراستي الجامعية الحمد لله

فانا اليوم عددت لكي اشارككم الفائدة في هذا المنتدى العزيز.

نبدأ بالدرس الاول: ربط الجافا بالماتلاب

نحن كمبرمجين في لغة الجافا قد نحتاج كثيرا إلى الاستفادة من برنامج الماتلاب في جعل برامجنا الجافاوية اكثر قوة, وعمل الكثير من البرامج التي لا تستطيع الجافا عملها بمطلقها, او ان الماتلاب يسهل هذه الاعمال بشكل ابسط ممن لو تم انشاءها بالجافا فقط.

لذا سأقوم في هذا الدرس بشرح كيفية ربط الجافا بالماتلاب و من ثم في الدرس الاخر سنناول تطبيق على هذه الطريقة و هو كشف الاهداف من خلال الجافا object detection using java

الطريقة بسيطة جدا و هي كالتالي:

*) نقم بتنزيل ملف الجافاJMatLink الموجود في المرفقات و نقوم بعمل كومبايل للكلاس

*) نضع ملف JMatlink.dll و نضعه في مسار الويندوز c:\windows

(* لكي نقوم بربط برنامج الجافا الخاص بنا بالماتلاب نقوم بعمل اوبجكت من كلاس JMatLink

و من ثم نقوم باستدعاء الميثود الازمة

دعونا نلقي نظرة على اهم الmethods الموجودة في هذه الحزمة:

في البداية دعونا ننشأ object من كلاس JMatLink لكي نستطيع استدعاء الmethods الموجودة داخله كالتالي:

JMatLink engine = new JMatLink();

1) engOpen

هذه الmethod تقوم بعمل اتصال مع بالماتلاب لكي نستطيع تطبيق الأوامر

مثال:

engine.engOpen();

2) engOpenSingleUse(String startCmdS)

هذه الطريقة ايضا تقوم بعمل اتصال مع الماتلاب و لكن الفرق بينها و بين سابقتها ان سابقتها عندما نستدعيها فانه فقط نقوم باتصال واحد فقط مع الماتلاب او هذه فهي تسمح لنا بعمل اكتر من اتصال في ان واحد حيث تاخد كبارميتر اسم الاتصال مثال:

a = engine.engOpenSingleUse("start matlab");   // start first matlab session
b = engine.engOpenSingleUse("start matlab");   // start second matlab session

3) engClose

هذه الطريقة تقوم بقطع الاتصال مع الماتلاب و قد تاخد هذه الطريقه براميتر واحد و قد لا تاخد أي براميتر

فاذا تم تمرير براميتر فانه بكون رقم الاتصال المراد قطعه في الحالة السابقه a او b

مثال:

engine.engClose(a);

4) engEvalString

و هي الطريقة التي تقوم بتطبيق اوامر الماتلاب مثل plot و clc و كل اوامر الماتلاب

و هي قد تاخد براميتر واحد و هو طيغة الامر

او 2 براميتر احدهما رقم الاتصال المراد تطبيق الامر من خلاله و الاخر الامر المراد تطبيقه

مثال:

engine.engEvalString("surf(peaks)");

مثال اخر

engine.engEvalString(a, "surf(peaks)");

5) engPutArray

هذه الطريقه تقوم بخلق مصفوفة في الماتلاب تاخد قيمها من مصفوفة في الجافا

مثال:

   int b;
   double array = 1;
   JMatLink engine = new JMatLink();
   b = engine.engOpenSingleUse(); 
   engine.engPutArray(b, "array", array);
   engine.engClose(b);

6) engGetArray

هذه الطريقه على عكس الطريقه السابقه, ففي هذه الطريقه نقوم بقراءة مصفوفة منشأة في الماتلاب أي قيمها موجوده في التلاب و مساوتها لمصفوفة معرفه في الجافا

مثال:

   int b;
   double[][] array;
   JMatLink engine = new JMatLink();
   engine.engOpen();
   engine.engEvalString("array = randn(10);");
   array = engine.engGetArray("array");
   engine.engClose();

هذه اهم الطرائق او الmethods الموجودة في هذه الحزمة الرجاء الاطلاع على الdocumentation

لهذه الحزمة –مرفقة- لمعرفة المزيد عن هذه الطرائق و الطرائق الاخرى

قبل ان انهي اريد ان انوه انه يوجد اصدارات احدث من النسخة المرفقة و لكنني استخدمت هذه النسخة لانها عملت لديا اما النسخ الحديثة لم تعمل لا ادري لماذا؟

نلقاكم في الدرس التالي ان شاء الله ........

حياكم الله

JMatLink1_1__1_.00.zip

3
#2

أولاً و قبل كل شئ جميل جداً هذا العمل و شكراً لتعبك و منتظرين الباقى ..

-----------------------------------------------------------------------------

كعادتى أحب أن أُجرب الأمور :

-----------------------------

حملت المكتبة و و دمجتها مع ال NetBeans

و كتبت برنامج صغير جداً لأرى ماذا سينتج و لكن اخرج مصائب لا افهمها :lol:

public class JavaWithMathlab {

	JMatLink matLink = new JMatLink();

	public JavaWithMathlab() {
		matLink.engOpen();
		matLink.engEvalString("Beshoy");
		System.out.println(matLink + "");
	}

	public static void main(String[] args) {
		JavaWithMathlab javaWithMathlab = new JavaWithMathlab();
	}
}

ثانى شئ هل و أنا بستعمل هذه المكتبة فى برنامج ما يجب ان أكون مصمم أشياء على ال MathLab نفسه و لا ايه النظام ؟؟

أنا بسأل لأن كان مكتوب :

اقتباس
هذه الطريقه على عكس الطريقه السابقه, ففي هذه الطريقه نقوم بقراءة مصفوفة منشأة في الماتلاب أي قيمها موجوده في التلاب و مساوتها لمصفوفة معرفه في الجافا

فهذا يعنى انى سوف استعمل ال MathLab و هذا ما لا أتمناه :(

شكراً جداً

منتظرين الباقى

بيشوى عاطف

تم تعديل هذه المشاركة بواسطة mr.beshoy في 19 أغسطس 2009 في 17:23

−1
#3

السلام عليكم

شكراً jfriend على الدرس الجميل و ننتظر البقية.

أضيف فقط رابط موقع المكتبة: http://www.held-mueller.de/JMatLink/

لكن للأسف يبدو أن تطويرها توقف من سنة 2005

بيشوي: هذه المكتبة لإستخدام محرك مات لاب الحاسوبي داخل برامج جافا أي أنها همزة وصل بين مات لاب و جافا, لذلك لابد من تواجد مات لاب على جهازك.

للمعلومية فقط مات لاب يحوي JVM داخله تسمح بإستيراد و تشغيل تطبيقات جافا داخله لكن لا أعرف إذا كان العكس صحيح أم لا.

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#4

شكراً للأخ محمد سمير على تعليقه

-----------------------------

عاوز اعرف ما الذى اعمله بالماتلاب يستعدى تدخل الجافا و العكس ؟؟

الموضوع جدي عليا معلش

شكراً

#5
اقتباس
عاوز اعرف ما الذى اعمله بالماتلاب يستعدى تدخل الجافا و العكس ؟؟

الموضوع محتاج معرفة إمكانات مات لاب بصورة مختصرة, مات لاب برنامج يمكنك من عمل حسابات معقدة بلغة برمجة بسيطة و تعامل متقدم جداً مع المصفوفات (من هنا جاء إسم البرنامج matrix lab), و يتميز مات لاب بإمكانية عمل إضافات متخصصة add-ons أو tool boxes تمكنك من عمل حسابات خاصة بتخصصات معينة (مثال image processing و electric circuits).

هذا بالنسبة لمات لاب, لكن مهما كانت إمكانات البرنامج فستأتي عليك إحتياجات لن يكفيها مات لاب و لغته المحدودة و بالتالي تفكر في إنشاء برنامجك الخاص ( الذي قد يتعامل مع قواعد بيانات أو يعمل ك servlet أو applet) لكنك لن تجد أفضل من محرك مات لاب لعمل حساباتك و حل معادلاتك و هنا يأتي دور مكتبة مثل التي عرضها jfriend للربط بين برنامجك المطور بجافا و بين مات لاب (و هناك حلول أخرى تجدها في الموقع الرسمي لمات لاب للربط مع جافا و دوت نت أيضاً).

ملاحظة: في عالم بايثون هناك مكتبات طورت لتحل محل مات لاب بالكامل و أظنها نجحت في تأدية هذا الغرض.

1

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#6
mr.beshoy كتب:

عاوز اعرف ما الذى اعمله بالماتلاب يستعدى تدخل الجافا و العكس ؟؟

الموضوع جدي عليا معلش

شكراً

الماتلاب برنامج رياضي قوي جداَ وانا اتعاملت معاه كتير وكفاية الخصائص الرياضية القوية جداً زي التفاضل والتكامل

--

Mina Fouad

Computer & Systems Engineering Dpt.

Faculty of Engineering

Alexandria University

#7

منورانا أخت JFriend

اشتقنالك ولكتابتك المفيدة

بالنسبة لموضوع السرقة حلال عليكي بس ما تنسيناش من الأرباح cool.gif

بالنسبة للحج Matab فهو مفيد جداً للتطبيقات الرياضية والذكاء الصناعي ومعالجة الصور الرقمية وتطبيقات أخرى كثيرة

ويحتوي بداخله على مكتبات ضخمة

توفر عليك الكثير من التعب والعناء

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#8
اقتباس
منورانا أخت JFriend

اشتقنالك ولكتابتك المفيدة

هناك بعض الأشخاص ما يرتبط إسمهم بإسم المنتدي في عقلي.

نتمني رؤيتك دائما....

#9

هم كثر والله يا هويدي

والمشكلة أنهم جفونا مرة واحدة

هناك أستاذة مروا من هنا وعلمونا الكثير ثم فجأة رحلوا

لا تعرف لماذا؟

وأتمنى لو كان الأمر بيدي وأعيدهم إلى هنا

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#10

السلام عليكم ورحمة الله وبركاته

الموضوع رائع الصراحة.. انا محتاجة حد عنده خبرة في الربط بين ماتلاب والجافا يساعدنى في بعض الاستفسارات ضروري جدا وبسرعة جدا اتمنى تفيدونى

1 −1

مواضيع مشابهة