دستورهای محاسبه (ذخیره) مدت زمان (Duration) (محاسبه بر حسب ثانیه و دقیقه و ساعت و روز و سال) (دستورهای seconds و minutes و hours و days و years و duration)، در متلب (MATLAB)
گاهی ممکن است که محاسبات ما بر اساس ((مدت زمان)) (Duration) باشد، مثلا فرض کنید مسئله ما به این صورت است که می خواهیم مجموع تعداد ساعت کار چند نفر را حساب کنیم. به ما می گویند نفر اول ((2 ساعت)) کار کرده، نفر دوم ((3 روز و 4 ساعت)) کار کرده و نفر سوم هم ((5 روز و 10 ساعت)) کار کرده و می خواهیم مجموع ((تعداد ساعت)) کار آنها را به دست آوریم.
ممکن است اولین راهی که به ذهن شما می رسد این باشد که وقتی می خواهیم ((مدت زمان)) (Duration) کار هر نفر را در یک متغیر (Variable) ذخیره کنیم، آن را با محاسباتی (ضرب و جمع) تبدیل به ساعت کنیم (یعنی از همان ابتدا به صورت ساعت در متغیر ذخیره شوند) و بعد هم مجموع آنها را با یک جمع ساده به دست آوریم. اما موضوع این است که شاید مثلا در وسط برنامه بخواهیم در خروجی متلب (MATLAB)، میزان کار نفر دوم را بر حسب تعداد روز نمایش دهیم (نه اینکه فقط بر اساس تعداد ساعت اعلام کنیم)، بنابراین اگر میزان کار نفر دوم بر اساس ساعت ذخیره شده باشد، باید دوباره با مقداری جمع و ضرب، تعداد روز را به دست آوریم و در خروجی نمایش دهیم.
بنابراین در متلب (MATLAB)، هنگامی که با محاسبه (ذخیره) مدت زمان (Duration) سر و کار داریم، برای جلوگیری از این همه جمع و ضرب، دستورهایی در نظر گرفته شده که برای محاسبه و ذخیره ((مدت زمان)) (Duration) بر حسب ثانیه و دقیقه و ساعت و روز و سال به کار می روند. بنابراین برای همین مثالی که زدیم، می توانیم اصلا از همان ابتدا، ((مدت زمان)) (Duration) کار هر نفر را به همان صورتی که هست (بدون جمع و ضرب)، ذخیره کنیم و هر گاه خواستیم ((مدت زمان)) (Duration) را به هر یک از موارد ثانیه و دقیقه و ساعت و روز و سال و یا ترکیبی از آنها تبدیل کنیم، این دستورات به راحتی آن را انجام می دهند.
برای محاسبه (ذخیره) مدت زمان (Duration) بر حسب ثانیه و دقیقه و ساعت و روز و سال و یا ترکیبی از آنها، دستورات زیر در متلب (MATLAB) به کار می روند :
مقدار متغیر | نتیجه اجرای مثال | مثال | واحد زمان | دستور |
---|---|---|---|---|
2 sec | ذخیره ((مدت زمان)) (Duration) برابر 2 ثانیه در متغیری به نام A | A = seconds(2) | ثانیه (Second) | seconds |
2 min | ذخیره ((مدت زمان)) (Duration) برابر 2 دقیقه در متغیری به نام A | A = minutes(2) | دقیقه (Minute) | minutes |
2 hr | ذخیره ((مدت زمان)) (Duration) برابر 2 ساعت در متغیری به نام A | A = hours(2) | ساعت (Hour) | hours |
2 days | ذخیره ((مدت زمان)) (Duration) برابر 2 روز در متغیری به نام A | A = days(2) | روز (Day) | days |
- | - | - | هفته (Week) | - |
- | - | - | ماه (Month) | - |
- | - | - | سه ماه (Quarter) | - |
2 yrs | ذخیره ((مدت زمان)) (Duration) برابر 2 سال در متغیری به نام A | A = years(2) | سال (Year) | years |
01:02:03 | ذخیره ((مدت زمان)) (Duration) برابر 1 ساعت و 2 دقیقه و 3 ثانیه در متغیری به نام A | A = duration(1,2,3) | ترکیبی از واحدها | duration |
در مثال های جدول بالا، وقتی مقدار برگردانده شده توسط این دستورات را در متغیرهایی (Variable) ذخیره می کنیم، آن متغیرها (Variable) از نوع ((مدت زمان)) (Duration) خواهند بود (البته بر اساس اینکه ورودی دستورات چه باشد، حالتی هم وجود دارد که مقداری که توسط دستور برگردانده می شود از نوع عدد است که آن را در ادامه شرح خواهیم داد).
وقتی مقدار این متغیرها (Variable) را در خروجی متلب (MATLAB) نمایش می دهیم، چون در متغیرها (Variable) مقداری بر حسب ((مدت زمان)) (Duration) ذخیره شده، در خروجی متلب (MATLAB) کنار هر عدد نوشته می شود که بر حسب چه واحد زمانی می باشد. برای ثانیه عبارت sec ، برای دقیقه عبارت min ، برای ساعت عبارت hr ، برای روز عبارت days و برای سال عبارت yrs نوشته می شود.
دستورهای محاسبه (ذخیره) ((مدت زمان)) (Duration)، بر اساس اینکه ورودی آنها از چه نوعی (Type) باشد، خروجی متفاوتی خواهند داشت. یعنی دو حالت داریم :
1- ورودی دستور از نوع ((عدد)) باشد :
مثل کد زیر :
نتیجه :
در این حالت، دستور مورد نظر، یک مقدار از نوع ((مدت زمان)) (Duration) بر می گرداند (مثلا اگر دستور hours عدد 24 را در ورودی خود دریافت کند، آنگاه مقدار ((24 ساعت)) که از نوع ((مدت زمان)) (Duration) می باشد را برمی گرداند).
2- ورودی دستور از نوع ((مدت زمان)) (Duration) باشد :
مثل کد زیر :
نتیجه :
در این حالت، دستور مورد نظر، آن مقدار از نوع ((مدت زمان)) (Duration) را به مقدار معادل بر حسب واحد زمانی مربوط به خود تبدیل می کند و سپس نتیجه را به صورت ((یک عدد)) برمی گرداند. نتیجه از نوع عدد است، نه از نوع ((مدت زمان)) (Duration) (مثلا اگر دستور hours مقدار ((1 روز)) (از نوع مدت زمان) را در ورودی خود دریافت کند، آنگاه آن را به تعداد ساعت معادل تبدیل می کند (معادل 24 ساعت) و سپس مقدار ((24)) که از نوع ((عدد)) می باشد را برمی گرداند).
در این حالت اگر بخواهیم که خروجی دستور از نوع ((مدت زمان)) (Duration) باشد، می توانیم دستور را ((دو بار)) به کار ببریم. مثل کد متلب (MATLAB) زیر :
نتیجه :
ذخیره ((مدت زمان)) (Duration) در یک متغیر (Variable)، بر اساس یک واحد زمانی :
به مثال زیر توجه کنید :
((مدت زمان های)) (Duration) برابر 2 ثانیه و 2 دقیقه و 2 ساعت و 2 روز و 2 سال را در متغیرهایی (Variable) جداگانه ذخیره می کنیم :
3 خط اول کدها، برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب (MATLAB) می باشد.
نتیجه :
مشاهده می کنید که همه متغیرها (Variable) از نوع ((مدت زمان)) (Duration) می باشند.
چون در متغیرها (Variable) مقداری بر حسب ((مدت زمان)) (Duration) ذخیره شده، در خروجی متلب (MATLAB) کنار هر عدد نوشته می شود که بر حسب چه واحد زمانی می باشد. برای ثانیه عبارت sec ، برای دقیقه عبارت min ، برای ساعت عبارت hr ، برای روز عبارت days و برای سال عبارت yrs نوشته می شود.
ذخیره ((مدت زمان)) (Duration) در یک متغیر (Variable)، بر اساس واحدهای زمانی مختلف :
به مثال زیر توجه کنید :
((مدت زمان)) (Duration) برابر ((1 روز و 12 ساعت)) را در یک متغیر (Variable) ذخیره می کنیم :
نتیجه :
محاسبه ((مدت زمان)) (Duration) بر حسب واحدهای زمانی مختلف :
دستوراتی که برای محاسبه (ذخیره) ((مدت زمان)) (Duration) ذکر کردیم، می توانند یک ورودی از نوع ((مدت زمان)) (Duration) را دریافت کرده و بعد حساب کنند که معادل چه تعداد از واحد زمانی مربوط به خود (مربوط به دستور) می باشد.
مثلا دستور hours ، ورودی خود که از نوع ((مدت زمان)) (Duration) باشد را دریافت کرده و معادل آن را بر حسب تعداد ساعت (Hour) محاسبه می کند، به عنوان مثال، اگر به ورودی دستور hours یک مقدار از نوع ((مدت زمان)) (Duration) بدهیم که برابر 1 روز باشد، آنگاه دستور hours عدد 24 را برمی گرداند (چون هر روز شامل 24 ساعت است).
باید دقت کنید که دستورات محاسبه (ذخیره) ((مدت زمان)) (Duration)، وقتی برای ((محاسبه)) به کار می روند، آنچه برمی گردانند تنها یک عدد است و از نوع ((مدت زمان)) (Duration) نمی باشد. به عنوان مثال، اگر به ورودی دستور hours یک مقدار از نوع ((مدت زمان)) (Duration) بدهیم که برابر 1 روز باشد، آنگاه دستور hours عدد 24 را برمی گرداند (چون هر روز شامل 24 ساعت است)، اما این عدد 24 از نوع ((مدت زمان)) (Duration) نمی باشد و صرفا به عنوان عدد 24 برگردانده شده، نه مقدار 24 ساعت از نوع ((مدت زمان)) (Duration). برای درک بهتر این موضوع، به مثال ها توجه کنید.
به مثال زیر توجه کنید :
((مدت زمان)) (Duration) برابر ((1 روز و 12 ساعت)) را در یک متغیر (Variable) ذخیره می کنیم. سپس آن را بر حسب تعداد ساعت به دست می آوریم :
نتیجه :
دقت کنید که متغیر B از نوع عدد است، نه از نوع ((مدت زمان)) (Duration). اگر بخواهیم که متغیر B از نوع ((مدت زمان)) (Duration) باشد، می توانیم ((دو بار)) از دستور hours استفاده کنیم. مثل کد متلب (MATLAB) زیر :
نتیجه :
می خواهیم مجموع تعداد ساعت کار 3 نفر را حساب کنیم. نفر اول ((2 ساعت)) کار کرده، نفر دوم ((3 روز و 4 ساعت)) کار کرده و نفر سوم هم ((5 روز و 10 ساعت)) کار کرده. اکنون مجموع ((تعداد ساعت)) کار آنها را به دست می آوریم :
نتیجه :
محاسبه (ذخیره) ((مدت زمان)) (Duration) بر حسب ترکیب ساعت (Hour) و دقیقه (Minute) و ثانیه (Second)، با دستور duration :
دستور duration در متلب (MATLAB)، برای محاسبه (ذخیره) مدت زمان (Duration) بر حسب ترکیب ساعت (Hour) و دقیقه (Minute) و ثانیه (Second) به کار می رود.
به مثال زیر توجه کنید :
((مدت زمان)) (Duration) برابر ((1 ساعت و 2 دقیقه و 3 ثانیه)) را در یک متغیر (Variable) ذخیره می کنیم :
نتیجه :
مشاهده می کنید که ((مدت زمان)) (Duration) به صورت عبارت
01:02:03
نمایش داده شده که دو رقم اول آن برابر مقدار ساعت (Hour)، دو رقم دوم آن برابر مقدار دقیقه (Minute) و دو رقم سوم آن برابر مقدار ثانیه (Second) می باشد.
دو ((مدت زمان)) (Duration) را در دو متغیر (Variable) ذخیره کرده و سپس مجموع آنها را حساب می کنیم :