السلام عليكم و رحمة الله و بركاته
في البداية اود ان ابرق بالتحية للاخوة الكرام في هذا المنتدى الذين طالما لم يبخلو عليا بعلمهم و طيب اخلاقهم فقد كنتم دائما الملجأ الطيب لي في كل المشاكل الجافاوية –سوري من الاخ علاء مسروقة- حتى انهيت دراستي الجامعية الحمد لله
فانا اليوم عددت لكي اشارككم الفائدة في هذا المنتدى العزيز.
نبدأ بالدرس الاول: ربط الجافا بالماتلاب
نحن كمبرمجين في لغة الجافا قد نحتاج كثيرا إلى الاستفادة من برنامج الماتلاب في جعل برامجنا الجافاوية اكثر قوة, وعمل الكثير من البرامج التي لا تستطيع الجافا عملها بمطلقها, او ان الماتلاب يسهل هذه الاعمال بشكل ابسط ممن لو تم انشاءها بالجافا فقط.
لذا سأقوم في هذا الدرس بشرح كيفية ربط الجافا بالماتلاب و من ثم في الدرس الاخر سنناول تطبيق على هذه الطريقة و هو كشف الاهداف من خلال الجافا 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 session3) 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
لهذه الحزمة –مرفقة- لمعرفة المزيد عن هذه الطرائق و الطرائق الاخرى
قبل ان انهي اريد ان انوه انه يوجد اصدارات احدث من النسخة المرفقة و لكنني استخدمت هذه النسخة لانها عملت لديا اما النسخ الحديثة لم تعمل لا ادري لماذا؟
نلقاكم في الدرس التالي ان شاء الله ........
حياكم الله
