آموزش متلب (MATLAB)
۵۴۳ آموزش
نمایش دسته بندی ها (۵۴۳ آموزش)

سریعتر اجرا شدن برنامه های متلب (MATLAB)، با تعریف اولیه بردارها و ماتریس ها، حتی در زمان مشخص نبودن تعداد دقیق عنصرهای بردار یا ماتریس

همان طور که می دانید، در زبان برنامه نویسی متلب (MATLAB) نیازی به تعریف اولیه بردارها و ماتریس ها نمی باشد و نیازی به تعیین اندازه آنها (تعداد عنصرهای آنها) قبل از مقداردهی عنصرهای آنها نیست. اما چنانچه قبل از مقداردهی عنصرهای بردارها و ماتریس ها، آنها را با یک اندازه مشخص و به صورت تعریف اولیه با عناصر برابر مقدار 0 یا 1 بسازیم (با دستورات zeros یا ones که مقدار اولیه 0 یا 1 را برای عنصرها در نظر می گیرند)، سرعت اجرای عملیات هایی که برای مقداردهی آن بردارها و ماتریس ها می باشند، افزایش چشمگیری خواهد داشت و بنابراین سرعت اجرای کل برنامه افزایش می یابد.

برای اثبات این موضوع، دو قطعه کد را با تعریف اولیه بردار و بدون تعریف اولیه بردار اجرا می کنیم و با استفاده از دستورهای tic و toc ( کلید شماره 19 )، زمان اجرای این دو قطعه کد را به دست آورده و با یکدیگر مقایسه می نماییم.

ابتدا ساخت بردار بدون تعریف اولیه را خواهیم داشت که اندازه بردار، در زمان مقداردهی عنصرهای جدید آن، افزایش می یابد :

نتیجه :

اکنون همان قطعه کد را با تعریف اولیه بردار بر اساس دستور zeros خواهیم داشت که باعث می شود بردار بر اساس اندازه نهایی آن (که در این مثال، مقدار اندازه نهایی را می دانیم) به صورت اولیه تعریف شود و دارای عناصری با مقدار برابر عدد 0 بوده و سپس در عملیات های مقداردهی، مقدار عنصرها در آن ذخیره شوند (به جای صفرهای اولیه قرار بگیرند) :

نتیجه :

همان طور که مشاهده می کنید، بر اساس مقایسه دو زمان نمایش داده شده در نتایج، قطعه کدی که از دستور zeros برای تعریف اولیه بردار استفاده کرده است، حدود 30 برابر سریعتر اجرا شده است. بنابراین مشاهده می کنید که تعریف اولیه بردارها و ماتریس ها، می تواند اجرای برنامه را بسیار سریعتر کند.

نکته

در مثال قبل، اندازه نهایی بردار را می دانستیم، اما در مواردی که اندازه نهایی بردار یا ماتریس را نمی دانیم، می توانیم یک تخمین از اندازه نهایی آن داشته باشیم و بر اساس آن تخمین، بردار یا ماتریس را به صورت اولیه تعریف نماییم.

اگر تعداد عنصرها کمتر از اندازه تخمین زده باشد، در صورت تعریف اولیه با استفاده از zeros ، تعدادی 0 اضافه در انتهای ماتریس خواهیم داشت که معمولا به راحتی می توان آنها را از عنصرهای اصلی تشخیص داد (به شرط اینکه آخرین عنصر تعیین شده برای آن، برابر 0 نباشد که در غیر این صورت، آن را با 0 های انتهای ماتریس، اشتباه خواهیم گرفت، بنابراین چنین مواردی را نیز در نظر داشته باشید. مثلا می توانید در هنگام اجرای برنامه، شماره متناظر با آخرین عنصر مقداردهی شده را در یک متغیر ذخیره کنید، تا محل آخرین عنصر را بدانید). اگر هم که تعداد عنصرها از اندازه تخمین زده بیشتر باشد، آنگاه خود به خود با مقداردهی عنصرهای جدید، اندازه ماتریس افزایش می یابد و نگرانی از این بابت وجود ندارد.

به مثال زیر توجه کنید :

مثال

فرض کرده ایم که نمی دانیم اندازه نهایی بردار برابر چه مقداری است و تخمین اولیه 17000 عنصر را برای آن داریم و با دستور zeros ، آن را به صورت اولیه، تعریف می کنیم :

نتیجه :

با مقایسه زمان اجرای کدها با حالتی که اصلا تعریف اولیه نداریم (در قسمت های اول آموزش) متوجه می شویم که کدها حدود 10 بار سریعتر اجرا شده است.

نویسنده علیرضا گلمکانی
شماره کلید 26250
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 0 0 0

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)