يسر إدارة الملتقى تهنئة الأعضاء المتميزين ، فألف مبارك هذا التميز مع تمنياتنا للجميع بدوام التوفيق و العطاء ..

 
 

 
 
الأعضاء المتميزين : eng_ahmed_moh - شيراد الجزائر - فلسطين والنضال - م / ابراهيم قشانه - السيد صابر - مبتدىءلينوكس - أبو حمزة السلفي - ابراهيم الانصارى - ربى - يونس فاخر - احمد الغرباوي - الأبلق الفرد - محمد عبد الباسط - ahmed morshidy - علي السبيعي - مصطفى مسعد - ابو حذيفة - المبرمج الصغير - مصطفى محمد سليمان - الطموحة - وليد الحديدي - عاشق حب رسول الله - معمارية مسلمة - نعيم ابو كرم - mohamed hendy - Elassal

 

 

العودة   ملتقى المهندسين العرب > الملتقى الهندسي > هندسة الميكاترونكس > برنامج الـ Matlab
التسجيل التعليمـــات قائمة الأعضاء التقويم مركز رفع الملفات اجعل كافة الأقسام مقروءة
للتأكد من صحة الحديث قبل نشره اضغط هنا  -   مشاكل التسجيل و تفعيل العضوية اضغط هنا
رد
 
LinkBack أدوات الموضوع تقييم الموضوع
  #1 (permalink)  
قديم 08-05-2008, 11:48 AM
عضو
 
تاريخ التسجيل: Mar 2008
المشاركات: 16
معدل تقييم المستوى: 0
أبوبتال يستحق التميز
Exclamation converting from decimal to binary in MATLAB

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

طبعا عملية تحويل الأرقام من نظام عشري الى نظام ثنائي بأستخدام المات لاب سهل وله أمر بسيط وهو

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 هذي هي المشكله...

تحتي لكم...

أبوبتال...
رد مع اقتباس
  #2 (permalink)  
قديم 09-05-2008, 12:12 AM
عضو فعال جداً
 
تاريخ التسجيل: Oct 2006
المشاركات: 155
معدل تقييم المستوى: 0
ahmedmecha يستحق التميز
وعليكم السلام ورحمة الله ..

أولا - لايجوز أستخدام هذا الايعاز (dec2bin) لتحويل الارقام من decimal الى binary لأن الـ output سوف يكون string وليس رقم وعندها سوف لاتستطيع التعامل معه كرقم في الحسابات اللاحقة .

ثانيا - حسب علملي لايوجد ماتطلبه بالتحديد لان الرقم بعد التحويل سوف يتحول الى أكثر من مرتبه وكل واحدة تتطلب موقع بالذاكرة لذلك من المستحيل أن يتحول الرقم العشري الى ثنائي وتبقى المصفوفة بنفس الحجم ... الايعاز الموجود في الماتلاب هو التالي :-

تحويل الرقم الى vector والـ vector الى مصفوفة من المراتب الثنائيه ..


d = [12;5;6];
b = de2bi(d) % to convert the numbers

عندها بعد التحويل (في المثال السابق) سوف يكون لدينا مصفوفه متكونه من 3 صفوف وأربع اعمدة , كل صف يمثل قيمة الرقم المقابل بالثنائي .
إذا كنت تتعامل مع صورة أو أي بيانات أخرى والتي تكون على شكل مصفوفه فيجب عليك أولا تحويل هذه المصفوفه الى vector ومن ثم تحويل أرقام هذا الـ vector الى مصفوفة مكونه من n من العناصر وأربع أعمدة . يمكنك أسترجاع الارقام الى العشري بأستخدام (bin2dec) وبعدها تحصل على vector من الارقام العشرية التي يمكن خزنها مجددا في مصفوفة .

تحياتي

التعديل الأخير تم بواسطة ahmedmecha ; 09-05-2008 الساعة 12:15 AM.
رد مع اقتباس
  #3 (permalink)  
قديم 10-05-2008, 12:29 AM
عضو
 
تاريخ التسجيل: Mar 2008
المشاركات: 16
معدل تقييم المستوى: 0
أبوبتال يستحق التميز
اقتباس:
إذا كنت تتعامل مع صورة أو أي بيانات أخرى والتي تكون على شكل مصفوفه فيجب عليك أولا تحويل هذه المصفوفه الى vector ومن ثم تحويل أرقام هذا الـ vector الى مصفوفة مكونه من n من العناصر وأربع أعمدة .
مشكور أخوي على التجاوب..بس أخوي ياليت توضح أكثر..كيف يمكن تحويل مصفوفه الى VECTOR ؟؟

لأني أريد تحويل صوره من أرقام عشريه الى ثنائيه وبعد التحويل أقوم بأسترجاع الصوره السابقه...لكن عجزت عن ذلك

وان كانت عن طريق تحويلها الى VECTOR فياليت أخي توضح زياده..لأني لم أستطيع التوصل الى ماتربوا اليه...

شكرا مرة أخرى على تعاونك..
رد مع اقتباس
  #4 (permalink)  
قديم 10-05-2008, 02:37 AM
عضو فعال جداً
 
تاريخ التسجيل: Oct 2006
المشاركات: 155
معدل تقييم المستوى: 0
ahmedmecha يستحق التميز

ببساطة لنفرض ان حجم المصفوفه هو 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) أو تعتمد على حجم الاعداد .


رد مع اقتباس
  #5 (permalink)  
قديم 10-05-2008, 01:21 PM
عضو
 
تاريخ التسجيل: Mar 2008
المشاركات: 16
معدل تقييم المستوى: 0
أبوبتال يستحق التميز
شكرا أخي على المساعده...يعطيك الف عافيه...

أصلا الفكره هي عمل quantization للصوره بـ8 بت ومن ثم نقوم بعمل تقليل البت من 8 الى 5 أي نقوم بألغاء أخر 3 بت..

ومن ثم أسترجاع الصوره الى ماكانت عليه ومن ثم توضيح الأثر الناتج من هذا العمل على الصوره..
رد مع اقتباس
  #6 (permalink)  
قديم 01-08-2008, 08:31 PM
عضو
 
تاريخ التسجيل: Oct 2007
المشاركات: 29
معدل تقييم المستوى: 0
هانى كسبان يستحق التميز
شكرا وجزاكم الله خيرا
رد مع اقتباس
رد

مواقع النشر (المفضلة)


أدوات الموضوع
تقييم هذا الموضوع
تقييم هذا الموضوع:

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


الساعة الآن 02:56 PM.


Powered by vBulletin® Version 3.7.1
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd

Content Relevant URLs by vBSEO 3.1.0