![]() |
|
![]() |
![]() |
|
|
|||||||
|
![]() |
|
|
LinkBack | أدوات الموضوع | تقييم الموضوع |
|
|||
|
السلام عليكم ورحمة الله وبركاته...
طبعا عملية تحويل الأرقام من نظام عشري الى نظام ثنائي بأستخدام المات لاب سهل وله أمر بسيط وهو dec2bin مثال: لو كان لدينا الرقم 130 نريد تحويله الى نظام ثنائي نقوم بكتابة الأمر : F=130; FF=dec2bin(F) % up to here is ok ثم تظهر النتيجه التاليه : FF = 10000010 والعكس تماما لكن بأستخدام أمر bin2dec في الحقيقه الشي الصعب الذي واجهني هنا لو كان لدي مصفوفه مثلا 4 4x وأريد تحويل عناصر هذه المصفوفه الماتلاب يقوم بتغير شكل المصفوفه مثلا يقوم بوضعها 12x4 وأنا لا أريد هذه المشكله خصوصا لو كنت تقوم بعمليات على صوره أو غيرها فيجب أن تعيد مقاس المصفوفه الى نفس ماكانت عليه... فهل ممكن أحد من الأخوان يقوم بشرح كيفيه تجنب هذه المشكله ولكم جزيل الشكر... مثال توضيحي: f=[1 2 3;4 5 6;7 8 9] this matrix 3x3 f = 1 2 3 4 5 6 7 8 9 F=dec2bin(f,4) this is the conersion F = 0001 0100 0111 0010 0101 1000 0011 0110 1001 to get it back lets say FF=bin2dec(F) this is the code FF = 1 4 7 2 5 8 3 6 9 اذا نلاحظ هنا تغير في حجم المصفوفه الى 9x1 هذي هي المشكله... تحتي لكم... أبوبتال... |
|
|||
|
وعليكم السلام ورحمة الله ..
أولا - لايجوز أستخدام هذا الايعاز (dec2bin) لتحويل الارقام من decimal الى binary لأن الـ output سوف يكون string وليس رقم وعندها سوف لاتستطيع التعامل معه كرقم في الحسابات اللاحقة . ثانيا - حسب علملي لايوجد ماتطلبه بالتحديد لان الرقم بعد التحويل سوف يتحول الى أكثر من مرتبه وكل واحدة تتطلب موقع بالذاكرة لذلك من المستحيل أن يتحول الرقم العشري الى ثنائي وتبقى المصفوفة بنفس الحجم ... الايعاز الموجود في الماتلاب هو التالي :- تحويل الرقم الى vector والـ vector الى مصفوفة من المراتب الثنائيه .. d = [12;5;6]; عندها بعد التحويل (في المثال السابق) سوف يكون لدينا مصفوفه متكونه من 3 صفوف وأربع اعمدة , كل صف يمثل قيمة الرقم المقابل بالثنائي .b = de2bi(d) % to convert the numbers إذا كنت تتعامل مع صورة أو أي بيانات أخرى والتي تكون على شكل مصفوفه فيجب عليك أولا تحويل هذه المصفوفه الى vector ومن ثم تحويل أرقام هذا الـ vector الى مصفوفة مكونه من n من العناصر وأربع أعمدة . يمكنك أسترجاع الارقام الى العشري بأستخدام (bin2dec) وبعدها تحصل على vector من الارقام العشرية التي يمكن خزنها مجددا في مصفوفة . تحياتي التعديل الأخير تم بواسطة ahmedmecha ; 09-05-2008 الساعة 12:15 AM. |
|
|||
|
اقتباس:
لأني أريد تحويل صوره من أرقام عشريه الى ثنائيه وبعد التحويل أقوم بأسترجاع الصوره السابقه...لكن عجزت عن ذلك وان كانت عن طريق تحويلها الى VECTOR فياليت أخي توضح زياده..لأني لم أستطيع التوصل الى ماتربوا اليه... شكرا مرة أخرى على تعاونك.. |
|
|||
|
ببساطة لنفرض ان حجم المصفوفه هو N*M سوف نحصل على vector مكون من عناصر عددها N*M clear all clc index = 0 ; for i = 1: N for j = 1:M index = index + 1 ; vector(index) = MX(N,M) ; end end سوف تتحول المصفوفة الى vector ثم يمكنك تحويله الى أعدد binary وينتج لدينا vector بنفس الطول ولكن بأربع أعمدة (اذا كانت الاعداد محصورة بين الصفر والـ 15) أو تعتمد على حجم الاعداد . |
|
|||
|
شكرا أخي على المساعده...يعطيك الف عافيه...
أصلا الفكره هي عمل quantization للصوره بـ8 بت ومن ثم نقوم بعمل تقليل البت من 8 الى 5 أي نقوم بألغاء أخر 3 بت.. ومن ثم أسترجاع الصوره الى ماكانت عليه ومن ثم توضيح الأثر الناتج من هذا العمل على الصوره.. |
![]() |
| مواقع النشر (المفضلة) |
| أدوات الموضوع | |
| تقييم هذا الموضوع | |
|
|