![]() |
||||||||||||||||||||||||||||||||||||||||||||
|
نوشته های پیشین تیر 1385 دی 1384 آذر 1384 آبان 1384 مهر 1384 شهریور 1384 مرداد 1384 پیوندها
POWERED BY
A. tahan zadeh
|
از شن تا پردازنده
از شن تا پردازنده ماده اوليه:
منبع: http://mahditaheri2020.persianblog.com
2
نوشته شده در جمعه بیست و سوم تیر 1385ساعت 4:13  توسط علی بستان پيرا
|
آشنایی با میکرو کنترلر
میکروکنترلرها یکی از قطعات پرکاربرد الکترونیکی در صنایع گوناگون و مصارف شخصی می باشند که در بین علاقه مندان الکترونیک بسیار محبوب هستند. در واقع یک میکروکنترلر یک CPU مانند CPU ی کامپیوتر شماست همراه با مدارات و قطعاتی که برای کار آن ضروری است به اضافه مداراتی که امکاناتی را به آن اضافه می کند و اینها همگی در کنار هم و در یک تراشه جمع شده اند. در واقع میکروکنترلرها برنامه هایی را که برایشان نوشته شده و در داخل آنها قرار داده شده را اجرا می کنند. این برنامه ها دقیقا شبیه برنامه هایی است که در کامپیوترهای شخصی با زبانهایی مثل اسمبلی ، C ، بیسیک یا پاسکال نوشته می شوند. میکرو کنترلرها از ابتدا تا کنون پیشرفتهای زیادی داشته اند و هم اکنون تولید کنندگان زیادی آنها را در مدلهای مختلف و با کارکردهای مختلف می سازند. بعضی از مهمترین تولید کنندگان عباتند از Atmel و Microchip .همانطور که ذکر شد در داخل میکرو کنترلرها علاوه بر CPU (که عموما دارای گذرگاه داده 8 بیت است) مدارات دیگری نیز وجود دارند که بسته به تولید کننده و مدل آن متفاوت است. این مدارات ممکن است شامل نوسان ساز ساعت سیستم، حافظه Flash برای ذخیره برنامه، حافظه RAM ، حافظه EEPROM / Flash برای داده، شمارنده / تایمر، پورت سریال، مقایسه کننده آنالوگ، مبدل آنالوگ به دیجیتال / دیجیتال به آنالوگ، PWM ، پورت USB و... باشد. همانطور که گفته شد با وجود این مدارات در داخل تراشه، تقریبا برای کار میکروکنترلر به هیچ مدار خارجی دیگری نیاز نیست ولی در CPU ها تمامی این مدارات در خارج از تراشه هستند. این برای میکروکنترلرها هم مزیت است و هم عیب : طراحی سخت افزار و سیستم با میکروکنترلر ساده است ولی بعنوان مثال نمی توان به آسانی فضای حافظه را افزایش داد. از نظر پایه ها انواع آن از 8 پایه تا 40 پایه بصورت DIP و بالاتر ساخته می شود. هر میکروکنترلر دارای یک سری دستورالعمل های نرم افزاری است که می تواند آنها را اجرا کند که به آن مجموعه دستورالعمل گفته می شود. این دستورات از یک میکرو کنترلر به دیگری تفاوت هایی دارند و در بعضی از مدلها مثل PIC و AT89s51 اصلا به هم شباهتی ندارند. این یکی از نقاط ضعف میکرو هاست. بعنون مثال برنامه ای که برای PIC16F84 نوشته شده بر روی ATMega8535 قابل اجرا نیست. تفاوت چشم گیر بین دستور العمل های مربوط به سازندگان است مثلا میکروهای سری PIC با بقیه همخوانی ندارد. این سری ساخت شرکت Microchips بوده و بقیه ساخت شرکت Atmel هستند. حال آنکه دستورات و برنامه های At89s51 کاملا به درستی بر روی At89s52 اجرا می شود. همچنین مجموعه دستورالعملها در سری 89s شبیه سری های tiny و Mega است. برنامه ای که میکرو باید اجرا کند پس از نوشته شدن اسمبل یا کمپایل می شود تا کد ماشین برای آن میکرو تولید شود (نوشتن برنامه و تبدیل آن عموما بر روی یک PC صورت می گیرد.). پس از اینکار برنامه ترجمه شده باید به حافظه کدی که در درون میکرو است انتقال یابد. این کار توسط یک دستگاه کمکی بنام پروگرامر انجام می شود که در واقع یک مدار رابط بین کامپیوتر و میکروکنترلر است. پس از اینکار برنامه در درون میکرو باقی می ماند و هنگامی که میکرو بر روی بورد دستگاه موردنظر نصب شود شروع به اجرای برنامه می کند. در واقع چون سخت افزار میکروها (مثل تعداد پایه ها و طریقه پروگرام کردن آنها) متفاوت است هر سری از آنها پروگرامر مخصوص به خود را می خواهد. پس برای اینکه بتوانیم از یک سری از میکروکنترلرها استفاده کنیم دو چیز لازم است: یکی اسمبلر یا کمپایلر و دیگری پروگرامر. امروزه میکروها در دستگاه های زیادی بکار می روند مثل ضبط صوت، ماشین لباس شوئی، یخچال، اتومبیل، رسیورهای ماهواره، شارژرهای باطری، تلوزیون، گوشی موبایل و ... در واقع هرجا که طراحی مدار در حدی پیچیده باشد که نتوان آنرا با قطعات گسسته اجرا کرد از میکروها استفاده می شود. منبع: amirpar.persianblog.com
2
نوشته شده در چهارشنبه هفتم دی 1384ساعت 11:48  توسط علی بستان پيرا
|
با سلام خدمت شما دوستان عزیز
متشکرم از از اینکه نسبت به وبلاگ من لطف دارین و شرمنده از اینکه فرصت نمی کنم وبلاگ رو آپدیت کنم راستش هدفم این بود که این وبلاگ تولید کننده علم باشه. تا اینجا هم هر مطلبی که تو این وبلاگ مشاهده می کردین رو خودمون نوشته بودیم. مطالب این وبلاگ برای اولین بار بود که به نمایش در میومد.از اونجا که ارائه مطالب جدید در وبلاگ مستلزم صرف وقت زیادی بود این وبلاگ خیلی دیر به دیر اپدیت می شد .به همین دلیل تصمیم گرفتم از مطالب سایت ها و وبلاگ های دیگر هم دراین وبلاگ استفاده کنم . باز هم تاکید می کنم که اگه مطلب و یا خبر جالبی دارید می تونین برای من بفرستید تا به اسم خودتون در این وبلاگ نمایش داده بشه. با تشکر
2
نوشته شده در دوشنبه بیست و هشتم آذر 1384ساعت 14:29  توسط علی بستان پيرا
|
آموزش matlab قسمت چهارم
اين قسمت به موضوع خاصي اختصاص ندارد.در اين قسمت سعي ما بر آن است كه شما را با بعضي جنبه هاي محاسباتي وكاربردي نرمافزارMatlab آشنا كنيم. 1)تبديل مختصات و مبنا الف)مختصات استوانه اي به كارتزين و بالعكس براي تبديل مختصات استوانه اي(يا قطبي) به كارتزين از دستور زير استفاده مي كنيم [x,y,z]=pol2cart(θ,r,z) لازم به ذكر است كه براي تبديل مختصات قطبي به دكارتي بايد از مقدار z صرف نظر كرد يعني [X,Y] = pol2cart(θ,r) براي تبديل معكوس(كارتزين به استوانه اي) از دستورات زير استفاده ميشود: [θ,r,z] = cart2pol(x,y,z) [θ,r] = cart2pol(x,y) ب) كروي به كارتزين براي تبديل مختصات كروي به كارتزين از دستور زير استفاده مي كنيم [x,y,z]=sph2cart(θ,Ф,r) براي تبديل معكوس(كارتزين به كروي) از دستور زير استفاده ميشود: [θ, Ф,r] = cart2sph(x,y,z) توضيح اينكه در matlab تابع مستقيمي براي تبديل از كروي به استوانه ي و بالعكس وجود ندارد. ج)تبديل مبنا ليستي از تبديلات مبنا درmatlab به شرح زير مي باشد. 1)هگزا دسيمال به دهدهي: n = hex2dec('hex_value') 2)دهدهي به هگزادسيمال: d = dec2hex(n) 3)دهدهي به باينري a = dec2bin(n) 4)باينري به دهدهي n =bin2dec('bin_value') ذكر اين نكته ضروري است كه هنگامي كه از تبديلات 2و4 (هگزا دسيمال به دهدهي و باينري به دهدهي) استفاده مي كنيم بايد مقدار مورد نظر را بين دوعلامت ' ' قرار دهيم.در حقيقت توابع 2و 4 مقادير هگزادسيمال و باينري را به عنوان رشته اي از كاراكترها مي پذيرند. 2)انتگرال تقريبي براي محاسبه انتگرال هاي تقريبي از سه تابع trapz, quad,quad3 استفاده مي كنيم. براي استفاده از دستور tarpz بهاين صورت عمل ميكنيم الف)يك رشته عددي در فاصله مورد نظر تعريف مي كنيم. ب)تابع دلخواه خود را بر حسب رشته قبلي تعريف مي كنيم ج)با استفاده از دستور trapz انتگرال مورد نظر را محاسبه مي كنيم. مي توانيم در اين قسمت با استفاده از يك دستور انتصاب مقدار انتگرال را در يك متغير قرار دهيم. از موارد الف و ب در قسمت رسم توابع دو بعدي استفاده كرده ايم.درباره دستور trapz بايد گفت كه فرم كلي آن به صورت زير مي باشد: y=trapz(x,y); دقت كنيد كه در دستور trapz هر دو رشته x,y بايستي داراي طولهاي مساوي باشند.در مثال زير اين روش براي محاسبه انتگرال تابع sin دربازه (0,pi)وبا قطعاتي به طول 0،2 استفاده شده است x=0,0.2,pi; y=sin(x); trapz(x,y); طريقه استفاده از دستورات quad و quad3 كه از روش سيمپسون براي تقريب انتگرال استفاده مي كنند،در قسمت رياضيات سمبليك توضيح داده خواهد شد. 3)ساخت رشته. اعمال رشته با ساخت رشته هاي عددي در قسمت رسم توابع دو بعدي آشنايي داريد براي ايجاد رشته عددي از دو دستور زير مي توان استفاده كرد: linspace(a,b,n) x=a:n:b اعمال روي رشته ها: فرض كنيم aوb دو رشته تعريف شده بصورت زير باشند: a=0:10 b=0:50:5 اعمال بين رشتهها را مي توان به عمليات رشته-اسكالر و رشته-رشته تقسيم كرد. الف)عمليات رشته-اسكالر عملياتي نظير جمع تفريق ضرب و تقسيم يك اسكالر در رشته به صورت زير مي باشد: c=a-2 c=3*a c=a/5 c=2*a+5 ب)عمليات رشته-رشته عمليات رياضي بين رشته ها به سادگي عمليات بين رشتهها و اسكالرها نيست و به طور مشخص تعريف عمليات بين رشته هايي با طولهاي متفاوت مشكل مي باشد.اما وقتي كه طول رشته ها مساوي باشدعمليات جمع،تفريق،ضرب و تقسيم آنها بر پايه عمليات عنصر به عنصر تعريف مي شود.براي تعريف عمليات رشته-رشته خصوصا ضرب و تقسيم از علامت نقطه قبل از عملگر استفاده مي كنيم. مثال c=a.*b c=a./b+2 درقسمت بعد اعمال روي چند جمله اي ها و ماتريس ها را مورد بررسي قرار مي دهيم.
2
نوشته شده در دوشنبه نهم آبان 1384ساعت 19:35  توسط علی بستان پيرا
|
آموزش میکروکنترلر 8051 (قسمت دوم)
در این قسمت معماري سخت افزار 8051 رو با نگاهي از بيرون به پايه هاي اون بررسي ميكنيم . خلاصه ي مشخصات اين IC به اين ترتيبه : 1) 4 KB : ROM 2) 128 B : RAM 3) چهار I /O port هشت بيتي 4) رابط سريال يا serial interface 5)64 KB : فضاي حافظه ي خارجي براي كد 6) 64 KB : فضاي حافظه ي خارجي براي داده 7) دو تايمر / شمارنده ي 16 بيتي ( timer / counter ) 8) Boolean processor يا پردازنده ي بولي ( كه عمليات روي بيت ها را انجام مي دهد ) 9) 210 مكان بيتي آدرس پذير ( bit – addressable ) 10) انجام عمليات ضرب و تقسيم در 4 ميكرو ثانيه . و اما پايه ها : جمعاً 32 پين يا همون پايه از 40 پين 8051 به عنوان خطوط I / O port ( درگاه ورودي – خروجي ) عمل مي كنند ؛ علاوه بر اين 24 خط از اين خطوط دو منظوره هستند . هر يك از اين خطوط مي تونن به عنوان I/O يا خط كنترل ويا بخشي از address bus ( گذرگاه آدرس ) و يا data bus ( گذرگاه داده ) به كار برن . هر 8 خط يك port يا درگاه ، مي تونن به صورت يك واحد در ارتباط با وسايل موازي مثل چاپگرها و مبدل هاي ديجيتال به آنالوگ بكار برن . و يا هر خط به تنهايي با وسايل تك بيتي مثل سوئيچ ها ، LED ها ، ترانزيستورها ، سيم پيچ ها ، موتور ها و بلند گو ها ارتباط برقرار كند . اما قبل از اين كه وارد جزئيات پايه ها بشيم بهتره در مورد نحوه ي آدرس دهي اطلاعاتي داشته باشيم ؛ يه حافظه رو با چهار خانه ي حافظه در نظر بگيريد . خونه هاي اين حافظه رو به اين شكل آدرس دهي ميكنيم : پس اين حافظه با دو تا خط آدرس ، آدرس دهي ميشه ؛ كه هر كدوم از اين خطوط ميتونن مقادير 0 و 1 رو بپذيرند . خطوط آدرس رو با Ai معرفي ميكنيم . پس A1 و A0 خطوط آدرس ما هستن . به A1 بيت بالا و به A0 بيت پايين حافظه گفته ميشه . اين يك نمونه ي ساده بود از حافظه ؛ به همين ترتيب مي شه خونه هاي حافظه هاي بزرگ رو هم آدرس دهي كرد . در اين صورت ما به تعداد بيشتري خط آدرس نياز داريم تا بتونيم خونه ها رو به صورت يكتا آدرس دهي كنيم . به طوري كه با n خط آدرس 2^n خانه ، قابل آدرس دهي هستند. از اون جايي كه 8051 داراي 210 مكان بيتي آدرس پذير است ،براي آدرس دهي اين تعداد خانه ي حافظه به حداقل 8 خط آدرس نياز داريم . و هر يك از اين خطوط به شكل يك پين در ميكرو در مي آن . اما اين 8 خط فقط در مواقع استفاده از حافظه ي داخلي است كه كافي اند . وقتي لازمه از حافظه ي خارجي هم استفاده كنيم به خطوط بيشتري براي آدرس دهي نياز داريم كه در اين حالت از پورت مالتي پلكس شده استفاده مي كنيم ؛ در اين زمينه در توضيحات پورت هاي 0 و 2 توضيحاتي داده شده . port يا درگاه 0 : پورت 0 يك پورت دو منظوره از پين 32 تا 39 تراشه 8051 است . اين پورت ، در طراحي هايي با كمترين اجزاي ممكن به عنوان يه پورت I /O عمومي استفاده ميشه . در طراحي هاي بزرگتر كه از حافظه ي خارجي استفاده مي كنيم ، اين پورت يه address & data bus مالتي پلكس شده است . معني اين جمله اينه كه گاهي لازمه براي جمع و جور كردن ميكرو ، از يه پين ، هم داده منتقل بشه هم آدرس. از طرفي عمل انتقال داده و آدرس هرگز با هم صورت نمي گيرن ؛ به طوري كه هميشه اول آدرس داده ي مورد نظر عبور ميكنه ، بعد اين آدرس ذخيره ميشه ، و سپس ميكرو از روي اون آدرس داده رو انتقال مي ده ؛ پس ما ميتونيم از يه پورت هم به عنوان گذرگاه داده استفاده كنيم و هم به عنوان گذرگاه آدرس . به اين جور گذرگاهي ، گذرگاه مالتي پلكس شده مي گن . پورت 1 : اين درگاه ، پورت اختصاصي I/O روي پين هاي 1 تا 8 است . پين هاي p1.0 تا p1.7 در صورت نياز براي ارتباط با وسايل خارجي به كار مي رن . وظيفه ي ديگه اي براي اين پايه ها در نظر گرفته نشده . هر چند استثناءً در IC ها ي 8032 و 8052 از p1.0 و p1.1 به عنوان خطوط I/O و يا ورودي تايمر سوم استفاده مي شه . پورت 2 : يه پورت دو منظوره كه به عنوان I / O عمومي و يا بايت بالاي address busدر طراحي با حافظه ي كد خارجي external code memory به كار مي ره … اين پورت همچنين در طراحي هايي كه به بيش از 256 بايت از حافظه ي داده ي خارجي ( external data memory ) نياز دارن هم استفاده مي شه . توضيح : فرض كنيد در يك طراحي ، مي خواهيم از external memory استفاده كنيم . گفتيم كه UC (مخفف ميكرو كنترولر ) علاوه بر داده بايد آدرس اون رو هم داشته باشه . ما از پورت 2 به عنوان گذرگاه آدرس استفاده مي كنيم . در واقع ما براي ارتباط ميكرو با هر IC ديگه اي هم به داده نياز داريم هم به آدرس ؛ و البته آدرس ها يكتا هستند . همون طور كه قبلاً گفته شد در اين حالت به 16 خط آدرس نياز داريم كه 8 خط (بايت بالا ) رو پورت 2 تاًمين ميكنه و 8 خط ديگه (بايت پايين ) رو پورت 0 به شكل مالتي پلكس شده . اگه اين خطوط آدرس رو به شكل زير در نظر بگيريم به خطوطA15 تا A8 بايت بالاي آدرس و به خطوط A7 تا A0 بايت پايين گفته مي شه . ( بايت ، از اون جهت كه هر نيمه شامل 8 خط يا همون بيت ميشه …) A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 نتيجه اين كه خطوط آدرسي كه مربوط به بايت بالاي آدرس هستند از طريق پورت 2 مي تونن با خارج در ارتباط باشن . پورت 3 : روي پين هاي 10 تا 17 كه علاوه بر I /O عمومي ، هر يك از اين پايه ها وظايف ديگه اي رو هم در ارتباط با امكانات خاص 8051 دارند . ( شرح اين وظايف باشه براي بعد … ) تا اين جا وظبفه ي 32 پين مشخص شد . پين هاي 40 و 20 به ترتيب براي اتصال به منبع تغذيه يا Vcc و زمين يا Vss به كار ميرن . نوسان ساز ( oscillator) ميكرو به پايه هاي 18 و 19 وصل ميشه ؛ و نهايتاً 8051 چهار سيگنال اختصاصي براي كنترل گذرگاه داره كه روي پين هاي 9 , 29 , 30 , 31 قرار مي گيرن .
موفق باشید لهراسبی
2
نوشته شده در یکشنبه دهم مهر 1384ساعت 9:32  توسط علی بستان پيرا
|
آشنایی با منطق فازی (قسمت دوم و آخر)
با عرض سلام و پوزش بابت تاخير در به روز كردن وبلاگ بحث قبلي خود را در مورد منطق فازي پي مي گيريم در قسمت قبل راجع به كليات منطق فازی بحث کرديم در اين قسمت می خواهيم به روش چهار مرحله ای استفاده از منطق فازی بپردازيم.اين چهار مرحله عبارتند از: 1)فازي كردن 2)استنتاج 3)تركيب و ساخت 4)بر گرداندن از حالت فازي
1)فازي كردن:در اين مرحله واقعيات بر اساس سيستم فازي تعريف مي شوند.ابتدا بايد ورودي و خروجي سيستم معرفي شده،سپس قوانين اگر-آنگاه مناسب به كار گرفته شوند . براي ساخت تابع عضويت بايستي از داده هاي خام استفاده شود.حال سيستم براي اعمال منطق فازي آماده است. مثالي براي فازي كردن: دستگاه تهويه اي را در نظر بگيريد كه با اندازه گيري دما و رطوبت اتاق ميزان به جريان در آوردن هوا را مشخص مي كند.در اين مورد ورودي عبارتست از دما و ميزان رطوبت وخروجي نيز سطح جريان هواي خروجي از دستگاه تهويه مطبوع است كه شامل سه حالت ، خاموش،كم و زياد مي باشد.همچنين اين قوانين اگرـآنگاه استفاده مي شوند: 1)اگر اتاق گرم باشد آنگاه هواي زيادي منتشر كن 2)اگر اتاق خنك باشد،آنگاه هيچ هوايي منتشر نكن 3)اگر اتاق سرد و مرطوب است ، آنگاه كمي هوا را به جريان بيينداز. در آخر،يك متخصص دانا بايد دو تابع عضويت تعين كند.يكي براي اينكه دما را به مقدار فازي تبديل كند وديگري براي تبديل ميزان رطوبت به مقدار فازي 2)استنتاج:هنگامي كه ورودي ها به سيستم مي رسنداستنتاج، همه قوانين اگر-آنگاه را مورد ارزيابي قرار مي دهد و درجه درستي آنها را مشخص مي كند.اگر يك ورودي داده شده به طور صريح با يك قانون اگر-آنگاه مشخص نشده باشد، آنگاه تطابق بخشي مورد استفاده قرار مي گيرد تا جوابي مشخص شود.راههاي متعددي براي پيدا كردن پاسخ بخشي وجود دارد كه البته فراتر از حد اين مقاله ميباشند. مثالي براي استنتاج: فرض كنيد دستگاه تهويه مطبوع دما و درجه رطوبت را اندازهگيري كرده و به آنها به ترتيب مقادير فازي 0.7 و 0.1 را نسبت داده باشد.حال اين سيستم بايستي درستي هر يك از قوانين فازي را كه در بالا بحث شد مورد بررسي قرار دهد.براي اين منظور روشهاي استنتاج بسياري وجود دارد.اين مثال ساده ترين روش را مورد استفاده قرار مي دهدكه روش ماكسيمم-مينيمم ناميده مي شود.اين روش مقدار فازي قسمت آنگاه (نتيجه) را به قسمت اگر نسبت ميدهد.بنابراين اين روش مقادير فازي 0.7 و 0.1 و 0.1 را به ترتيب به قوانين 1، 2 و 3 نسبت مي دهد. 3)ساخت: در اين قسمت براي بدست آوردن يك نتيجه كلي تمامي مقادير بدست آمده از قسمت استنتاج با هم تركيب مي شوند.قوانين فازي مختلف نتايج مختلفي خواهند داشت.بنابرايت ضروري است تا همه قوانين در نظر گرفته شوند.براي اين منظور روشهاي متعددي وجود دارند كه توضيح همه آنها در اين مقاله نمي گنجد. مثالي براي ساخت: هر نتيجه استنتاجي درباره سيستم تهويه مطبوع عمل خاصي را پيشنهاد مي كند.در مثال فوق قانون اول، سطح گردش هواي زياد را پيشنهاد مي كند. قانون دوم، خاموش كردن، و قانون سوم، سطح گردش هواي كم را بيان ميكند. تكنيك هاي متعددي براي بدست آوردن نتيجه كلي وجود دارند.اين مثال از روش ماكزيمم-مينيمم كه روش ساده اي است استفاده مي كند. اين روش ماكزيمم مقدار فازي قسمت استنتاج به عنوان نتيجه در نظر مي گيرد.يعني در عمل، قسمت ساخت مقدار 0.7 را انتخاب مي كند چون مقدار بيشتري را بين مقادير فازي دارا است. 4)بازگرداندن از حالت فازي:در اين مرحله مقدار فازي بدست آمده از قسمت ساخت به يك داده قابل استفاده تبديل مي شود.اين قسمت از كار اغلب پيچيده است چون مجموعه فازي نبايستي مستقيما به داده قابل استفاده تبديل شود.از آنجا كه كنترلگر هاي سيستم هاي فيزيكي به سيگنال هاي گسسته نياز دارند،اين مرحله بسيار مهم مي باشد. مثالي براي باز گرداندن از حالت فازي: به خاطر داريد كه مقدار فازي بدست آمده از مرحله قبل 0.7 بود.اين مقدار عددي براي سيستم نهويه مطبوع قابل فهم نيست.بايد مشخص شود كه دستكاه كداميك از فرامين كم،زياد يا خاموش را به جريان بيندازد.مرحله بازگرداندن از حالت فازي بايستي عدد 0.7 را به يكي از فرامين فوق تبديل كند.در اين مثال واضح است كه مقدار خروجي 0.7 بيانگر اين است كه سيستم تهويه مطبوع بايستي در حالت زياد باشد. كاستي ها منطق فازي و منطق بولي هر دو بر پايه واقعيات مي باشند.با اين تفاوت كه منطق فازي توانايي كاركردن با داده هاي مبهم را نيز داراست.با اين وجود منطق فازي هنوز قادر به حل بعضي مسائل نيست: عضويت در يك مجموعه فازي شديدا بر پايه داده هاي معين است.به عبارت ديگر، منطق فازي هيچ ادراكي از گمان ها،تعقل،شك يا ناسازگاري شواهد ندارد.بسياري از سيستم ها، مانند آنچه در بحث كاربرد گفته شدميتوانند از منطق فازي بدون هيچ مشكلي استفاده كنند.چون نياز به هيچ تصميم گيري دروني و فكري ندارند.اما بعضي سيستم ها به منطق پيچيده تري نياز دارند تا بتوانند به بيان گمان، تعقل و ... بپردازند. براي نشان دادن نقصان منطق فازي مي توان به سيستم شناخت دوست يا دشمن اشاره كرد (Identify Friend or Foe : IFF) اين سيستم براي شناخت هواپيماهاي ارتشي يا مسافربري دوست و دشمن به كار مي رود.در حالت عادي سيستم از هر هواپيما يك سيگنال شناسايي دريافت مي كند .دلايل زيادي وجود دارند كه ممكن است سيستم اين سيگنال را دريافت نكند مانند: بد عمل كردن سيستم،بد عمل كردن فرستنده،نبودن اين سيستم روي هواپيماها،پارازيت سيگنال يا خاموش بودن راديو. در اين موارداين سيستم بايد از منطق براي شناسايي هواپيماها استفاده كند.كه فقط مربوط به داده هاي مبهم از قبيل مسير پرواز نيست.چون اين داده ها هواپيماهاي دوست را از دشمن تشخيص نمي دهند.بنابراين منطق فازي در سيستم تشخيص دوست از دشمن كاربردي ندارد. براي اين منظور بايد از منطقي استفاده شود كه توانايي تصميم گيري دروني را داشته باشد. نتيجه گيري با وجود اينكه منطق فازي از حل بعضي مسائل عاجز است(مانند مثال قبل) ولي به جزء لاينفك روشهاي حل مساله در هوش مصنوعي بدل شده است.كه راه ساده اي را براي ساخت نتيجه صريح بر پايه اطلاعات ورودي غير صريح،مبهم،نويز دار و مفقود شده مهيا مي سازد.در نتيجه منطق فازي به ابزار ساده اي براي مدل كردن پيچيدگيهاي دنياي واقعي بدل شده است. اين مدل ها معمولا از موارد مشابه خود بسيار دقيق تر بوده و نتايج دقيقتري به ما ارائه مي دهند.به همين دليل منطق فازي پتانسيل لازم را براي صرفه جويي وقت و هزينه ها در توسعه محصولات خواهد داشت.مزايايي كه كمتر شركت و موسسه اي قادر به ناديده گرفتن آن است منبع www-ugrad.cs.colorado.edu/ ~cs3202/papers/Brigette_Krantz.html
2
نوشته شده در پنجشنبه سی و یکم شهریور 1384ساعت 13:34  توسط علی بستان پيرا
|
آشنایی با منطق فازی (قسمت اول)
با عرض سلام خدمت همه دوستان مطالبي كه تا اينجا مورد بررسي قرار گرفت،بيشتر بر پايه موضوعات كاربردي بود.در اين قسمت مي خواهيم به يك بحث تئوري بپردازيم.همانطور كه از عنوان اين بخش پيداست،اين بخش به معرفي منطق فازي اختصاص ذارد.اين مبحث در دو قسمت تقديم شما عزيزان خواهد شد.اميد است كه مورد عنايت شما عزيزان قرار گيرد.همچنان منتظر دريافت نظرات و پيشنهادات شما عزيزان هستيم. آشنايي با منطق فازي معرفي اگر چه واژه منطق فازي تداعي كننده منطق بي اعتبار است،ولي دقيقا به منطق تخميني و تقريبي ارجاع داده ميشود.بر خلاف منطق بولي،كه به هر گزاره ارزش درست يا غلط را نسبت مي دهد،منطق فازي درجه درستي به گزاره ها نسبت ميدهد.كامپيوتر ها مي توانند از منطق فازي براي نشان دادن ايده هاي مبهم و غير دقيق استفاده كنند.مانند گرما و بلندي.در اين مقاله به مفاهيم بنيادي و كاربردهاي منطق فازي خواهيم پرداخت. سابقه تاريخي در نيمه هاي دهه 1960 لطفي زاده استاد دانشگاه بركلي كاليفرنيا،براي اولين بار به معرفي و تشريح منطق فازي پرداخت.لطفي زاده منطق فازي را به عنوان شيوه اي براي پردازش داده ها توسعه داد. وي به جاي اين فرض كه يك عنصر يا عضو يك دسته است و يا عضو يك دسته نيست،عضويت بخشي يك دسته را پيشنهاد كرد.در آغاز توجه خاصي به اين نظريه نشد.اولين كاربرد عملي اين فرضيه در سال 1974 بود ،هنگامي كه ممداني و اصيليان از منطق فازي براي تنظيم يك موتور بخار استفاده كردند.گام بعدي در سال 1985 بود،هنگامي كه محققين در آزمايشگاه بل اولين تراشه اي را كه بر پايه منطق فازي بود ساختند.اين تراشه منجر به ساخت بسياري از محصولات مانند دروبين هاي فيلم برداري ،اجاق هاي پخت و... شد. شركت OMRONدر سال 1993 اولين كامپيوتر مبتني بر منطق فازي را ساخت.امروزه منطق فازي مي رود كه يكي از سريع الرشد ترين شاخههاي هوش مصنوعي شود. مفاهيم اساسي سيستم منطق كلاسيك بر پايه منطق بولي است، منطق بولي بر اين فرض استوار است كه يك عنصر يا عضو مجموعه داده شده است ويا عضو مجموعه مفروض نيست. هر دو فرض فوق نمي توانند تواما درست باشند.متاسفانه اين سيستم براي نشان دادن مفاهيم مبهم محدوديت دارد.به عنوان مثال،فرض كنيد منطق بولي براي تشخيص اينكه يك اتاق گرم است يا سرد مورد استفاده قرار گيرد.همه افراد با اين فرض كه 100 درجه فارنهايت براي دماي اتاق گرم و 25 درجه فارنهايت براي دماي اتاق سرد محسوب مي شود موافقند.اما اگر دماي اتاق 75 درجه فارنهايت باشد،دسته بندي دماي اتاق بر حسب سرد و يا گرم بودن اتاق بسيار مشكل خواهد بود. در اين مورد و موارد مشابه منطق بولي وسيلهي مناسبي براي شناسايي مقدار ميانه نيست. منطق فازي روش توسعه يافته منطق بولي براي به كاربردن مفاهيم مبهم است. براي بيان ابهام در قالب يك عدد،منطق فازي تابعي براي عضويت در يك دسته معرفي مي كند، كه به هر عنصر يك عدد حقيقي بين صفر و يك نسبت مي دهد(صفر و يك هم شامل اين اعداد مي باشند). اين عدد نشان دهنده درجه عضويت عنصر نسبت به مجموعه مورد نظر مي باشد. عضويت صفر بيانگر اين است كه عنصر مورد نظر كاملا خارج از مجموعه است. در حالي كه عدد يك نشان دهنده اين است كه عنصر مورد نظر كاملا در مجموعه قرار دارد.هر عدد بين اين دو مقدار بيانگر درجه عضويت بخشي مي باشد.حال بياييد مثالي را كه در پاراگراف قبل بررسي شد مورد بحث قرار دهيم.اگر منطق فازي براي بررسي گرمي اتاق مورد استفاده قرار گيرد،100 درجه فارنهايت،داراي مقدار يك و 25 درجه فارنهايت مقدار صفر را دارا خواهد بود.از طرف ديگر 75 درجه فارنهايت مقداري بين صفر و يك خواهد داشت. توضيح اضافي در مورد تابع عضويت يك متخصص دانا بايد تابع عضويتي ارائه دهد كه با عقايد عمومي سازگاري داشته باشد.تابع عضويتي كه گرمي يك اتاق را توصيف مي كند، بايستي مفهوم سردي و گرمي را كه در ذهن افراد است منعكس نمايد.اگرچه منطق فازي بر توابع عضويت تكيه دارد، ولي سرچشمه آن خارج قلمرو اين تابع مي باشد. اين تابع مي تواند اشكال مختلفي داشته باشد:مثلثي،زنگي،ذوزنقه اي،نمايي و ...شكل زير نشان دهنده چندين تابع براي نشان دادن گرمي اتاق است.در اين توابع دماي 75 درجه فارنهايت به عنوان دماي ميانگين در نظر گرفته شده است.
نمايش گرافيكي سه تابع عضويت مختلف براي نشان دادن گرمي اتاق از آنجا كه منطق فازي توسعه يافته منطق بولي است،مفاهيم منطقي مشترك زيادي مي توانند در هر دو اعمال شوند.بويژه اعمال كلاسيكي مانند :اجتماع ، اشتراك و متمم در منطق فازي تعريف مي شوند.در عين حال اين مفاهيم داراي تعاريف متفاوتي هستند. اجتماع:اجتماع دو مجموعه فازي A,B برابر با بزرگترين درجه عضويت بخشي عناصر A , B است.به عنوان مثال،اجتماع مقادير فازي 0.7 و 0.5 برابرست با 0.7 اشتراك:اشتراك دو مجموعه فازي A,B برابر با كوچكترين درجه عضويت بخشي عناصر A , B است. به عنوان مثال،اجتماع مقادير فازي 0.7 و 0.5 برابرست با 0.5 متمم:متمم مجموعه فازي A با كم كردن آن عدد از يك بدست مي آيد. براي مثال متمم مقدار فازي 0.7 برابرست با 0.3 مانند منطق بولي، منطق فازي نيز ميتواند از قانون ” اگر ‹شرط› آنگاه ‹عمل› “ استفاده كند.براي مثال قانوني براي تهويه مطبوع مي تواند به اين صورت باشد: ”اگر اتاق گرم و مرطوب است آنگاه دستگاه را روشن كن“ اما برخلاف منطق بولي،قسمت شرط با عبارات صحيح يا غلط سنجيده نمي شود،بلكه با درجه درستي مورد ارزيابي قرار مي گيرد. كاربردها همانطور كه در قسمت پيشين اشاره شد،منطق فازي براي استفاده در سيستم هايي كه با داده هاي مبهم و رويه هاي مبتني بر مدل هاي مبهم سر و كار دارند مناسب است. بسياري از كاربردهاي تجاري منطق فازي مرتبط به كنترل فرآيند مي باشد.كه به مديريت و كنترل فرايندهاي مكانيكي يا محيطي ارجاع داده مي شوند.از جمله كاربردهاي منطق فازي مي توان به موارد زير اشاره كرد: دستگاه تهويه مطبوع:دستگاه طوري تنظيم مي شود تا به تدريج دماي اتاق به دماي مورد نظر برسد دستگاه تنظيم سرعت:سرعت وسيله نقليه را با كاهش يا افزايش شتاب و همچنين كنترل سوخت و ترمز، بر روي مقدار ثابتي حفظ مي كند. ديگ بخار كشتي:دما،فشار و محتويات شيميايي را كنترل كرده و در سطح قابل اطميناني قرار مي دهد. دوربين هاي فيلمبرداري:تشخيص مي دهد كه شيئي كه از آن فيلمبرداري مي شود حركت مي كند يا حركت، ناشي از لرزش دست فيلمبردار است. ماشين هاي لباسشويي:چرخه شستشو را با امتحان اندازه لباسها،مقدار پودر لباسشويي و ميزان پاك كنندگي بهينه مي كند. حال اين سوال مطرح است:”اين وسائل چگونه از منطق فازي استفاده مي كنند؟“ تا اينجا اين مقاله، مفاهيم اساسي مربوط به منطق فازي را مورد بررسي قرار داده است:تابع عضويت،درجه عضويت،عمليات منطقي و قانون اگر ـ آنگاه . اما اين مقاله هنوز به اينكه چگونه منطق فازي براي گرفتن تصميمات كاربردي به كار گرفته مي شود ،نپرداخته است.بحث بعدي پيرامون روش چهار مرحله اي استفاده از منطق فازي است،كه در كاربرد هاي فوق به كار گرفته مي شود.درقسمت بعد به بررسي اين چهار مرحله خواهيم پرداخت .
2
نوشته شده در شنبه نوزدهم شهریور 1384ساعت 2:38  توسط علی بستان پيرا
|
آموزش matlab قسمت سوم( رسم رويه ها و توابع سه بعدي)
در اين قسمت به رسم توابع در سه بعد خواهيم پرداخت.ابتدا رسم توابع برداري در سه بعد و سپس رسم رويه ها مورد بررسي قرار خواهند گرفت. 1)رسم توابع سه بعدي در اين قسمت مانند قسمت قبل يك رشته عددي تعريف كرده و براي x و y و z سه تابع جداگانه برحسب اين متغير تعريف كرده و تابع مورد نظر را رسم مي كنيم. بهتر است با يك مثال اين قسمت را باز كنيم مثال t=linspace(-10,10,100) x=sin(t); y=cos(t); z=t; حال نوبت به رسم اين تابع مي رسد: براي اين منظور از دستور plot3 استفاده ميكنيم به اين صورت: plot3(x,y,z) مي توان از سوييچ هاي رنگ و علامت كه در قسمت قبل گفته شد استفاده كرد. 2)رسم رويه ها در matlab طريقه رسم رويه ها با رسم توابع يكي است ولي در بعضي موارد تفاوتهايي نيز وجود دارد.در اين قسمت به بررسي طريقه رسم رويه هايي به فرم z=f(x,y) خواهيم پرداخت.همانند قسمت قبل اين كار را در سه مرحله انجام ميدهيم. مرحله اول: در اين مرحله بايد شبكه اي m x n معرفي كنيم براي اين كار از دستور meshgrid استفاده مي كنيم.شكل كلي اين دستور به اين صورت است: [x,y]=meshgrid(a:b:n, c:d:m) مثال [x,y]=meshgrid(- همانطور كه در مثال بالا ملاحظه مي كنيد اگر از پارامتر هاي n,m استفاده نكنيم matlab به طور پيش فرض مقدار يك را براي آنها در نظر خواهد گرفت. اجراي اين دستور موجب مي شود شبكه اي m x n توليد شود مرجله دوم:در اين مرحله بايد تابع مورد نظر را بر حسب x,y تعريف كنيم.مثلا براي تعريف يك سهمي وار به اين صورت عمل مي كنيم: z=x.^2+y.^2 حال بايد رويه مورد نظر را رسم كنيم براي رسم اين رويه بايد از دستورmesh يا surf استفاده كنيم. نكته:در بعضي موارد (مخصوصا توابع راديكالي ،چون matlab از متغير هاي مختلط استفاده مي كند بايد از مقدار به دست آمده real بگيريم. مثال:رسم نيمكره بالاي صفحه xy [x,y]=meshgrid(- z=sqrt(100-x.^2-y.^2); t=real(z); mesh(t) مي توانيد در مثال فوق از دستور surf به جاي mesh استفاده كنيد و نتيجه را ببينيد. البته طريقه ديگري هم از رسم توابع دو و سه بعدي وجود دارد كه در مبحث رياضيات سمبليك به آن خواهيم پرداخت.در پايان اين قسمت نيزمانند قسمت قبل توجه شما را به چند مثال جلب مي كنم.
2
نوشته شده در جمعه یازدهم شهریور 1384ساعت 13:23  توسط علی بستان پيرا
|
آموزش میکروکنترلر 8051 (قسمت اول)
با سلام خدمت همه دوستان اميدوارم تا اينجا از اين وبلاگ راضي باشيد.يه خبر خوب براتون دارم و اون اينه كه از اين به بعد علاوه بر آموزش matlab ،آموزش كار با ميكروكنترلرهاي 8051 رو هم در اين وبلاگ خواهيم داشت.اين قسمت توسط خانم لهراسبي نوشته ميشه.قبل از هر چيز جا داره از زحمات ايشون به خاطر تهيه و ارسال اين مطلب تشكر كنم.اميدوارم در آينده نزديك شاهد نمايش مطالب شما عزيزان نيز در اين وبلاگ باشيم.خوب ديگه بهتره بريم سر اصل مطلب: به نام خداي خوب و مهربان … سلام ! هدف اصلي از اين بحث اينه كه يه سبك ساده و قابل فهم براي بچه هاي برق و احيانا كامبيوتر جهت پيوند زبان برنامه نويسي C و ميكرو كنترلر هاي خانواده يMCS-51 مورد بررسي قرار بگيره… فقط از همين ابتدا چند تا نكته هست كه بهشون اشاره ميكنم : 1) از اون جايي كه خود من هم اطلاعات محدودي راجع به اين موضوع دارم ، به نتيجه رسيدن اين بحث مستلزم همكاري بقيه هم هست… اين فقط يه استارته براي شروع يه حركت علمي… ما مشتاقانه از ايده ها راهنمايي ها و نظرات همه استفاده مي كنيم ؛ احيانا اگه كسي احساس مي كنه بحث ، پيش پا افتاده و ساده است ، و اطلاعات دقيق تري در اين باره داره لطفا در ميون بذاره تا بتونيم از ايشون واز اين وبلاگ نهايت استفاده رو ببريم ؛ 2) متاسفانه اغلب ، ورود به يه مبحث كسل كننده است… ولي بايد قبول كرد كه بدون معرفي هاي اوليه ، كار ، راحت بيش نميره… هر چند من سعي كردم اين مباحث رو تا جايي كه ميشه خلاصه كنم ؛ 3) گاهي مجبوريم يه اصطلاحاتي رو به كار ببريم كه شايد دقيقا معني شون را ندونيم ؛ از اون جايي كه هدف ما به دست اوردن يه ديد كليه ، بررسي دقيق تر باشه براي بعد… (خيلي به لغات و اصطلاحات گير نمي ديم…) و اما ميكرو كنترلر ها : كامپيوتر ها وظيفه ي كنترل رو در ارتباط با دنياي واقعي بر عهده دارند.ميكرو كنترلر ها بر خلاف ميكرو كامپيوتر ها و ريز پردازنده ها اغلب در چنين كاربرد ها يي يافت ميشن . همون طور كه ميدونيد ، ميكرو كنترلر، قطعه اي شبيه به ريزپردازنده است. كافيه به داخل كيبورد نگاه كنيد تا مثالي از يك ميكرو كنترلر رو در يك طراحي با كمترين اجزا ممكن ببينيد در سال 1971 ، اينتل ،8080 رو به عنوان اولين ريز پردازنده ي موفق و در 1976 ، 8748 رو به عنوان اولين قطعه ي خانواده ي ميكرو كنترلرهايMCS-8051 معرفي كرد. 8748 با 17000 ترانزيستور در يك مدار مجتمع، شامل يك CPU ، 1 كيلو بايت EPROM ، 64 بايت RAM ، 27 بايه يI/O و يك تايمر 8بيتي بود. اما تفاوت ميكرو كنترلر ها و ريز پردازنده ها در معماري سخت افزار ، كاربرد ها ، و دستورالعمل ها خلاصه ميشه ؛ در حالي كه ريز پردازنده يك CPU ي تك تراشه است ، ميكرو كنترلر در يك تراشه ي واحد ،علاوه بر CPUشامل ROM ، RAM ، يك رابط سريال ،يك رابط موازي ، تايمر و مدارات زمان بندي وقفه هم هست ؛ يك ويژگي مهم ميكرو كنترلر ها ، سيستم وقفه ي موجود در داخل اونهاست . ميكروكنترلر ها به عنوان ابزار ها ي كنترل گرا ( control-oriented devices ) اغلب براي پاسخ بي درنگ به محرك هاي خارجي ( وقفه ها ) مورد استفاده قرار ميگيرند .يعني بايد در پاسخ به يك اتفاق ، سريعا يك فرايند رو معوق نگه داشته ، به فرايند ديگر بپردازند . از نظر كاربرد ميكرو كنترلر ها برا ي كنترلر ابزار هاي I / O مناسبند ، اما ريز پردازنده ها براي پردازش اطلاعات در سيستم هاي كامپيوتري . از طرفي مجموعه دستورالعمل هاي ريز پردازنده ها بر عمل پردازش تمركز پيدا كردن و در نتيجه داراي روش هاي آدرس دهي قدرتمند به همراه دستورالعمل هايي براي انجام عمليات روي حجم زياد داده هستند . دستور العمل ها روي چهار بيت ها ( nibbles ) ، بايت ها ، 16 بيت ها و حتي 32 بيت ها ( double words ) عمل ميكنند. در حالي كه ميكرو كنترلر ها مجموعه دستورالعمل هايي مناسب براي كنترل ورودي ها و خروجي ها دارند.اين كار تنها نيازمند يك بيت است . ميكرو كنترلر ها دستورالعمل هايي براي 0 و 1 كردن بيت ها ي جداگانه دارن ( clear & set ) ، و عمليات ديگري رو هم روي بيت ها مثل and و or و exor كردن منطقي بيت ها ، برش در صورت 1 يا پاك بودن يك بيت و مانند آنها انجام ميدن .اين ويژگي مفيد بندرت در ريز پردازنده ها يافت ميشه چون اون ها معمولا براي كار روي بايت ها يا واحد هاي بزرگ تر داده طراحي ميشن . با اين همه در قدرت پردازش محض ، يه ميكروكنترلر هرگز به ريزپردازنده نميرسه . و اما مزايا و معايب … وظايفي كه ميكروكنترلر ها انجام ميدن وظايف تازه اي نيستن ؛ چيزي كه جديده اينه كه طراحي ها با تعداد اجزاء كمتري از گذشته انجام ميشن . اعمال منطقي كه نيازمند چندين IC هستند اغلب توسط يك ميكرو كنترلر با اضافه كردن يك برنامه ي كنترلي انجام مي شن . عيب كار در سرعت است . راه حل هاي ميكرو كنترلي هرگز دز سرعت به باي راه حل هاي مشابه با اجزاي گسسته نميرسند .در موقعيت هايي كه نياز به پاسخ هاي خيلي سريع وجود داره (كه البته به ندرت چنين كاربرد هايي پيدا ميشن ) ، ميكرو ها عكس العمل ضعيفي از خودشون نشون ميدن…به عنوان يك مثال نمايش ساده شده اي از انجام عمل nand با استفاده از ميكرو رو در نظر ميگيريم ؛ (عمل nand يكي از اعمال ساده است در ميكرو ها ، شبيه and و or كه به زودي در مدارهاي منطقي ترم چهارم بهش ميرسيم… ) به كار بردن ميكرو براي چنين عملي چندان مرسوم نيست ، اما اين امكان وجود داره . نرم افزار بايد عمليات منطقي اي رو انجام بده كه برنامه ي زبان اسمبلي 8051 براي اين عمل منطقي به اين صورته : loop mov c,p1.4 ; read p1.4 bit in to carry flag anl c.p1.5 ; and with p1.5 anl c,p1.6 ; and with p,1.6 cpl c ; convert to "nand" result mov p1.7,c ; send to p1.7 output bit sjmp loop ; repeat اگه اين برنامه در يك ميكرو 8051 اجرا بشه ، تاخير انتشار از يك transition يا همون گذار ، در ورودي تا استقرار سطح منطقي درست در خروجي دست كم در مقايسه با معادل TTL آن ( transistor-transistor logic ) بسيار طولاني است . بسته به نسبت زماني تغيير در ورودي و تشخيص اين تغيير توسط برنامه ، تاخير بين 3 تا 17 ميكرو ثانيه خواهد بود .در حالي كه تاخير انتشار در معادل TTL از مرتبه ي 10 نانو ثانيه است يعني حدود 1000 بار كمتر .پر واضحه كه در ايجاد توابع منطقي سرعت ميكرو ها با مدار هاي TTL معادل ، قابل مقايسه نيست . در بسياري كاربرد ها به ويژه اونهايي كه با عمل كرد انسان سر و كار دارن ،اين كه تاخير ها به نانو ثانيه اندازه گيريي بشه يا ميكرو و ميلي اهميتي نداره . (وقتي كه فشار روغن اتومبيل افت بيدا ميكنه يا سنسور ربات يه انحراف رو در مسير مي بينه لزومي نداره ظرف چند نانو ثانيه مطلع شيم… ) مثال گيت منطقي nand نشون ميده ميكرو ها مي تونن عمليات منطقي انجام بدن . از اين گذشته هر چي طراحي ها پيچيده تر باشه مزاياي طراحي ميكرو كنترلري بيشتر خودش رو نشون ميده … در آينده ، سعي ميكنيم يه توضيح اجمالي داشته باشيم روي سخت افزار MCS-51 ها … خسته نباشيد ؛ لهراسبي
2
نوشته شده در سه شنبه یکم شهریور 1384ساعت 15:8  توسط علی بستان پيرا
|
آموزش matlab (قسمت دوم) رسم توابع دوبعدي
اين قسمت به رسم نمودارها بوسيله matlab اختصاص دارد .ولي قبل از آن بهتر است نگاهي به شيوه رسم نمودار بوسيله matlab داشته باشيم. روال كار اين است كه ابتدا بايد نقاطي را به برنامه معرفي كنيم (مثلا نقاط روي محور x) سپس با تعريف تابع مورد نظر، مقادير متناظر با هر نقطه روي محورx را بدست بياوريم(بدست آوردن y متناسب با هر x ) حال نقاطي با مولفه هاي (x,y) داريم . برنامه matlab با وصل كردن اين نقاط نمودار تابع نمايش ميدهد .توجه داشته باشيد matlab از حساب برداري براي رسم توابع استفاده مي كند.براي معرفي تابع بايد از عملگرهاي برداري استفاده كرد(اين مطلب در مرحله دوم بررسي خواهد شد) حال بياييد اين روال را مرحله به مرحله بررسي كنيم
1) مرحله اول معرفي اعداد روي محورx(متغير مستقل) به matlab است. براي اين منظور از دو شيوه زير مي توان استفاده كرد
الف)استفاده از دستور linspace شكل كلي اين دستور به اين صورت است:x=linspace(a,b,n) دستورفوق بازه(a,b) را به n قسمت مساوي تقسيم كرده و در x قرارمي دهد مثال: x=linspace(0,2*pi,100) اين دستور فاصله بين صفر و دوپي را به صد قسمت مساوي تقسيم مي كند.يعني صد نقطه با فواصل مساوي در فاصله بين صفر و دو پي ايجاد مي كند.
ب) روش ديگر ايجاد نقاط روي محور دلخواه استفاده از اين روش است x=a:m:b اجراي دستور فوق باعث مي شود تا matlab بازه (a,b) را به فواصلي با طولm تقسيم كند مثال x=0:0.1:2*pi اجراي دستور فوق باعث مي شود تا matlab فاصله بين صفر و دو پي را به تكه هايي باطول 0.1 واحد تقسيم كند. 2) مرحله دوم:در اين مرحله بايد متغير وابسته(y) را بر حسب تابعي از متغير مستقل(x) تعريف كنيم. تذكر::در matlab عملگرهاي * و – و + و / و ^ براي عمليات ماتريسي به كار ميروند.براي استفاده از آنها در محاسبات برداري بايد قبل از اين عملگرها از نقطه استفاده كنيم به اين صورت: .* و .- و .+ و ./ و.^ مثلا براي تعريف يك تابع درجه دو بايد به اين صورت عمل كنيم: y=3.*x.^2.+4.*x-7
البته بايد هنگام تعريف تابع به اولويت محاسبات هم توجه داشته باشيم.ترتيب انجام عمليات مانند ديگر زبانهاي برنامه نويسي است يعني اولويت به ترتيب با پرانتز، توان، ضرب وتقسيم و در آخر جمع و تفريق از چپ به راست مي باشد(در matlab علامت ^ بيانگر توان است . مثلا a^b خوانده مي شود a به توان b). فراموش نكنيد كه براي تعريف تابع حتما از عملگرهاي برداري استفاده كنيد.
3) در اين مرجله بايد x,y هاي بدست آمده رابه هم متصل كنيم تا نمودار به دست آيد براي اين منظور از دستور plot استفاده مي كنيم. به اين صورت: plot(x,y) اگر دستورات را درست وارد كرده باشيد در اين مرحله پنجره اي باز مي شود و نمودار مورد نظر را نشان مي دهد
نكته1)اگر بخواهيد نمودارچند تابع را در يك صفحه نشان دهيد مي توانيد آنها را جداگانه تعريف كرده و بوسيله يك دستور plot همه را رسم كنيد مثال زير نمودار توابع sin و cos را در يك صفحه و در فاصله صفر تا دو پي رسم مي كند x=linspace(0,2*pi,100) y=sin(x) z=cos(x) plot(x,y,x,z)
نكته2)اگر بخواهيد نمودار شما با رنگ خاص يا شكل ديگري (مثلا نقطه چين) نمايش داده شود ،مي توانيد از سوييچ هاي زير به عنوان آرگومان اضافي دستور plot استفاده كنيد.
البته براي استفاده از سوييچ هاي فوق بايد انها را بين دو علامت ' ' قرار داد مثال:
plot(x,y,':y')
دستور فوق منجر به نمايش نمودار بصورت نقطه چين و با رنگ زرد خواهد شد.
نكته3)برخي دستورهاي جانبي در مورد رسم نمودار به شرح زير ميباشند
axis equal ضرايب هردو محور را مساوي قرار می دهد
grid on خطوط شبكه را نمايان ميسازد(خطوط شطرتجي به نمودار اضافه مي كند)
نكته4) رسم نمودارها در دستگاه قطبي مشابه دستگاه دكارتي است با اين تفاوت كه به جاي دستور plot ازدستور polarاستفاده مي كنيم polar(theta,r) theta بيان گر زاويه و r بيان گر شعاع مي باشد مثال: t=linspace( 0,2*pi,100) r=sin(4*t) polar(t,r) در پايان اين قسمت توجه شما را به چند مثال جلب مي كنم
موفق باشيد
2
نوشته شده در سه شنبه بیست و پنجم مرداد 1384ساعت 13:11  توسط علی بستان پيرا
|
|
|||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||