MatlabTips
892 subscribers
462 photos
72 videos
54 files
304 links
آموزش MATLAB با "استفاده از ویدئو و متن" در سطوح مبتدی تا پیشرفته
پاسخ به سوالات تخصصی:
@roholazandie
Download Telegram
🔵هیستوگرام🔵
گاهی اوقات بیشتر از اینکه به جزییات داده ها علاقه مند باشیم به نحوه توزیع داده ها علاقه مندیم. نمودار هیستوگرام یک چارت میله ای است که تعداد داده هایی را که در بازه های مشخص قرار میگیرند را نشان میدهد. زمانی این موضوع برای ما سودمند است که تعداد زیادی داده در دست داشته باشیم. در این مثال از تابع rand(1,n) استفاده میکنیم که n عدد تصادفی با توزیع نرمال و میانگین 0 و انحراف معیار 1 تولید میکند. کد زیر نشان میدهد که چگونه توزیعی بسازیم که میانگین آن q0 و انحراف معیار آن sigmaq باشد.
%% set parameters for data
Ndata=10000;
q0=1.5; % mean of q data
sigmaq=0.25; % standard deviation of q data
qmin=0.0; % min and max for plotting
qmax=2.5;
nbins=25; % number of bins for histogram
%% generate simulation data
qdata=q0+sigmaq*randn(1,Ndata);

فرض کنید میخواهیم توزیع این داده هایی را که تولید کرده ایم را مشاهده کنیم. از تابع hist استفاده میکنیم. این تابع دو ورودی میگیرد که ورودی اول داده هاست و ورودی دوم اصطلاحا "bin" گفته میشود. هر چقدر این bin بیتشر باشد رزولوشن هم طبیعتا بیشتر میشود. در صورتی که bin تعیین نشود متلب به صورت پیش فرض یک مقداری را در نظر میگیرد.
در ادامه کد قبلی کد زیر را وارد کنید.
%% plot histogram of data
hist(qdata, nbins);
xlabel('Value of q')
ylabel('Number of data points in bin')
axis([qmin, qmax, 0, inf]);
از توماس جفرسون تا دونالد ترامپ: دو نکته، دو سوال

توماس جفرسون تنها سومین رییس جمهور آمریکا نبود، اون فیلسوف، دانشمند، حقوقدان و یک روشنفکر بزرگ بود. او به شدت تحت تاثیر نیوتون، جان لاک، روسو و جریان روشنگری در اروپا بود که اروپای تاریک، مستبد و عقب مانده قرون وسطی را تا انقلاب صنعتی سوق داد. این ویژگی تنها محدود به جفرسون نیست بیشتر رییس جمهورهای نخستین آمریکا بسیار فیلسوف مشرب و روشنفکر بودند. اما بعد از تقریبا سیصد سال چه اتفاقی برای آمریکا افتاده است که شخصی مانند دونالد ترامپ بر مسند ریاست جمهوری می نشیند؟

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

2- از دید بسیاری مانند هابرماس، روند مدرن شدن کامل نشده است و هنوز نیاز به کار فراوان است. ارزش های روشنگری مانند "عقلانیت"، "تحمل نظرات مخالف"(tolerance)، "آزادی بیان"، "جدایی دین از سیاست" و غیره هنوز برای اکثریت مردم، حتی در کشورهایی که میراث دار روشنگری هستند مفاهیم جا افتاده ای نیست. شاید شرایط امروز آمریکا بهترین نشان دهنده این وضعیت باشد. اینکه چگونه باید این ارزش ها را از نو احیا کرد سوال دوم است.
Forwarded from MATLAB
نمودارهای پارامتری
معادله y = x را در نظر بگیرید. این معادله و معادلاتی به فرم y = f(x) را معادلات صریح میگویند. البته خیلی اوقات در دنیای واقعی معادلات بیان کننده یک واقعیت به صورت صریح قابل نوشتن نیستند و مجبوریم آنها را پارامتری بیان کنیم. مثلا x و y بر حسب پارامتر t بیان میشود. برای مثال معادله دایره را در نظر بگیرید(البته این مثال قابل نوشتن به دو فرم می باشد).
x =R cos(t)
y = R sin(t)
حالا کافی است که x,y را بر حسب هم رسم کنیم تا دایره ای به شعاع R و مرکز 0 رسم کنیم.
کد این مسئله هم خیلی راحت است.
t = 0:0.1:2*pi;
R = 2;
x = R * cos(t);
y = R * sin(t);
plot(x,y,'r')
Forwarded from MATLAB
Forwarded from MATLAB
شاید شما هم تعجب کرده باشید که چرا این شکل شبیه بیضی است!! اینکه چرا این شکلی میشود بحث ما نیست و خود داستانی دارد مفصل و نه این مجال زیبنده توصیف و تشریح تا درجه ادراک آن است و نه اطاله کلام در این جهت جایز!
برای حل این مشکل کافی است در انتهای کد بعد از دستور plot دستور axis square را وارد کنید تا ابعاد محورها به یک اندازه کشیده شوند.
t = 0:0.1:2*pi;
R = 2;
x = R * cos(t);
y = R * sin(t);
plot(x,y,'r')
axis square
Forwarded from MATLAB
Forwarded from MATLAB
حالا بیایید متغیر سومی چون z را تعریف کنیم که وابستیگی آن به زمان به صورت زیر است:
z=t
از آنجایی که سه متغیر داریم از دستور plot3 استفاده میکنیم. شاید شما هم حدس زده باشید که این شکل یک فنر یا استوانه میشود.
t = 0:0.1:10*pi;
R = 2;
x = R * cos(t);
y = R * sin(t);
z = t;
plot3(x,y,z)
Forwarded from MATLAB
Forwarded from MATLAB
یکی از ابتدایی ترین روش ساخت یک نمودار متحرک در متلب استفاده از دستور comet به معنی ستاره دنباله دار است که برای نمودارهای دو بعدی است و طبیعتا دستور comet3 برای نمودارهای سه بعدی است. مثال بالا را میخواهیم با این دستور رسم کنیم. کد زیر را در متلب اجرا کنید تا حرکت این نمودار را از نقطه آغاز تا پایان مشاهده کنید.
t = 0:0.1:10*pi;
R = 2;
x = R * cos(t);
y = R * sin(t);
z = t;
comet3(x,y,z)
💥کاش این ها را چند سال پیش میدانستم



آندرج کارپثی دکترای دانشگاه استنفورد و یکی از نوابغ هوش مصنوعی توصیه هایی عالی برای درس خواندن و امتحان دادن در وبلاگ خود آورده است که خواندن آن به هرکس که میخواهد نتایج خوب بگیرد "به شدت" توصیه می شود. او در توصیف این روش ها میگوید:"کاش این ها را چند سال پیش میدانستم"

عمومی:
⭐️ شب زنده داری ارزشش رو نداره:
خوابیدن معجزه میکنه! بهترین طول زمان خواب برای من 7.5 ساعته. خیلی برام پیش اومده که روی یه مساله برای یک ساعت گیر میکنم و صبح توی پنج دیقه حلش میکنم. احساس میکنم حافظه کوتاه مدت تو آخر شب پر میشه از خاطرات ناپایدار و مغز نیاز داره تا بخوابه تا به حافظه بلند مدت بفرستتشون. من همیشه سعی میکنم برای امتحانای بزرگ از چند روز قبل شروع کنم که مغزم تا جایی که ممکنه بیشترین شب ها رو برای ثابت و پایدار کردن یادگرفتنی ها داشته باشه.

⭐️ از خودآموز ها(tutorial) یا جلسات مرور استفاده کنید.
حتی اگر بد باشن بازم هم توی جلسات مرور شرکت کنید. از کلاس هایی که TA ها هم میذارن غافل نشید.

امتحان: آماده شدن

⭐️ قبل از شروع کردن برای خوندن امتحان یه لیست از موضوعاتی که باید یاد بگیرید تهیه کنید(مثلا از منبع درسیتون). تخمین بزنید که هر بخش چقدر سنگینه. معمولا دانشجوها برای درسای اول زیاد وقت میذارن ولی اون آخرا که معمولا مهمتره وقت کم میارن و سریع رد میکنن.

⭐️ همیشه سعی کنید به امتحانای قبلی، قبل از امتحان نگاه کنید.
بخصوص دنبال سوالای امتحانی باشید که همون استاد قبلن (توی ترمای قبل) به دانشجوهاش داده. سوالا رو حفظ نکنید ولی از نوع سوالای که معمولا میده نوت برداری کنید.

⭐️ خوندن و فهمیدن با تکرار کردن درس یکی نیست!
هرچند هنوز هم این اشتباه رو میکنم: یه فرمول/اثبات/مطلب رو توی کتاب میخونید و خیلی ساده بنظر میرسه. حالا کتاب رو ببندید و سعی کنید از نو اون رو بنویسید(اثبات رو بنویس) تازه متوجه میشید که این کار کلا فرق داره و همچنین متعجب میشید که چقدر پیش میاد که حتی فرمول های ساده رو هم نمیتونید به دست بیارید. انگار این دو تا کار از دو بخش مختلف حافظه استفاده میکنن. اینقدر این کار رو بکنید که مطمئن بشید میتونید همه چیزای مهم رو خودتون بدست بیارید.

⭐️ همیشه با بقیه همکاری کنید ولی آخرا
همیشه اول تنها مطالعه کنید چون گروهی مطالعه کردن خیلی باعث حواسپرتی میشه. اما نزدیکای امتحان با بقیه بخونید معمولا توی این مواقع میتونید از بقیه هم استفاده کنید. همیشه هم با قوی ها نخونید بعضی وقتا سعی کنید چیزایی که بلدید رو به ضعیف تر ها یاد بدید که خیلی به یادگیری خودتون کمک میکنه

⭐️ حداقل یه بار قبل از امتحان به اتاق استاد برید
حتی اگر سوالی ندارید الکی یه سوال درست کنید و برید از استاد چند روز قبل از امتحان بپرسید. خیلی از استادا اطلاعاتی از امتحان و محتواش لو میدن. هرچند این روش صددر صد نیست ولی به امتحانش میآرزه.

⭐️ شب امتحانی نباشید
برای میان ترم ها از 3 روز قبل و پایان ترم 6 روز قبل شروع به خوندن کنید.

⭐️اگه اوضاع خوب پیش نمیره و وقت کم آوردید از نوشابه انرژی زا استفاده کنید.
هرچند کلا استفاده از این نوشابه ها خوب نیست ولی توی موارد اضطراری کمک میکنن.

⭐️ برای درس هایی مانند ریاضی: تمرین بعد درس
اول درس رو بخونید طوری که بتونید سوال ها رو حل کنید بعد برید سراغ تمرین و وقتی به مشکل برخوردید به درس برگردید. این روش برای یادگیری خیلی خوب عمل میکنه

⭐️ برگه تقلب برای خودتون درست کنید
هرچند نمیتونید برگه تقلب با خودتون سر جلسه ببرید. ولی یه برگه تقلب درست کنید و فک کنید اگه میشد یه برگه با خودتون ببرید سر جلسه چه چیزایی روش مینوشتید. این برای یادگیری خیلی خوبه!

⭐️ در جاهایی که بقیه درس میخونن درس بخونید
اگه کتابخونه یا سالن مطالعه ساکت و با نویز کم سراغ دارید حتمن ازش استفاده کنید.

امتحان: روز امتحان
⭐️هیچ وقت قبل از امتحان غذا یا قهوه نخورید.

⭐️ قبل از امتحان خیلی سخت بخونید
من خیلی از دانشجوها رو میبینم که روز آخر دیگه نمیخونن و میگن میخوایم استراحت کنیم. حافظه کوتاه مدت فوق العاده ست ازش استفاده کنید. اگه واقعا خسته اید یک ساعت قبل از امتحان استراحت کنید اما اگه اینطوری نیست حتما تا حتی نیم ساعت قبل از امتحان مطالعه کنید.

حین امتحان
⭐️ همیشه از مداد استفاده کنید.
قطعا شما نیاز دارید تا راه حل های غلطتتون رو پاک کنید.

⭐️ یک نگاه خیلی کلی به سوالا کنید.
1 تا 3 ثانیه به هر سوال نگاه کنید. فقط بدونید کجاها سوال اومده تا ذهن آماده بشه.

⭐️اول سوالای ساده
باید حواستون باشه که بر روی سوالای سخت گیر نکنید.بعدا برگردید بهشون. من همیشه سوالا رو رد میکنم. معمولا دفعه اول فقط 30 درصد سوالا رو حل میکنم.بعضی سوالا وقتی یکم گرم کردید آسون تر میشن.
⭐️ همیشه سعی کنید تمیز بنویسید
در واقع تعداد کمی متوجه این واقعیت تابلو میشن که: مصححین آدم هستند!! با کثیف نوشتن حتی اگه راه حل هاتون درست باشه شانس گرفتن نمره رو از دست میدید.

⭐️ همیشه دور جواب خط بکشید
وقتی چیزی رو حل میکنید و به نتیجه میرسید دورش خط بکشید. این به مصحح کمک میکنه که سریع تر نمره کامل رو بهتون بده و رد بشه.(خودتون رو بذارید جای مصحح)

⭐️ هیچ وقتِ هیچ وقت سریع جلسه امتحان رو ترک نکنید.
مطمئن باشید که در برگه جوابتون اشتباه هست. اگه سوالا رو تموم کردید برگردید و دوباره چک کنید. حتی اگه مطمئنید همه چیز رو در نظر گرفتید سعی کنید جزییات بیشتر به راه حل ها اضافه کنید و با احتمال زیاد یه اشتباه هایی پیدا میکنید.

⭐️ با مصحح ارتباط برقرار کنید.
باید به مصحح نشون بدید بیشتر از چیزی که نوشتید بلدید. به همین خاطر نوت های کوچیک توی برگه بذارید. باور کنید یا نه بیشتر مصحح ها به دنبال یه چیزی میگردن تا بهتون نمره بدن. همین نوت ها ممکن شانس شما باشه.

⭐️ به نمره هر سوال توجه کنید
نمره های هر سوال رو باید دقت کنید و وقت بیشتر روی سوالهای پرنمره تر بگذارید.

⭐️ اگر کمتر از پنج دقیقه وقت مونده و وسط سوالی موندید ولش کنید.
تو این زمان بهتره برگردید و سوالای دیگه رو یه نگاه کنید تا مطمئن بشید اشتباهی نکردید یا سوالی رو جا ننداخته باشید. باور کنید خیلی ها همینطوری نمره های احمقانه ای از دست میدن.

منبع: https://cs.stanford.edu/people/karpathy/advice.html
🔵اندیس دهی منطقی در متلب🔵

یکی از نقاط قوت متلب آن است که شما می توانید به سادگی کدهایتان را ساده کنید و شما را از نوشتن حلقه ها و برنامه های طولانی معاف می کند.اندیس دهی منطقی یکی از این امکانات است. فرض کنید بخواهیم با داشتن یک بردار v تمام عناصر آن را که مثبت هستند را در یک بردار دیگر w قرار دهیم. راه حل معمول آن است که مانند دیگر زبان های برنامه نویسی از حلقه ها استفاده کنیم. یعنی کدی شبیه به حالت زیر خواهیم داشت:

W=[]

For i=1:length(v)

if v(i)>=0

w=[w v(i)]

end

end


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

W=v(v>=0)


در اینجا v به عنوان اندیس v=>0 را گرفته است. وقتی شما v>=0 را برای یک بردار دلخواه اجرا کنید دنباله ای از صفر ها و یک ها را در خروجی می بینید. به این خروجی عبارت منطقی گفته می شود. شما می توانید خروجی را به صورت زیر در یک متغیر دیگر بریزید:

Indices = v>=0


این صفر ها و یک ها به آن معنی است که در مکان هایی که صفر داریم در بردار اصلی انتخاب نمی شوند و در مکان هایی که یک هستند در بردار اصلی انتخاب می شوند. چیزی که واضح است این است که اندیس هایی که داده می شود باید همیشه طولشان برابر با بردار اصلی باشد. می توان این عبارت را پیچیده تر هم نوشت. به طور مثال برای انتخاب عناصری از بردار که اندازه شان بین 2 و 5 است می توان به صورت زیر نوشت:

W=v(v>2 & v<5)


یا می توان نمونه هایی که فاصله آن ها از 2 کمتر از 0.5 است را به صورت زیر نوشت:

W=v(abs(v-2)<=0.5)


برای کامل متوجه شدن این قابلیت باید چند بار از آن استفاده کنید.
#Logical_indexing
🔵درماندگی آموخته شده🔵

ممکن است بارها با خود فکر کرده باشید که در شرایط بدی قرار گرفته اید و علی رغم تمام تلاش هایی که کرده اید عوامل نیرومندتری اطرافتان وجود دارند که بدون توجه به آنچه شما انجام داده یا خواسته اید، آینده شما را تغییر می دهند. شما قربانی سیستمی شده اید که به هیچ نحوی حریف آن نمی شوید. احساس می کنید در برهه ای از تاریخ هستید که اراده ی شما پارازیتی بیش نیست. بهترین سالهای عمرتان جلوی چشمتان دارد تمام می شود و آنچه خوب است قبلا برای شما تعیین شده است. کم کم می فهمید که بهتر است رها کنید و بگذارید که امواج شما را با خودش ببرد. سعی می کنید در لحظه زندگی کنید و آینده را به همان نیروها بسپرید، اما لحظه ها هم چیزی برای عرضه کردن ندارند.
در سال 1967 مارترین سلیگمن(martin Seligman) دست به آزمایش جالبی زد. او دو گروه از سگ ها را در اتاقک های فلزی قرار داد. در این اتاقک ها به سگ ها شوک الکتریکی وارد می شد که باعث آزار آن ها می شد. اما یک تفاوت بین این دو گروه بود. در گروه اول شوک ها در فواصل زمانی مشخص وارد می شد و همچنین داخل اتاقک یک دسته کنترلی وجود داشت که اگر فشرده می شد می توانست از شوک الکتریکی جلوگیری کند. اما در گروه دوم شوک ها در فواصل زمانی تصادفی وارد می شد و هیچ راهی هم برای متوقف کردن آن ها وجود نداشت. بعد از چند بار اجرای آزمایش سگ های گروه اول کم کم یاد گرفتند که با فشردن دسته جلوی شوک الکتریکی را بگیرند. اما سگ های گروه دوم هیچ راهی برای جلوگیری از شوک یا حتی پیش بینی آن نداشتند. در مرحله دوم آزمایش سگ ها داخل اتاقک هایی قرار گرفتند که شرایط متفاوتی داشت. در این اتاقک ها به کف اتاق در فواصل زمانی منظم شوک وارد می شد اما اگر سگ ها قبل از وارد شدن شوک به سمت دیگر اتاقک می پریدند می توانستند از شوک فرار کنند. این بار هم سگ های گروه اول هم گروه دوم در این اتاقک ها قرار گرفتند. سگ های گروه اول بعد از تعدادی اشتباه یاد گرفتند که با پریدن، از شوک فرار کنند. اما سگ های گروه دوم اگرچه در این مرحله از آزمایش می توانستند خود را نجات دهند هیچ تلاشی برای آن نمی کردند. آن ها گوشه اتاقک کز می کردند و فقط ناله می کردند. آن ها پذیرفته بودند که نمی شود کاری کرد حتی با وجود آن که شرایط تغییر کرده بود. به عبارتی آن ها دچار "درماندگی آموخته شده" شده بودند[1].
نتایج این آزمایش نشان داد این رفتار مهمترین نشانه "افسردگی" است. یعنی باور به این که شرایط خارج از کنترل ماست و نمی توان کاری کرد. نتایج این تحقیق در مورد انسان ها هم صادق است. چرخه "فرهنگ فقر" باعث می شود عده ای همیشه فکر کنند که نمی توانند وضعیتشان را تغییر دهند و به این ترتیب فقر از دل فقر زاییده می شود. مثال بهتر آن شرایط بسیار ناپایدار اقتصادی و سیاسی است که در آن مردم کم کم درماندگی خود را می آموزند. تغییرات ناگهانی و بعضا تصادفی در نرخ دلار، هزینه ها و مشکلاتی که حتی تا دیروز وجود نداشتند اما به سادگی از دل یک تلاطم سیاسی بیرون می آیند، از دست دادن شغل به دلیل تعدیل نیرو، کاغذ بازی و سیستم های ناکارآمد اداری که براحتی سرنوشت افراد را تغییر می دهند همه و همه از ما موجوداتی "درمانده ی آموزش دیده" ساخته است.
شاید واقعا نتوان کاری کرد اما مشکل بزرگ، بی عملی در زمانی است که می توان کاری کرد. بهترین شیوه برای رفع این مشکل افزایش آگاهی از تجارب قبلی است: تجاربی که توانسته اید تا حدودی اوضاع را کنترل کنید. همچنین تفسیر شخصی از اتفاقات در میزان اثر "درماندگی آموخته" که نوعی افسردگی اجتماعی است بسیار مهم است. فراموش نکنید شما می توانید همچنان کنترل بخش هایی از زندگی خود را در دست بگیرید به شرطی که یک روز بالاخره از چرخه شکست، بی عملی، درماندگی و باز هم شکست خارج شوید[2].

[1] Seligman, Martin EP. "Learned helplessness." Annual review of medicine23.1 (1972): 407-412.
[2] Altmaier, Elizabeth M., and Deborah A. Happ. "Coping skills training's immunization effects against learned helplessness." Journal of Social and Clinical Psychology 3.2 (1985): 181.
🔵پیاده سازی الگوریتم کلونی مورچگان در متلب🔵
Ant Colony Optimization in MATLAB
در این پست نشان داده ایم که چگونه می توان الگوریتم بهینه سازی کلونی مورچگان را در متلب برای حل مساله فروشنده دوره گرد پیاده سازی کرد.
در فایل پاورپوینت الگوریتم توضیح داده شده است و کد پیاده سازی کامل آن را هم می توانید مشاهده کنید.
اگر پاریس مستحق یه لحظه سکوت است، آنگاه برای سوریه بشریت باید برای همیشه خفه شود