🔵فشردهسازی دادهها در حافظه🔵
سطح پیچیدگی:🌕🌓🌑🌑🌑
پیشنیاز: آشنایی با مبانی حافظه
برای: پیشرفته
📝هدف از این پست : استفاده بهینه از حافظه.
گفته شد که متلب از روش heap برای مدیریت حافظه استفاده میکند، پس طولانی کردن اجراهای متلب ممکن است به فرگمنت شدن حافظه بینجامد. هنگامی که حافظه فرگمنت شود، مکان های بسیاری از فضاهای خالی وجود دارد ولی تکه تکه هستند و به دلیل عدم پیوستگی نمیتوانند متغیرهای بزرگ را که جدیدا تعریف شده اند در خود جای دهند(دقت کنید که برای جاسازی یک آرایه در حافظه نیاز به یک بلوک پیوسته از حافظه داریم).
1⃣ در صورتی که خطای out of memory دریافت کردید، تابع pack برخی از داده ها را در حافظه فشرده میکند، بنابراین بلوک های پیوسته بزرگتر آزاد میشود.
#For_advanced , #Out_of_memory , #Memory
@MatlabTips
سطح پیچیدگی:🌕🌓🌑🌑🌑
پیشنیاز: آشنایی با مبانی حافظه
برای: پیشرفته
📝هدف از این پست : استفاده بهینه از حافظه.
گفته شد که متلب از روش heap برای مدیریت حافظه استفاده میکند، پس طولانی کردن اجراهای متلب ممکن است به فرگمنت شدن حافظه بینجامد. هنگامی که حافظه فرگمنت شود، مکان های بسیاری از فضاهای خالی وجود دارد ولی تکه تکه هستند و به دلیل عدم پیوستگی نمیتوانند متغیرهای بزرگ را که جدیدا تعریف شده اند در خود جای دهند(دقت کنید که برای جاسازی یک آرایه در حافظه نیاز به یک بلوک پیوسته از حافظه داریم).
1⃣ در صورتی که خطای out of memory دریافت کردید، تابع pack برخی از داده ها را در حافظه فشرده میکند، بنابراین بلوک های پیوسته بزرگتر آزاد میشود.
#For_advanced , #Out_of_memory , #Memory
@MatlabTips
روز گذشته خبر فرود موفقیتآمیز راکت شرکت فضایی اسپیس ایکس بر روی سکوی شناور منتشر شد. این اتفاق را میتوان انقلابی بزرگ در صنعت فضایی دانست که میتواند شروع عصری تازه در ارسال راکت و ماهوارهبر به فضا باشد. روز گذشته یکی از موشک های فالکون ۹ این شرکت به شکل موفقیت آمیزی بر روی سکوی شناور فرود آمد.
این پروژه شاهکار نظریه کنترل به عنوان شاخه ای از ریاضیات است که از قرن شانزدهم با نیوتون و لایبنیتز آغاز شد و با لاپلاس، لاگرانژ، لیاپانوف و کولموگروف به اوج رسید. این نظریه در قلب سیستم هایی قرار دارد که قابلیت خودتنظیمی در مقابل تغییرات و کنترل شرایط پیچیده مانند همین فرود را دارند.
اسپیس ایکس تا کنون چندین بار در انجام این پروژه شکست خورده بود تا این که بالاخره توانست یک راکت را برای ماموریت فضایی اعزام کند و پس از انجام ماموریت، آن را به سلامت به زمین بازگرداند. موفقیت این پروژه بدین معناست که از این پس شرکتهای فضایی میتوانند از راکتهایی که برای ماموریتهای فضایی مانند حمل ماهواره اعزام میشوند، دوباره استفاده کنند و این به معنای کاهش شگفتانگیز هزینههای پروژههای فضایی است.
#News
@MatlabTips
این پروژه شاهکار نظریه کنترل به عنوان شاخه ای از ریاضیات است که از قرن شانزدهم با نیوتون و لایبنیتز آغاز شد و با لاپلاس، لاگرانژ، لیاپانوف و کولموگروف به اوج رسید. این نظریه در قلب سیستم هایی قرار دارد که قابلیت خودتنظیمی در مقابل تغییرات و کنترل شرایط پیچیده مانند همین فرود را دارند.
اسپیس ایکس تا کنون چندین بار در انجام این پروژه شکست خورده بود تا این که بالاخره توانست یک راکت را برای ماموریت فضایی اعزام کند و پس از انجام ماموریت، آن را به سلامت به زمین بازگرداند. موفقیت این پروژه بدین معناست که از این پس شرکتهای فضایی میتوانند از راکتهایی که برای ماموریتهای فضایی مانند حمل ماهواره اعزام میشوند، دوباره استفاده کنند و این به معنای کاهش شگفتانگیز هزینههای پروژههای فضایی است.
#News
@MatlabTips
با توجه به این برخی دوستان تصور می کنند فیلم ویدیوی بالا به صورت برعکس نمایش داده شده و فیک است، منابع زیر را برای بررسی بیشتر علاقه مندان قرار می دهیم:
[1] https://www.theguardian.com/science/video/2016/apr/09/spacex-falcon-9-rocket-successfully-lands-on-ocean-platform-video
[2] https://www.space.com/32517-spacex-sticks-rocket-landing-sea-dragon-launch.html
[1] https://www.theguardian.com/science/video/2016/apr/09/spacex-falcon-9-rocket-successfully-lands-on-ocean-platform-video
[2] https://www.space.com/32517-spacex-sticks-rocket-landing-sea-dragon-launch.html
the Guardian
SpaceX Falcon 9 rocket successfully lands on ocean platform – video
The SpaceX Falcon 9 rocket booster makes a successful landing on an ocean platform
🔵پایهریزی یک برنامه🔵
سطح پیچیدگی:🌕🌓🌑🌑🌑
پیشنیاز: ندارد
برای: همه
📝هدف از این پست : برنامه نویسی اصولی
هنگامی که تصمیم میگیرید چگونه یک برنامه را بنویسید، برنامه را بگیرید و به تعدادی برنامه های کوچکتر و مستقل تقسیم کنید.
وظیفه هر برنامه را به عنوان یک تابع جداگانه تعریف کنید.
توابع را به شکل متناسبی کوتاه انتخاب کنید بطوری که هر تابع یک وظیفه انجام دهد.
#Programming , #For_all
@MatlabTips
سطح پیچیدگی:🌕🌓🌑🌑🌑
پیشنیاز: ندارد
برای: همه
📝هدف از این پست : برنامه نویسی اصولی
هنگامی که تصمیم میگیرید چگونه یک برنامه را بنویسید، برنامه را بگیرید و به تعدادی برنامه های کوچکتر و مستقل تقسیم کنید.
وظیفه هر برنامه را به عنوان یک تابع جداگانه تعریف کنید.
توابع را به شکل متناسبی کوتاه انتخاب کنید بطوری که هر تابع یک وظیفه انجام دهد.
#Programming , #For_all
@MatlabTips
Forwarded from دستیار زیر نویس و هایپر لینک
تقریبا 1100 گونه از خفاش وجود دارد و هیچکدام از آنها کور نیستند. در نور به خوبی میبینند. چون در غار زندگی میکنند و تاریک است از سیستم سونیک برای راه یابی در تاریکی استفاده میکنند.
#Science_Facts
@MatlabTips
#Science_Facts
@MatlabTips
جلوگیری از خطای out of memory با استفاده از افزایش java heap memory به روایت تصویر.
#Out_of_memory , #For_advanced
@MatlabTips
#Out_of_memory , #For_advanced
@MatlabTips
🔵بازسازی موتور اجرایی متلب🔵
📝هدف از این پست: آشنایی با نسخه جدید متلب 2015b
در نسخه 2015b با عنایت به موتور اجرایی جدید روشی که کدهای متلب اجرا میشد تغییرات اساسی کرد. معماری بهبودیافته ای که برنامه های متلب را اجرا میکند سریعتر است و بعلاوه یک پلتفرم نیز برای بهبود در نسخه های آینده هم فراهم میکند و جالب اینجاست که همه اینها بدون کوچکترین تغییری در کد شما اتفاق می افتد(کافی است نسخه متلب خود را ارتقا دهید). و حالا نظر برخی از متخصصین تراز اول دنیا در این باره:
🖊یر التمن یکی از غول های متلب و نویسنده کتاب روش های افزایش سرعت در متلب میگوید:
من با افراد مختلفی کار کردم و زمان زیادی را صرف کمک کردن به کاهش زمان اجرای کدهای متلب آنها کردم. اما زمانی که متوجه شدم که موتور جدید چقدر در بهبود عملکرد موثر است واقعا شگفت زده شدم. حتی یکی از همین افراد گزارش داد که یکی از پروسس های بسیار مهم در برنامه اش دو برابر سریعتر در نسخه 2015b کار میکند.
🖊آقای روبرت دانفورث مهندس، تحلیلگر مدلسازی و تست کمپانی کوهلر میگوید:
موتور اجرایی جدید متلب در نسخه 2015b زمان اجرا کدهای متلب ما را نصف کرده است.
🖊پروفسور انریکو نوبیل متخصص ترمودینامیک و انتقال حرارت میگوید:
برنامه های من در حجم های دو بعدی و یه بعدی برای انتقال حرارت و جریان شاره ها بشدت بهبود یافته است - تقریبا 35 درصد - خسته نباشید!
🖊مهندس ایرج فرجی مدیر کانال matlab_tutorial میگوید:
از ورژن 2010 استفاده کنید چرا که سریعتر است!!!!!!!!!!!!!!!!!!!!!
🌕انشتین🌕 یک جمله فوق العاده زیبا دارد که جا دارد اینجا گفته شود:
🖊دو چیز انتها ندارد: جهان هستی و حماقت بشر. در مورد اولی مشکوکم، اما دومی را یقین دارم.
مرجع:
https://blogs.mathworks.com/loren/2016/02/12/run-code-faster-with-the-new-matlab-execution-engine/
#R2015b , #News , #Facts
@MatlabTips
📝هدف از این پست: آشنایی با نسخه جدید متلب 2015b
در نسخه 2015b با عنایت به موتور اجرایی جدید روشی که کدهای متلب اجرا میشد تغییرات اساسی کرد. معماری بهبودیافته ای که برنامه های متلب را اجرا میکند سریعتر است و بعلاوه یک پلتفرم نیز برای بهبود در نسخه های آینده هم فراهم میکند و جالب اینجاست که همه اینها بدون کوچکترین تغییری در کد شما اتفاق می افتد(کافی است نسخه متلب خود را ارتقا دهید). و حالا نظر برخی از متخصصین تراز اول دنیا در این باره:
🖊یر التمن یکی از غول های متلب و نویسنده کتاب روش های افزایش سرعت در متلب میگوید:
من با افراد مختلفی کار کردم و زمان زیادی را صرف کمک کردن به کاهش زمان اجرای کدهای متلب آنها کردم. اما زمانی که متوجه شدم که موتور جدید چقدر در بهبود عملکرد موثر است واقعا شگفت زده شدم. حتی یکی از همین افراد گزارش داد که یکی از پروسس های بسیار مهم در برنامه اش دو برابر سریعتر در نسخه 2015b کار میکند.
🖊آقای روبرت دانفورث مهندس، تحلیلگر مدلسازی و تست کمپانی کوهلر میگوید:
موتور اجرایی جدید متلب در نسخه 2015b زمان اجرا کدهای متلب ما را نصف کرده است.
🖊پروفسور انریکو نوبیل متخصص ترمودینامیک و انتقال حرارت میگوید:
برنامه های من در حجم های دو بعدی و یه بعدی برای انتقال حرارت و جریان شاره ها بشدت بهبود یافته است - تقریبا 35 درصد - خسته نباشید!
🖊مهندس ایرج فرجی مدیر کانال matlab_tutorial میگوید:
از ورژن 2010 استفاده کنید چرا که سریعتر است!!!!!!!!!!!!!!!!!!!!!
🌕انشتین🌕 یک جمله فوق العاده زیبا دارد که جا دارد اینجا گفته شود:
🖊دو چیز انتها ندارد: جهان هستی و حماقت بشر. در مورد اولی مشکوکم، اما دومی را یقین دارم.
مرجع:
https://blogs.mathworks.com/loren/2016/02/12/run-code-faster-with-the-new-matlab-execution-engine/
#R2015b , #News , #Facts
@MatlabTips
Loren on the Art of MATLAB
Run Code Faster With the New MATLAB Execution Engine
Today I'd like to introduce you to a guest blogger, Dave Bergstein, who is a MATLAB Product Manager here at MathWorks. Today, Dave will be discussing the new MATLAB execution engine.ContentsRedesigned ExecutionWhat It Means For You: Better Performance, Quality…
Forwarded from دستیار زیر نویس و هایپر لینک
از آنجایی که سیاه چاله ها نوری ساطع نمیکنند، ردیابی آنها برای منحمان دشوار است. اما زمانیکه یک سیاهچاله به اندازه کافی به یک شی، مانند ستاره، نزدیک میشود و شروع به مکیدن جرم آن میکند، ماده ای که به درون گرانشش کشیده میشود به اندازه ای داغ مشود که شروع به درخشیدن میکند و انرژی به فرم اشعه X آزاد میکند. با مشاهده این نور بوسیله تلسکوپهای فضایی، دانشمندان قادرند مخفیگاه سیاهچاله ها را در کیهان تشخیص دهند.
🔵با ما همراه شوید.🔵
#Facts
@MatlabTips
🔵با ما همراه شوید.🔵
#Facts
@MatlabTips
🔵آرایه ای از توابع🔵
سطح پیچیدگی:🌕🌕🌑🌑🌑
پیشنیاز: برنامه نویسی مقدماتی
برای: متوسط و پیشرفته
همانطور که در قسمت قبل شرح داده شد با توابع هم می توان مانند متغیر ها برخورد کرد. اگر اینطور باشد می توان تابع ها را مانند متغیر ها در آرایه ها ذخیره کرد. برای این کار کافی است به صورت زیر عمل کنیم:
در این صورت می توانید تابع های داخل آرایه را آدرس دهی کنید و سپس مقدار ورودی را به آن ها پاس کنید. با توجه به توابع بالا به مثال های زیر دقت کنید:
@MatlabTips
#Lambda_Function , #Anonymous_Function
سطح پیچیدگی:🌕🌕🌑🌑🌑
پیشنیاز: برنامه نویسی مقدماتی
برای: متوسط و پیشرفته
همانطور که در قسمت قبل شرح داده شد با توابع هم می توان مانند متغیر ها برخورد کرد. اگر اینطور باشد می توان تابع ها را مانند متغیر ها در آرایه ها ذخیره کرد. برای این کار کافی است به صورت زیر عمل کنیم:
f = {@(x)x.^2;
@(y)y+10;
@(x,y)x.^2+y+10};
در این صورت می توانید تابع های داخل آرایه را آدرس دهی کنید و سپس مقدار ورودی را به آن ها پاس کنید. با توجه به توابع بالا به مثال های زیر دقت کنید:
x = 1;
y = 10;
f{1}(x)
f{2}(y)
f{3}(x,y)
ans =
1
ans =
20
ans =
21
@MatlabTips
#Lambda_Function , #Anonymous_Function
🔵فرگمنتیشن سینمایی🔵
سطح پیچدگی: 🌓🌑🌑🌑🌑
پیش نیاز: ندارد
برای: همه
📝هدف از این پست: درک مفهوم fragmentaion و پیوستگی حافظه
یه روز تصمیم میگیرید، با خونواده برید سینما که دور هم باشید. میرید گیشه و میگید چهار تا صندلی کنار هم میخام. گیشهای برمیگرده بهتون میگه چهار تا صندلی کنار هم ندارم (یعنی صندلی ها contiguous یا پیوسته نداره). از اونجایی که نیت ما دور هم بودن و کنار هم بودن بوده ترجیح میدم بریم تو پارک کنار هم بشینیم تا اینکه تو سینما جداجدا بشینیم و بازی خیره کننده الناز شاکر دوست و امثالهم ببینیم.
در این مثال مرد گیشهای 4 تا مشتری رو از دست داد، صرفا به دلیل اینکه نتونسته بود صندلی ها رو مدیریت کنه و به هر مشتری یه صندلی پخش و پلا داده بود. بنابراین فضای ماتریسی صندلی های (دقت کنید که تو سینما صندلی ها با سطر و ستون مشخص میشود) سینما تیکه تیکه (یا fragment) شده است و آنطور که باید از این فضا بهینه استفاده نشده است.
در عالم تخصیص حافظه ها هم به همین صورت است. وقتی شما یک متغیر که شامل چندین مقدار است(یک آرایه یا ماتریس) تعریف میکنید، اعضای این آرایه یا ماتریس حکم یک خانواده را دارند که فقط دوست دارند یکجا کنار هم باشند تا پراکنده. اصلا حافظه سیستم شما این را قبول نمیکند که یک خانواده جدا جدا تخصیص شود. بنابراین آرایه یا ماتریسی که تعریف کردید باید یک فضای پیوسته(contiguous) برایش پیدا کنید و گرنه خطای out of memory نصیبتان می شود و باید بروید در پارک بشینید.
و اینجا هم وظیفه برنامه نویس است که فضا را حیف و میل نکند(تا باعث fragmentشدن حافظه نشود) و با استفاده از روش هایی که در پست های قبلی گفته شد و در پست های آتی هم خواهیم گفت، بیاییم فضا را بهینه سازی کنیم.
ویندوز این قابلیت را در اختیار شما قرار داده است که حافظه کامپیوترتان را defragment کنید(که البته در ورژن های جدید با نام optimize) شناخته شده است. در پست بعدی بصورت تصویری defragment کردن ویندوز را نشان میدهیم.
#For_all , #Memory, #fragmentaion
@MatlabTips
سطح پیچدگی: 🌓🌑🌑🌑🌑
پیش نیاز: ندارد
برای: همه
📝هدف از این پست: درک مفهوم fragmentaion و پیوستگی حافظه
یه روز تصمیم میگیرید، با خونواده برید سینما که دور هم باشید. میرید گیشه و میگید چهار تا صندلی کنار هم میخام. گیشهای برمیگرده بهتون میگه چهار تا صندلی کنار هم ندارم (یعنی صندلی ها contiguous یا پیوسته نداره). از اونجایی که نیت ما دور هم بودن و کنار هم بودن بوده ترجیح میدم بریم تو پارک کنار هم بشینیم تا اینکه تو سینما جداجدا بشینیم و بازی خیره کننده الناز شاکر دوست و امثالهم ببینیم.
در این مثال مرد گیشهای 4 تا مشتری رو از دست داد، صرفا به دلیل اینکه نتونسته بود صندلی ها رو مدیریت کنه و به هر مشتری یه صندلی پخش و پلا داده بود. بنابراین فضای ماتریسی صندلی های (دقت کنید که تو سینما صندلی ها با سطر و ستون مشخص میشود) سینما تیکه تیکه (یا fragment) شده است و آنطور که باید از این فضا بهینه استفاده نشده است.
در عالم تخصیص حافظه ها هم به همین صورت است. وقتی شما یک متغیر که شامل چندین مقدار است(یک آرایه یا ماتریس) تعریف میکنید، اعضای این آرایه یا ماتریس حکم یک خانواده را دارند که فقط دوست دارند یکجا کنار هم باشند تا پراکنده. اصلا حافظه سیستم شما این را قبول نمیکند که یک خانواده جدا جدا تخصیص شود. بنابراین آرایه یا ماتریسی که تعریف کردید باید یک فضای پیوسته(contiguous) برایش پیدا کنید و گرنه خطای out of memory نصیبتان می شود و باید بروید در پارک بشینید.
و اینجا هم وظیفه برنامه نویس است که فضا را حیف و میل نکند(تا باعث fragmentشدن حافظه نشود) و با استفاده از روش هایی که در پست های قبلی گفته شد و در پست های آتی هم خواهیم گفت، بیاییم فضا را بهینه سازی کنیم.
ویندوز این قابلیت را در اختیار شما قرار داده است که حافظه کامپیوترتان را defragment کنید(که البته در ورژن های جدید با نام optimize) شناخته شده است. در پست بعدی بصورت تصویری defragment کردن ویندوز را نشان میدهیم.
#For_all , #Memory, #fragmentaion
@MatlabTips
بهینهسازی فضای حافظه (defragmentکردن فضا) در ویندوز 8.2 به روایت تصویر.
با ما همراه باشید!
#Memory
@MatlabTips
با ما همراه باشید!
#Memory
@MatlabTips
🔵آموزش تلگرامی🔵
حساب کردن دیدن 45 ملیون ایرانی تو تلگرام عضون. رقم عجیبی نیست وقتی میبینی آدمای دور و برت سر سفره غذا هم یه دستشون قاشقه یه دستشون گوشی که دارن تلگرام چک میکنن. از این میزان کاربر بخش خیلی زیادیشون یا شاید بشه گفت همشون عضو حداقل یک کانال یا گروه هستن. و از این بین یه سری عضو کانال های سرگرمین مثل چیزمیز و بخندید و خاله بتول و عمو جعفر و ... و یه سریاشونم که طالب علمن " ولو بالتلگرام" تو کانالای عملی هم عضو میشن.
کانالای سرگرمی که تکلیفش مشخصه و مسیرشون درست. اما این وسط من نمیدونم چطور میشه یه رشته یا نرم افزار رو تو تلگرام آموزش داد. تلگرام به زحمت میتونه مطالب رو دسته بندی کنه. مثلا همین کانال متلب رو در نظر بگیرید. الان حداقل 5،6 تا کانال متلب تو تلگرام وجود داره. همه هم دارن زور میزنن رشته هایی مثل کنترل، هوافضا، ژنتیک و پردازش تصویر، شبکه های عصبی و ... رو زورکی بکنن تو مخ ملت. مسلما نمیشه رشته ای رو که باید یه ترم بری کلی تلاش کنی سر کلاس تا یاد بگیری بیای تو تلگرام اموزش ببینی.
همه اینا رو گفتم که به دوستانی که تا این لحظه به ما افتخار همراهی دادن بگم که کانال متلب تیپز رویه اش به این صورته که یک سری نکات جذاب و کاربردی رو که البته حاصل کلی سبک سنگین کردن علمی است به عنوان یک پست تو کانال میزاره و ابدا قصد ما تدریس یک شاخه اونم تو تلگرام نیست. برای همین این کانال اینجوری نیست که سر ساعت یه پست بزاره. ممکنه چند روزم طول بکشه تا یه موضوع کاربردی و جهان شمول پیدا بشه و تقدیم شما عزیزان کنیم.
@MatlabTips
حساب کردن دیدن 45 ملیون ایرانی تو تلگرام عضون. رقم عجیبی نیست وقتی میبینی آدمای دور و برت سر سفره غذا هم یه دستشون قاشقه یه دستشون گوشی که دارن تلگرام چک میکنن. از این میزان کاربر بخش خیلی زیادیشون یا شاید بشه گفت همشون عضو حداقل یک کانال یا گروه هستن. و از این بین یه سری عضو کانال های سرگرمین مثل چیزمیز و بخندید و خاله بتول و عمو جعفر و ... و یه سریاشونم که طالب علمن " ولو بالتلگرام" تو کانالای عملی هم عضو میشن.
کانالای سرگرمی که تکلیفش مشخصه و مسیرشون درست. اما این وسط من نمیدونم چطور میشه یه رشته یا نرم افزار رو تو تلگرام آموزش داد. تلگرام به زحمت میتونه مطالب رو دسته بندی کنه. مثلا همین کانال متلب رو در نظر بگیرید. الان حداقل 5،6 تا کانال متلب تو تلگرام وجود داره. همه هم دارن زور میزنن رشته هایی مثل کنترل، هوافضا، ژنتیک و پردازش تصویر، شبکه های عصبی و ... رو زورکی بکنن تو مخ ملت. مسلما نمیشه رشته ای رو که باید یه ترم بری کلی تلاش کنی سر کلاس تا یاد بگیری بیای تو تلگرام اموزش ببینی.
همه اینا رو گفتم که به دوستانی که تا این لحظه به ما افتخار همراهی دادن بگم که کانال متلب تیپز رویه اش به این صورته که یک سری نکات جذاب و کاربردی رو که البته حاصل کلی سبک سنگین کردن علمی است به عنوان یک پست تو کانال میزاره و ابدا قصد ما تدریس یک شاخه اونم تو تلگرام نیست. برای همین این کانال اینجوری نیست که سر ساعت یه پست بزاره. ممکنه چند روزم طول بکشه تا یه موضوع کاربردی و جهان شمول پیدا بشه و تقدیم شما عزیزان کنیم.
@MatlabTips
🔵مقایسه دو کلاس Value و handle🔵
سطح پیچیدگی: 🌕🌓🌑🌑🌑
برای: همه
پیش نیاز: آشنایی ساده با مفاهیم ابتدایی برنامه نویسی
📝هدف از این پست: بررسی دو نوع کلاس و مشاهده رفتار آنها در برابر عملیات مختلف
اگر این پست رو تو یه گروه دیگه فوروارد کنید چه اتفاقی می افته؟ به ازای هر نفری که میبینه به شمارنده پست یک واحد اضافه میشه. اما اگر من این پست رو از کانالم حذف کنم چه اتفاقی می افته؟ پستی که شما قبلا تو یه گروه دیگه فوروارد کردید حذف نمیشه آما دیگه شمارندش کار نمیکنه. پس شمارنده پست و خود پست تو شی جدا از دو کلاس جدا هستند.
توی متلب هم یه همچین چیزایی وجود داره. اساسا متلب دو نوع کلاس (مبحثی مربوط به برنامه نویسی شی گرایی است که فعلا نیازی نیست در مورد آن بدانید)داره. value با handle.
🖊کلاس های vlaue: اشیایی میسازند که در مواجه با عمل کپی رفتاری مشابه متغیرهای عادی در متلب دارند. هر کپی که شما میسازید یک شی مستقل است. هر بلایی که سری نسخه کپی می آورید ربطی به نسخه اصلی ندارد.
🖊کلاس های handle: اشیایی میساز که به عنوان یک مرجع عمل میکنند. یک هندل و تمام کپی های آن به شی اولی اشاره دارند. هر بلایی که سر نسخه کپی هندل می آورید مستقیما با نسخه اصلی در ارتباط خواهد بود.
📝مثال:
متغیرهای عددی در متلب اشیایی از کلاس value محسوب میشوند. برای مثال هنگام که شما متغیر a را به متغیر b کپی میکنید، جفت آنها مستقل از هم کار میکنند. تغییر در متغیر a تغییر در متغیر b حاصل نمکند.
a = 8;
b = a;
حالا بیایید متغیر a را عوض کنید. متغیر b همان مقدار 8 باقی میماند.
a = 6;
b
b =
8
حتی اگر با استفاده از دستور clear a متغیر a را حذف کنید، باز همچنان متغیر b وجود دارد.
کلاس handle:
بیاید هندل یک شی گرافیکی را ذخیره کنیم. متغیری که هندل اشیا گرافیکی (در پست های قبلی بصورت ساده این مفاهیم بیان شد) را در خود نگه میگدارد از کلاس handle است.
حال بیایید متغیر h را در متغیر دیگری کپی کنیم و سپس متغیر h را حذف کنید(دقت کنید که برای حذف یک هندل از دستور delete استفاده میکنیم:
حالا متغیر hcopy را در پنجره فرمان تایپ کنید:
در واقع مورد آخری همان شمارنده پست بود و مورد اول خود پست.
#Handle, #Value, #For_all
@MatlabTips
سطح پیچیدگی: 🌕🌓🌑🌑🌑
برای: همه
پیش نیاز: آشنایی ساده با مفاهیم ابتدایی برنامه نویسی
📝هدف از این پست: بررسی دو نوع کلاس و مشاهده رفتار آنها در برابر عملیات مختلف
اگر این پست رو تو یه گروه دیگه فوروارد کنید چه اتفاقی می افته؟ به ازای هر نفری که میبینه به شمارنده پست یک واحد اضافه میشه. اما اگر من این پست رو از کانالم حذف کنم چه اتفاقی می افته؟ پستی که شما قبلا تو یه گروه دیگه فوروارد کردید حذف نمیشه آما دیگه شمارندش کار نمیکنه. پس شمارنده پست و خود پست تو شی جدا از دو کلاس جدا هستند.
توی متلب هم یه همچین چیزایی وجود داره. اساسا متلب دو نوع کلاس (مبحثی مربوط به برنامه نویسی شی گرایی است که فعلا نیازی نیست در مورد آن بدانید)داره. value با handle.
🖊کلاس های vlaue: اشیایی میسازند که در مواجه با عمل کپی رفتاری مشابه متغیرهای عادی در متلب دارند. هر کپی که شما میسازید یک شی مستقل است. هر بلایی که سری نسخه کپی می آورید ربطی به نسخه اصلی ندارد.
🖊کلاس های handle: اشیایی میساز که به عنوان یک مرجع عمل میکنند. یک هندل و تمام کپی های آن به شی اولی اشاره دارند. هر بلایی که سر نسخه کپی هندل می آورید مستقیما با نسخه اصلی در ارتباط خواهد بود.
📝مثال:
متغیرهای عددی در متلب اشیایی از کلاس value محسوب میشوند. برای مثال هنگام که شما متغیر a را به متغیر b کپی میکنید، جفت آنها مستقل از هم کار میکنند. تغییر در متغیر a تغییر در متغیر b حاصل نمکند.
a = 8;
b = a;
حالا بیایید متغیر a را عوض کنید. متغیر b همان مقدار 8 باقی میماند.
a = 6;
b
b =
8
حتی اگر با استفاده از دستور clear a متغیر a را حذف کنید، باز همچنان متغیر b وجود دارد.
کلاس handle:
بیاید هندل یک شی گرافیکی را ذخیره کنیم. متغیری که هندل اشیا گرافیکی (در پست های قبلی بصورت ساده این مفاهیم بیان شد) را در خود نگه میگدارد از کلاس handle است.
x = 1:10;
y = x;
h = plot(x,y);
حال بیایید متغیر h را در متغیر دیگری کپی کنیم و سپس متغیر h را حذف کنید(دقت کنید که برای حذف یک هندل از دستور delete استفاده میکنیم:
hcopy = h;
delete(h)
حالا متغیر hcopy را در پنجره فرمان تایپ کنید:
hcopy
hcopy =
handle to deleted Line
در واقع مورد آخری همان شمارنده پست بود و مورد اول خود پست.
#Handle, #Value, #For_all
@MatlabTips
🔵نامگذاری تابع🔵
پیش نیاز: ندارد
سطح پیچیدگی:🌑🌑🌑🌑🌑
برای: همه
📝هدف از این پست: یادگیری یک گام دیگر برای نوشتن برنامه ای اصولی تر
برای اینکه نامی که برای تابع انتخاب می کنید هم نام با تابعی دیگر نباشد که بعدها موجب یک کانفلیکت شود، می توانید با استفاده از دستور which از این رخداد جلوگیری کنید:
در این فرمان functionname اسم تابع شماست و -all باعث میشود که دستور which تمام مسیرهای ممکن را جستجو کند.
#Programming , #For_all
@MatlabTips
پیش نیاز: ندارد
سطح پیچیدگی:🌑🌑🌑🌑🌑
برای: همه
📝هدف از این پست: یادگیری یک گام دیگر برای نوشتن برنامه ای اصولی تر
برای اینکه نامی که برای تابع انتخاب می کنید هم نام با تابعی دیگر نباشد که بعدها موجب یک کانفلیکت شود، می توانید با استفاده از دستور which از این رخداد جلوگیری کنید:
which -all functionname
در این فرمان functionname اسم تابع شماست و -all باعث میشود که دستور which تمام مسیرهای ممکن را جستجو کند.
#Programming , #For_all
@MatlabTips