MatlabTips
891 subscribers
462 photos
73 videos
54 files
304 links
آموزش MATLAB با "استفاده از ویدئو و متن" در سطوح مبتدی تا پیشرفته
پاسخ به سوالات تخصصی:
@roholazandie
Download Telegram
جلوگیری از خطای out of memory با استفاده از افزایش java heap memory به روایت تصویر.
#Out_of_memory , #For_advanced
@MatlabTips
Forwarded from Programmer Jokes
🔵بازسازی موتور اجرایی متلب🔵
📝هدف از این پست: آشنایی با نسخه جدید متلب 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
از آنجایی که سیاه چاله ها نوری ساطع نمیکنند، ردیابی آنها برای منحمان دشوار است. اما زمانیکه یک سیاهچاله به اندازه کافی به یک شی، مانند ستاره، نزدیک میشود و شروع به مکیدن جرم آن میکند، ماده ای که به درون گرانشش کشیده میشود به اندازه ای داغ مشود که شروع به درخشیدن میکند و انرژی به فرم اشعه X آزاد میکند. با مشاهده این نور بوسیله تلسکوپهای فضایی، دانشمندان قادرند مخفیگاه سیاهچاله ها را در کیهان تشخیص دهند.
🔵با ما همراه شوید.🔵
#Facts
@MatlabTips
🔵آرایه ای از توابع🔵
سطح پیچیدگی:🌕🌕🌑🌑🌑
پیش‌نیاز: برنامه نویسی مقدماتی
برای: متوسط و پیشرفته

همانطور که در قسمت قبل شرح داده شد با توابع هم می توان مانند متغیر ها برخورد کرد. اگر اینطور باشد می توان تابع ها را مانند متغیر ها در آرایه ها ذخیره کرد. برای این کار کافی است به صورت زیر عمل کنیم:
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
بهینه‌سازی فضای حافظه (defragmentکردن فضا) در ویندوز 8.2 به روایت تصویر.
با ما همراه باشید!
#Memory
@MatlabTips
صندلی الکتریکی توسط یک دندانپزشک اختراع شد.
#facts
@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 است.
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 از این رخداد جلوگیری کنید:
which -all functionname

در این فرمان functionname اسم تابع شماست و -all باعث میشود که دستور which تمام مسیرهای ممکن را جستجو کند.
#Programming , #For_all
@MatlabTips
🔵تفاوت Accuracy و Precision🔵
برای: همه
پیش نیاز: ندارد
سطح پیچیدگی: 🌓🌑🌑🌑🌑

شهید بهشتی با دکتر مهرشاهی محاسبات عددی داشتیم. دکتر واقعا کارش درست بود. برعکس دکترای الان که همه چی رو حفظ میکنن، دکتر ما همه چی رو فهمیده بود. همش میگفت: زبان فارسی زبان شعر و شاعریه. زبان علمی نیست. اصرار داشت که حتما کتاب زبان اصلی بگیریم.
الان که خواستم این پست رو بزارم و نتونستم معادل فارسی برای دو کمله accuracy و precision پیدا کنم، یاد اون استاد شریف افتادم.
🖊تعریف Accuracy:
اینه که مقدار اندازه گیریمون چقد به مقدار واقعی نزدیک باشه.
🖊تعریف Precision:
اینه که مقادیر اندازه گیری چقد نسبت به همدیگه دقیق باشن.
صفحه دارت رو در نظر بگیرید که شما به سمت اون چند تیر پرتاب میکنید. اگر همه تیرها به مرکز بخوره این یعنی هم accuracy و هم precisionشما عالیه.
اگر همه تیرها مثلا در زاویه 30درجه و شعاع rمتری از مرکز بخورن، این یعنی accuracyشما پایینه ولی precisionتون خوبه.
اگر هر تیر در یک زاویه و شعاع برخورد کند این یعنی نباید دارت بازی کنید.
در حقیقت precision یک بایاس دارد. بایاس چیست؟
مثال هایی از بایاس
1⃣ترازویی که بدون آنکه چیزی رویش گذاشته باشید 1کیلوگرم را نشان میدهد.
2⃣همواره قد خودتان را در حالی اندازه گیری کنید که کفشی پاشنه بلند پوشیده اید.
3⃣کرونومتری که زمان را اندازه گیری میکند، اما مقداری زمان صرف این میشود که شما کلیک کنید.
در همه موارد بالا اندازه گیری های شما به یک اندازه خطا دارد. اگر همه اینها را به همان اندازه شیفت دهیم درست میشود.
نکته اخر اینکه Accuracy وابسته به سیستم اندازه گیری شماست.
پی نوشت: عزیزم همه اینا به متلب ربط داره. همه اینا به محاسبات عددی ربط داره. همش.
#For_all ,#accuracy, #precision
@MatlabTips
🔵شیپور گابریل🔵
پیش‌نیاز: گذراندن ریاضیات 1 و آشنایی با کتابخانه سیمبولیک
سطح پیچیدگی: 🌕🌑🌑🌑🌑
📝هدف از این پست: بررسی پارادوکس شیپور گابریل

شیپور گابریل یا(ترومپت توریچلی) یک تصویر هندسی با سطح بی نهایت و حجم محدود است. نامگذاری این شکل برمیگردد به یک اتفاق معهود سنتی که گابریل به عنوان یک فرشته بر شیپوری میدمد تا همگان را خبر کند که روز قضاوت فرا رسیده است، با وسیله ای محدود جهانی نامحدود را اطلاع رسانی میکند.(در فرهنگ اسلامی صور اسرافیل).
مشخصات این شکل برای اولین بار توسط فیزیکدان و ریاضیدان ایتالیایی توریچلی در قرن 17 بررسی شد.
شکلی با سطح بی نهایت و حجمی متناهی به سان داشتن سطلی است که می توانید آن را از رنگ پر کنید ولی نمیتوانید سطح آن را رنگ آمیزی کنید که منجر به یک پارادوکس میشود. ز این دست پارادوکس ها میتوان به برف‌دانه کخ نیز اشاره کرد که محیطی بی نهایت دارد اما سطحی محدود.
شیپور گابریل با دوران دادن تابغ y=1/x حول محور xها بدست می‌آید.(بازه انتگرالگیری را از 1 تا بی نهایت در نظر بگیرید). به برکت کتابخانه سیمبولیک متلب می توانیم به شکلی نمادین این انتگرالگیری را انجام دهیم.
>> syms x
>> A = int(1/x,1,inf) % calculate area from 1 to inf

A =

Inf

و با استفاد از دستور ezplot که باز از کتابخانه سیمبولیک متلب است داریم:
ezplot(1/x,1,10)
Forwarded from Deleted Account
نمودار y=1/x
اگر این نمودار را حول محور x دوران دهید، میتوانید حجم آن رابه صورت مجموع حجم دیسک های دیفرانسیلی در نظر بگیرید. حجم هر دیسک دیفرانسیلی برابر است با مساحت سطح دیسک(دایره ای به شعاع y یا 1 بخش بر x) در ارتفاع آن(dx).
با استفاده از دستور cylinder که یک استوانه رسم میکند، میتوان با ورودی دادن نمودار بالا، آن را دوران دهد تا چیزی شبیه شیپور گابریل بدست آید.
x = 1:0.01:20;
[X,Y,Z]=cylinder(1./x);
mesh(Z,Y,X)
xlabel('x')
ylabel('y')
zlabel('z')
view(-90,90)
Forwarded from Deleted Account
دوران منحنی بالا با استفاده از دستور cylinder
اگر نیک بنگریم، تابع حجم این شیپور دارای یک ترم درجه دو از x در مخرج که ناشی از به توان دو رساندن شعاع دایره میشود می باشد. همین باعث میشود که انتگرال محدود شود. دوباره در متلب داریم:
>> syms x
>> V = pi * int(1/x^2,1,inf) %calculate volume of Gabriel horn

V =

pi

بیشینه حجم برابر pi میباشد.
اگر به رابطه ریاضی این انتگرال هم نگاه کنیم، مهم نیست کران بالای انتگرال چقدر بزرگ باشد، به هر حال مقدار انتگرال به یک عدد متناهی میل میکند.
Forwarded from Deleted Account
محاسبه حجم شیپور