برنامه نویسی زمان در متلب

گاهي اوقات شما در برنامه ها خود مي خواهيد با زمان دقيق و واقعي به حل مسئله خود بپردازيد و يا برنامه شما مطابق با زمان موجود شروع به انجام عملكرد مشخصي نمايد مثلا فرض كنيد كه يك رباط طراحي كرده ايد و مي خواهيد بازوهاي آن تابع زمان و موقعيت مشخص عملكرد خاصي را انجام دهد و يا برنامه اي که در نرم افزار متلب نوشته ايد كه بر اساس تاريخ و زمان همان روز عملكرد خاصي را انجام مي دهد و يا مي خواهيد دستور عمل براي دستگاهي بنويسيد كه بعد از ساعت مشخص يك ماده شيمائي را به محلول اضافه نمايد وهزاران مثال ديگر كه بيانگر نياز يك برنامه نويس يه دانش نحوه دخالت توابع زمان در برنامه هاي خود مي باشد در مطلب اين توابع پيش بيني گرديده وبطور گسترده در آن وجود دارد بطوريكه شما هرزمان كه مايل بوديد با يك سري توابع خاص مي توانيد زمان واقعي را وارد سيستم محاسباتي خود نمائيد . در اين فصل به معرفي تعدادي از اين توابع  در نرم افزار متلب خواهيم پرداخت .

زمان جاري و تاريخ :

تابع clock به شما تارخ ، و زمان دقيق مطابق با تنظيمات كامپيوتر شما را براي شما اعلام  مي كند ، براي ديدن نحوه عملكرد اين دستور را درصفحه command در نرم افزار متلب نوشته و اينتر را فشار دهيد ، خواهيد ديد :

t=clock

 

t =

2004  8   9   6    46    33.623

مي بینید كه سال ، ماه ، روز و ساعت و دقيقه و ثانيه اي  را براي شما نشان مي دهد .

تابع now همين اطاعات را بصورت ساعت بيان مي كند :

now

ans =

     7.3217e+005

تابع date در نرم افزار متلب تاريخ و ماه و سال را به شما بيان مي كند :

date

 ans =

       09-Aug-2004

تغيير فرمت :

با بكارگيري تابع datestr شما مي توانيد فرمت نمايش زمان را به دلخواه خود تغيير دهيد  نحوه عملكرد اين دستور بصورت زير است :     

    str = datestr(DT,dateform)             

          str = datestr(DT,dateform,P)

مثال :

d1 = datenum('02-Oct-1996')

d1 =

    729300

d2 = datestr(d1+10)

d2 =

   12-Oct-1996

 

dv1 = datevec(d1)

dv1 =

    1996      10       2       0       0       0

dv2 = datevec(d2)

dv2 =

    1996      10      12       0       0       0

درجدول زير فرمت كاربرد تابع datestr بيان گرديده است :

 DATEFORM number   DATEFORM string               Example

 

       0             'dd-mmm-yyyy HH:MM:SS'   01-Mar-2000 15:45:17

       1             'dd-mmm-yyyy'            01-Mar-2000 

       2             'mm/dd/yy'               03/01/00    

       3             'mmm'                    Mar         

       4             'm'                      M           

       5             'mm'                     03           

       6             'mm/dd'                  03/01        

       7             'dd'                     01           

       8             'ddd'                    Wed         

       9             'd'                      W           

      10             'yyyy'                   2000        

      11             'yy'                     00          

      12             'mmmyy'                  Mar00       

      13             'HH:MM:SS'               15:45:17    

      14             'HH:MM:SS PM'             3:45:17 PM 

      15             'HH:MM'                  15:45       

      16             'HH:MM PM'                3:45 PM    

      17             'QQ-YY'                  Q1-96       

      18             'QQ'                     Q1          

      19             'dd/mm'                  01/03       

      20             'dd/mm/yy'               01/03/00    

      21             'mmm.dd,yyyy HH:MM:SS'   Mar.01,2000 15:45:17

      22             'mmm.dd,yyyy'            Mar.01,2000 

      23             'mm/dd/yyyy'             03/01/2000

      24             'dd/mm/yyyy'             01/03/2000

      25             'yy/mm/dd'               00/03/01

      26             'yyyy/mm/dd'             2000/03/01

      27             'QQ-YYYY'                Q1-1996       

      28             'mmmyyyy'                Mar2000       

      29 (ISO 8601)  'yyyy-mm-dd'             2000-03-01

      30 (ISO 8601)  'yyyymmddTHHMMSS'        20000301T154517

      31             'yyyy-mm-dd HH:MM:SS'    2000-03-01 15:45:17

 

به چند مثال از نحوه بكارگيري جدول فوق توجه فرمائيد :

t=now;

>> datestr(t)

ans =

     09-Aug-2004 07:08:04

>> datestr(t,2)

ans =

   08/09/04

>> datestr(t,5)

ans =

     08

 

>> datestr(t,14)

ans =

     7:08:04 AM

>> datestr(t,31)

ans =

     2004-08-09 07:08:04

تابع datenume برعكس تابع datestr در نرم افزار متلب عمل مي كند

مثال :

n = datenum('19-May-2004')

n =

    732086

تابع datenum براي تبديل تاريخ از حالت رشته (string )  به عدد يا بردار مي باشد :

d1 = datenum('02-Oct-1996')

d1 =

    729300

 

d2 = datestr(d1+10)

d2 =

   12-Oct-1996

 

dv1 = datevec(d1)

dv1 =

    1996      10       2       0       0       0

 

dv2 = datevec(d2)

dv2 =

    1996      10      12       0       0       0

 

 توابع تاريخ در نرم افزار متلب:

روز هفته را مي توانيد از دستور weekday بيابيد كه برايرروز يكشنبه عدد 1 و براي روز شنبه عدد 7 بيان مي شود :

[n,s] = weekday('19-Dec-2004')

n =

     1

s =

    Sun

با استفاده از دستور calendar ميتوانيد هر ماه از سال را كه بخواهيد بصورت تقويم روز شمار برايتان نمايش داده شود :calendar(2004,5)                                      

                   May 2004

     S     M    Tu     W    Th     F     S

     0     0     0     0     0     0     1

     2     3     4     5     6     7     8

     9    10    11    12    13    14    15

    16    17    18    19    20    21    22

    23    24    25    26    27    28    29

    30    31     0     0     0     0     0

مثال :

calendar('7/17/2004')

                   Jul 2004

     S     M    Tu     W    Th     F     S

     0     0     0     0     1     2     3

     4     5     6     7     8     9    10

    11    12    13    14    15    16    17

    18    19    20    21    22    23    24

    25    26    27    28    29    30    31

     0     0     0     0     0     0     0

 

 توابع تنظيم زمان ( سرعت ) در نرم افزار متلب :

توابع tic و toc به عنوان شروع كرنومتر و خاتمه آن مياشند بطوريكه مابين اين دو دستور هربرنامه اي كه نوشته شود زمان اجراي آنرا مي توانيد ببينيد :

tic;plot(rand(5));toc

elapsed_time =

               1.704

tic;plot(rand(5));toc

elapsed_time =

               0.063

در مثال فوق زمان ترسيم يك تابع مور نظر است كه در حالت اول 1.704 محاسبه گرديد در ترسيم دوباره همين تابع به علت اينكه از محاسبات قبلي استفاده شده پنجره ترسيم قبلا آماده بوده لذا  مشاهده ميكنيد كه زمان اجرا به نحوه شگفت انگيزي كاهش يافته است .

cputime  زمان پردازشگر مركزي (cpu ) كامپيوتر شما را بر حسب ثانيه اعلام مي كند .

cputime

ans =

       7531.8

etime زمان مابين را اندازه مي گيرد .

 

 ترسيمات :

 گاهي اوقات ترسيم داده هاي زماني بر روي محورهاي مختصات بسيار سودمند مي تواند ياشد ، نمايش محورها بر حسب تقسيم بندي زماني را تا حد بالائي تابع datatic  ممكن مي سازد و شما به دلخواه خود اين تابع را مجبور مي سازيد كه تقسيم بندي محورها را بر اساس تابع زماني مورد نظرتان انجام دهد :

مثال :

 

t = (2000:10:2090)';     % Time interval

p = [75.995 91.972 105.711 123.203 131.669 ...

    150.697 179.323 203.212 226.505 249.633]'; % Population

 

plot(datenum(t,1,1),p) %Convert years to date numbers and plot

grid on

datetick('x',11)  % Replace x-axis ticks with 2-digit year labels

بعد از اجرای برنامه در نرم افزار متلب  ترسيم زير را خواهيد ديد :

 

مثال :

y=[2000 2000 2001*ones(1,12)]';

m=[11 12 (1:12)]';

s=[1.1 1.3 1.2 1.4 1.6 1.5  1.6 1.7 1.8 1.3 1.9 1.7 1.6 1.95]';

bar(datenum(y,m,1),s)

datetick('x','mmmyy')

ylabel('$ Million')

title('Monthly Sales')

بعد از اجرای برنامه در نرم افزار متلب خواهيد ديد :

دسته ها: زمان در متلب

دیدگاه خود را بنویسید

دیدگاه پس از تائید مدیریت منتشر می شود.