MatlabTips
891 subscribers
462 photos
73 videos
54 files
304 links
آموزش MATLAB با "استفاده از ویدئو و متن" در سطوح مبتدی تا پیشرفته
پاسخ به سوالات تخصصی:
@roholazandie
Download Telegram
دستگاه معادلات لورنز را می توان به صورت یک تابع در متلب پیاده سازی کرد:

function xprime = lorenz(t,x)
sig=10;
beta=8/3;
rho=28;
xprime=[sig*(x(2)-x(1)); x(1)*(rho - x(3))- x(2); x(1)*x(2) - beta*x(3)];

که در آن x(1)، x(2) و x(3) به ترتیب نشان دهنده x ، y و z هستند. همانطور که می بینید هر سه مشتق در متغیر xprime ذخیره می شوند. دستگاه معادلات لورنز را برای دو نقطه بسیار نزدیک [-8,7,28] و [-8,7,27] حل می کنیم( اگر با تعریف من از نزدیک مشکلی دارید می توانید تا جایی که می خواهید آنها را به هم نزدیک تر کنید). برای حل از ode23 استفاده می کنیم( در نتیجه تفاوتی ایجاد نمی کند)

x0=[-8 7 28];
tspan=[0,200];
[t,y1]=ode23(@lorenz,tspan,x0);

x0=[-8 7 27];
tspan=[0,200];
[t,y2]=ode23(@lorenz,tspan,x0);

close all
for t=1:1000
plot(y1(1:t,1),y1(1:t,3),'r',y2(1:t,1),y2(1:t,3),'b')
axis([-30 30 0 50])
drawnow
End


ویدیوی زیر سیر تحول سیستم را برای دو نقطه متفاوت با رنگ های آبی رو قرمز نشان می دهد. در ابتدا هر دو کنار هم حرکت می کنند و به تدریج آنقدر جدا می شوند که به کلی مسیر های متفاوتی را طی می کنند. در واقع یک شرایط اولیه کوچک منجر به تفاوت شدید در آینده شد.
معادله لورنز سرآغاز عصر جدیدی در درک سیستم های پیچیده و غیر خطی بود. عصری که پنداشت ساعت وار جهان را بیش از پیش به رویا بدل می کرد. در قسمت های بعدی به عمق کار لورنز و اثری که کار او در فهم سیستم های پیچیده کنونی داشت می پردازیم.
@MatlabTips
#For_intermediate, #For_Advanced
#Dynamic_Systems, #Chaos_Theory, #Dependence_on_Initial_Conditions, #Butterfly_Effect
نویسنده:(#A_2)
MatlabTips
MATLAB_Elementary_Compare_Files.mp4
مقایسه دو فایل در Matlab 👆👆👆
🔵رسم نمودار با plotly🔵
سطح پیچیدگی:🌕🌑🌑🌑🌑
پیش‌نیاز:(کد نویسی پایه)
برای:همه

در مورد رسم نمودارهای مختلف با متلب مطالب زیادی وجود دارد و رسم یک نمودار زیبا علاوه بر دانش نیاز به قدری سلیقه و هنر هم دارد. بسیاری از شما حتما با پکیج های نرم افزاری دیگری مانند پایتون و آر هم آشنایی دارید یا حداقل اسمی از آن ها شنیده اید. این پکیج ها هم روش های خاص خود را برای رسم نمودار دارند. اما ممکن است برای شما هم پیش آمده باشد که بخواهید نمودار خود را به همان صورت تعاملی ( یعنی با چرخاندن و زوم کردن و غیره) و نه به صورت یک عکس به کامپیوتر دیگری منتقل کنید بدون آنکه نیاز باشد تمامی نرم افزار متلب را بر روی آن نصب کنید! متاسفانه خاصیت انحصاری نرم افزار متلب مانع از این کار می شود. اما توسعه ابزارهای رسم وب در چندین سال اخیر به حدی رسیده است که حتی قدرت بیشتری از ابزارهای تخصصی به ما می دهند. این ابزار ها مبتنی بر زبان جاوااسکریپت بوده و قابل اجرا توسط مرورگرهای مختلف می باشند.
ابزار plotly یک ابزار مبتنی بر وب(به صورت آفلاین و آنلاین) برای رسم نمودارهاست که قابلیت اتصال به متلب، پایتون و آر را دارد. در این قسمت به نحوه راه اندازی و استفاده از آن که بسیار ساده است می پردازیم.
1- ابتدا فایل MATLAB-api-master را دانلود کرده( 200KB) و آن را اکسترکت کنید و در جایی مانند ریشه درایو C (یا هر جای دیگری) قرار دهید.
2- نرم افزار متلب را باز کنید و Set path را بزنید. این گزینه درنسخه های جدید متلب به صورت شکل زیر است و در نسخه های قدیمی تر به صورت File>Set Path می باشد.
نسخه های جدید
نسخه های قدیمی
3- در پنجره باز شده Add with subfolders را زده و پوشه MATLAB-api-master را انتخاب کنید. و در نهایت تکمه save را بزنید.
4- دستور getplotlyoffline('https://cdn.plot.ly/plotly-latest.min.js') را در خط فرمان بزنید و چند لحظه منتظر شوید تا پیام موفقیت داده شود.(برای این مرحله حتمن نیاز است که متصل به اینترنت باشید)
حالا شما می توانید برای هر نموداری که میکشید یک نسخه قابل حمل به سایر کامپیوتر ها هم داشته باشید. فقط کافی است که یک خط دستور پس از رسم عادی متلب قرار دهید. به نمونه زیر توجه کنید:
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
surf(Z);

fig2plotly(gcf, 'offline', true, 'filename', 'sine');

پس از اجرای کد بالا ابتدا متلب یک نمودار رسم می کند سپس متلب مرورگر پیش فرض سیستمتان را باز می کند و نمودار plotly را هم نشان می دهد.
همانطور که می بینید تنها یک خط(خط آخر) باید اضافه کنید(همیشه مستقل از نوع رسم همین یک خط کافی است!). تنها باید توجه کنید که فایل خروجی به صورت یک فایل html است که با اسم بعد از filename (در مثال بالا sine) کنار کد هایتان قرار می گیرد. من آن را در زیر قرار داده ام که دانلود کنید و خود ببینید.
نمودار های plotly به حدی زیبا هستند که شاید شما هم مانند من به رسم خود متلب ترجیحشان بدهید. فراموش نکنید که این نمودار ها قابل جابجا کردن روی بقیه platform ها را دارند. در قسمت های بعدی چند نمودار دیگر هم با این ابزار رسم می کنیم.

@MatlabTips
#For_beginner ,
#For_intermediate, #For_Advanced
#Plotly #Plot #Portability
نویسنده:(#A_2)
🔵درست مثل یک حرفه ای🔵
برای: همه
پیش نیاز: (خواندن و نوشتن متون فارسی مدرن)
سطح پیچیدگی:🌑🌑🌑🌑🌑

تمام دانشجوهایی که به نوعی کارشون گیر متلب هست با احتمال خوبی کارشون گیر یک موضوعی هست که باید شبیه سازی بشه (simulated to be). این وسط یا باید یک ام فایل بنویسید یا با سیمیولینک و یا با gui (که معمولا مربوط به یک تولباکس خاصی) میشه باید کار کنید.
اما ما چطور برنامه مینویسیم؟؟(this is a big deal!)
در لپ تاپ و باز میکنیم یه یا علی میگیم و متلب و آتیش میکنیم و مثلا ادیتور رو باز میکنیم و اول برنامه هم مثل مرد یه
clc
clear all

می نویسیم که مثلا ما هم اره. یه ذره فک به پروژه فک میکنیم و تو گوشه ذهنمون تبدیل به کدش میکنیم میاریم رو صفحه ادیتور متلب. میریم جلو و به هر زور هست برنامه تموم میشه. ولی مطمئن باشید این برنامه ای نیست که بتونید بهش افتخارکنید. برنامه ای که احتمالا کامنت نداره، احتمالا به لحاظ سرعت اجرا نه تنها بهینه نیست بلکه افتضاست، احتمالا تو یه حالات خاصی جواب میده، احتمالا اسم یکی از متغیراتون a اسم یکی دیگش aa و اسم سومی aaa و تا آخر و احتمالا ...
سعی کنید قبل از اینکه شروع کنید به نوشتن یک برنامه ابتدا فلوچارت برنامه رو بکشید، بعد شبه کد آن رو بر روی کاغذ پیاده کنید و سپس "درست مثل یک حرفه ای" با اعتماد به نفس شروع میکنید به کد نوشتن.
طرح یک مشکل:
میخام نمودار sin(x)/x رو رسم کنم ولی تو نقطه X=0 نمیدونم چه کنم؟
% the problem occurs in zero(x==0) which returns NaN
x = -4*pi : pi/10 : 4*pi;
y = sin(x) ./ x;
plot(x, y,'linewidth',1.6)

🗝روش اول:
% dummy solution
x = -4*pi : pi/10 : 4*pi;
for i = 1:length(x)
if x(i)==0
y(i) = sin(eps)/eps;
else
y(i) = sin(x(i))/x(i);
end
end
plot(x, y,'linewidth',1.6)

فقط یه آماتور میتونه اینجوری مشکل رو حل کنه😁😁😁
🗝روش دوم:
% the solution which kicks ass
x = -4*pi : pi/20 : 4*pi;
x=x+(x==0)*eps; % adjustx=0tox=eps
y = sin(x) ./ x;
plot(x, y,'linewidth',1.6)

اوهوم. این شد یه چیزی. 😎😎
در روش اول برنامه نویس نادان بدون تفکر و اندیشه قبلی شروع به نوشتن کد نموده در صورتی در روش دوم برنامه نویس قبلا لختی درنگ کرده.
#For_all
@MatlabTips
نویسنده: #جبار_کمالی
🔵کدام ورژن متلب استفاده کنیم؟🔵
برای: افرادی که زیاد سوال میپرسن😕
پیش نیاز: علاقه به خواندن حرف مفت😉
سطح پیچیدگی: (مگه حرف مفتم پیچیدگی داره؟)

این سوال به اندازه سوال " استاد دفتر چند برگ تهیه کنیم؟!" خنده داره. ولی خوب به هر حال سواله دیگه و از قدیم گفتن جواب سوال واجب(تکبیر)
من میگم وقتی آخرین نسخه متلب چند صد دلاری رو میتونی با 800 تا تک تومنی سر بقالی کوچتون پیدا کنی، متلب قدیمی به چه کار آید؟؟
ولی آدم اگه برنامه نویس باشه با چرتکه هم میتونه کار خودش رو راه بندازه.
ولی از شوخی گذشته ورژن به ورژن سنگ تموم میزارن. هر چند که افرادی پیدا میشن و نسخه های قدیمی تر رو پیشنهاد میکنن (که اگه بر و بچه های مث ورکی بفهمن خودشون رو حلق آویز میکنن😁😁).
توی ورژن های 2013 یه تغییرات اساسی توی قسمت های ظاهری دادن که این تغییرات توی متلب 2015 به حد اعلای خودش رسید. در هر ورژن که ریلیز😎میشه یه سری دستورات حذف و یه سری اضاف میشه و ممکنه تولباکس های جدیدی اضافه بشه. و در نسخه جدید شتاب دهنده در جا (JIT) (اووف چی فتم) بهبود داده میشه و منجر به عملکرد بهتر متلب میشه.
خلاصه شما کارتون نباشه. برین از نزدیکترین بقالی ممکن، اخرین ورژن متلب رو گیر بیارین و مثل یه ایرانی واقعی کرک کنید.
نویسنده:(#جبار_کمالی)
#For_all
@MatlabTips
🔵چاپ کد(publish)🔵
پیش نیاز:(آشنایی مقدماتی با متلب)
برای: همه
سطح پیچیدگی: 🌓🌑🌑🌑🌑

شاید برای خیلی از شماها پیش اومده که یه کد طولانی رو پرینت بگیرید و در حالی که رو تختون دراز کشیدید اونو یه بار دیگه وارسی کنید. یا اصلا میخاستید که کد رو به استاد نشون بدید و به هر دلیلی.
ساده ترین راه ممکن اینه که کدتون رو کپی پیست کنید توی word و از اونجا پرینت بگیرید. ولی قطعا اگر این پست را تا انتها بخوانید هیچ وقت این عادت مسخره را تکرار نخواهید کرد.
متلب ی ابزاری داره به نام publish که توی toolbar بالایی هست بغل تب editor.(تو ورژن های 2013 به بعد مشخصه کجاست)
این publish خیلی خوبه. از اونجایی که میدونم حوصلتون نمیکشه پست طولانی بخونید من وارد جزییاتش نمیشم.
کار پابلیش اینه که میاد ام فایل شما رو بصورت html ذخیره میکنه. فک کنید توی ام فایلتون کلی فرمول (با فرمت لتک) نوشتید و کلی سکشن بندی کردید و میخاید پرینت بگیرید و به استادتون نشون بدید. میتونید توی ام فایلتون یه جوری کامنت بنویسید و سکشن بندی کنید که خروجی html اون واقعا عالی بشه. یه خروجی کاملا خوانا.
جزییاتش رو میزارم تو ویدئویی که بزودی ریلیز میکنم😎بهتون میگم.
ولی حتما حتما اگه میخاید کدتون رو پرینت بگیرید از این تکنیک استفاده کنید.
نویسنده" (#جبار_کمالی)
#For_all, #Publish
@MatlabTips
Forwarded from Deleted Account
code.PNG
24.2 KB
Forwarded from Deleted Account
خروجی html
Forwarded from Deleted Account
Forwarded from Deleted Account