MatlabTips
891 subscribers
462 photos
73 videos
54 files
304 links
آموزش MATLAB با "استفاده از ویدئو و متن" در سطوح مبتدی تا پیشرفته
پاسخ به سوالات تخصصی:
@roholazandie
Download Telegram
#Coming_soon
🔵ابزار curve fitting🔵
پیش‌نیاز:(آشنایی مقدماتی با متلب، آشنایی مقدماتی با مفاهیم آماری)
برای:(مهندسین مالی، اقتصاد و فنی مهندسی)

1⃣جعبه ابزار curve fitting دارای توابع و برنامه هایی برای برازش منحنی ها و سطوحی از داده هاست. این جعبه ابزار به شما این امکان را می دهد که داده‌ها را تحلیل (داده سنجی)، پیش پردازش و پسا پردازش، حذف داده‌های پرت و ... کنید.
2⃣میتوانید با استفاده از کتابخانه های قدرتمندی که دارد تحلیل رگرسیون با استفاده از مدل‌های خطی و غیر خطی و یا با استفاده از مدل سفارشی خودتان انجام دهید.
3⃣بعد از برازش میتوانید روش‌های متعددی برای پساپردازش اعم از رسم، درونیابی و برونیابی، تخمین بازه اطمینان و محاسبه انتگرال و مشتق پیاده سازی کنید.

✔️همه اینها به زودی در کانال @MatlabTips
ما را دنبال کنید:
@MatlabTips
#Coming_soon , #Curve_fitting, #Regression
نویسنده:(A-1)
🔵یک مثال🔵
سطح پیچیدگی:🌕🌑🌑🌑🌑
پیش‌نیاز:(آشنایی با کدنویسی)
برای:(مبتدیان و مقدماتی)

✔️یک سنگ را بصورت عمودی به هوا با سرعت اولیه u به هوا پرتاب می کنیم، فاصله طی شده s بعد از گذشت t ثانیه از رابطه زیر حاصل می شود:
s = ut-gt^2/2

که g شتاب گرانش است. از مقاومت هوا صرف نظر شده است. در زیر کد این مثال آورده شده است:
% Vertical motion under gravity
g = 9.81; % acceleration due
% to gravity
u = 60; % initial velocity in
% metres/sec
t = 0 : 0.1 : 12.3; % time in seconds
s = u * t - g / 2 * t .^2; % vertical displacement
% in metres
plot(t, s), title('Vertical motion under gravity' )
xlabel('time' ), ylabel('vertical displacement' )
grid
disp( [t' s'] ) % display a table

ادامه دارد...
نمودار فاصله طی شده بر حساب زمان در مثال پرتاب سنگ
🔵کالبد شکافی🔵

1⃣هر چیزی که بعد از علامت % نوشته شود توسط نرم افزار نادیده گرفته شده و به عنوان یک کامنت است. می توانید آنچه در ذهنتان می گذرد را بصورت کامنت کنار کد خود نوشته تا در دفعات بعدی ک رجوع میکنید سر درگم نشوید.

2⃣عبارت t=0:0.1:12.3 یک بردار با گام های 0.1 می سازد.

3⃣پیاده سازی فرمول s برای هر المان از بردار t نوشته شده است و بنابراین خود s نیز یک بردار خواهد بود.

4⃣عبارت t.^2 هر المان از بردار t را به توان دو میرساند. به این نوع محاسبه عملیات آرایه ای گفته می شود که با به توان دو رساندن یک بردار متفاوت است(به حالت t^2 عملیات ماتریسی گفته میشود.)

5⃣در هر خط می توان چندین عبارت نوشت به شرط اینکه عبارت های با کاما از هم جدا شوند.

6⃣عبارت disp[t' s']d نمایشی از t و s در کنار یکدیگر است که البته این بردارها ترانهاده شده اند(با استفاده از عملگر ') و یک نمایش ستونی جذاب از داده های خروجی را در پنجره فرمان به نمایش می گذارد.
@MatlabTips
#Dissection
#For_intermediate , #For_beginners
نویسنده: (A-1)
🔵بزودی🔵
پیش‌نیاز:(برنامه نویسی مقدماتی)

متلب برای حل مسائل جبری، حساب دیفرانسیل و همچنین رسم نمودارها یک پکیج به نام Mupad دارد. همانطور که می دانید، متلب برای نوشتن برنامه های کوتاه و کار کردن با اعداد بسیار عالی است، اما برای محاسبات سیمبولیک خسته کننده است. در مقابل، Mupad بطور پیشفرض با سیمبول‌ها کار میکند و یک اینترفیس بسیار عالی برای اینکار دارد. خیلی کوتاه؛ با Mupad میتوانید شعبده بازی کنید.

✔️ ویدئوی آموزشی این بخش بزودی در @MatlabTips
@MatlabTips
#Comming_soon,#Mupad
شمه ای از بخش گرافیکی Mupad
🔵نکته روز🔵
سطح پیچیدگی:🌓🌑🌑🌑🌑
پیش‌نیاز:(آشنایی با حلقه های FOR)

هنگام نوشتن حلقه for سعی کنید اندیس حلقه را بصورت معکوس از آخر به اول تنظیم کنید.
✔️مثال
%naive approach
for i=1:1000
a(i) = sin(i);
end

✔️می توانیم اندیس ها در مثال بالا را از اخر به اول بازنویسی کنیم.
% second approach 4x faster
for i=1000:-1:1 %reverse indexing
b(i) = sin(i);
end

برای اطمینان از برابری دو بردار a و b دستور زیر را در خط فرمان اجرا کنید. اگر دو بردار با هم برابر باشند عدد 1 دریافت خواهید کرد:
any(a==b)

در روش دوم برای اولین بار خانه هزارم بردار b ساخته می شود و با ساختن این خانه، خانه های 1 تا 999 هم به تبع آن ساخته شده است و به گونه ای پیش تخصیص انجام داده ایم. به همین علت این کد از کد اول سریع تر است.
@MatlabTips
#Tip_of_the_day, #Pre_allocation
نویسنده:(A-1)
🔵توجه🔵
برای ارسال نقطه نظرات خود با ادمین @MATLABfreak تماس بگیرید.
@MatlabTips
#Caution
🔵ساختار if-else🔵
سطح پیچیدگی:🌓🌑🌑🌑🌑
پیش‌نیاز:(آشنایی با کد نویسی)
برای:(مبتدیان)

بانک ها با نرخ بهره‌های متفاوت در حال فعالیت هستند. فرض کنید اگر مقدار سپرده شما کمتر از 5000 دلار باشد، نرخ 9 درصد و در غیر اینصورت نرخ 12 درصد نصیبتا شود.
فرض کنید یک بانک یک پله جلوتر می رود و یک مقدار پول برای شما می دهد که با آن شروع کنید!!
✔️ کد زیر را چندین بار اجرا کنید:
bal = 10000 * rand;
if bal < 5000
rate = 0.09;
else
rate = 0.12;
end
newbal = bal + rate * bal;
disp( 'New balance after interest compounded is:' )
format bank
disp( newbal )

✔️ساختار پایه if-else بصورت زیر است:
if condition
statementsA
else
statementsB
end

1⃣دو عبارت statementsA و statementsB می توانند یک یا چندین دستور باشد.
2⃣اگر condition باشد، statementsA اجرا میشود در غیر اینصورت statementsB.
3⃣قسمت else اختیاری است.
@MatlabTips
#For_beginners ,#If_else
نویسنده:(A-1)
🔵رسم سطوح پارامتریک🔵
سطح پیچیدگی:🌕🌓🌑🌑🌑
پیش‌نیاز:(تسلط بر عملیات آرایه ای و ماتریسی)
برای:(پیشرفته)

خیلی از رویه هایی که در متلب تا به حال رسم کرده‌اید فرم صریح داشته است و توانسته اید با استفاده از یک تابع دو متغیره مثل f(x,y)=0 آن را بیان کنید. اما خیلی از اشکال در طبیعت وجود دارند که با یک معادله بصورت صریح قابل بیان نیستند. اینگونه اشکال را می توان با استفاده از معادلات پارامتریک معرفی کرد. در این صورت شما سه متغیر مثل x،y،z دارید که هر کدام از آنها تابع دو متغیر دیگری مثل u,v هستند.

✔️به کد زیر دقت کنید که چگونه معادلات مربوط به یک صدف دریایی را بصورت پارامتریک بیان کرده است( فرض شده است که خواننده می تواند کد را تحلیل کند):
%Copy-Right @MatlabTips
%for more detail contact @MATLABfreak.
b = 0.5 ;
a = -0.2 ;
c = 0.1;
n = 2 ;
% construct the res-by-res mesh
res = 128 ;
t = linspace(0, 2*pi, res) ;
[u,v] = meshgrid(t) ;

% define the surface
x = (a*(1-v/(2*pi)).*(1+cos(u)) + c) .* cos(n*v) ;
y = (a*(1-v/(2*pi)).*(1+cos(u)) + c) .* sin(n*v) ;
z = b*v/(2*pi) + a*(1-v/(2*pi)) .* sin(u) ;

% plot the surface
surf(x,y,z,y)
shading interp

axis off
axis equal
colormap(hsv(1024))
material shiny
lighting gouraud
lightangle(80, -40)
lightangle(-90, 60)
title('a pretty Persian Gulf seashell, using a 3D parametric surface')

@MatlabTips
#For_advanced , #Parametric_surface
نویسنده:(A-1)
عکس مربوط به صدف دریایی با استفاده از معادلات پارامتریک
🔵عبارات منطقی🔵
سطح پیچیدگی:🌓🌑🌑🌑🌑
پیش‌نیاز:(کدنویسی مقدماتی)
برای:(مبتدیان)

پیچیده‌ترین عبارات منطقی با استفاده از سه عملگر & (و)، |(یا) و ~ (نقیض) قابل ساخت است.
برای مثال معادله درجه دوم زیر را در نظر بگیرید:
ax^2 + bx + c = 0

در صورتی که دلتا (b^2 - 4ac) برابر صفر باشد و a مخالف صفر باشد، این معادله ریشه های یکسانی دارد :
roots = -b/(2a)

✔️در زیر کد متلب مربوط به این توضیحات آورده شده است:
if(b^2 - 4*a*c == 0) & (a~=0)
x = -b / (2*a);
end

دقت کنید که قبل از اجرای این کد ضرائب a,b,c تعریف شده باشند.
✔️توجه: به تفاوت بین (==) و = در برنامه دقت کنید.
@MatlabTips
#For_beginner , #Logical_operator
نویسنده:(A-1)
🔵توزیع نرمال چند متغیره🔵
سطح پیچیدگی:🌕🌕🌕🌑🌑
پیش‌نیاز:(آمار و احتمال و کد نویسی متوسط)
برای:(متوسط)

همه کسانی که آمار و احتمال پایه آشنا باشند با توزیع نرمال آشنا هستند. این توزیع بسیار ساده و در عین حال بسیار کاربردی است. ساده است چرا که فقط با دو پارامتر میانگین و واریانس می توان به صورت کامل آن را تعیین کرد و کاربردی است چرا که بسیاری از پدیده های طبیعی از توزیع قد افراد گرفته تا نوسانگر هارمونیک کوانتومی از این توزیع پیروی میکنند.
در فرم ساده یک بعدی این توزیع به صورت زیر است:
که در آن mu میانگین و sigma واریانس داده هاست. در نرم افزار متلب می توان به صورت زیر از این توزیع نمونه برداشت:
r=normrnd(mu, sigma)

که در آن mu و sigma یک عدد اسکالر هستند.
توزیع نرمال به صورت چند متغیره هم ظاهر می شود و آن زمانی است که پدیده مورد نظر شما دارای بیش از یک ویژگی باشد.
شکل زیر:
در این حالت بین این ویژگی ها همبستگی( correlation) وجود دارد. این همبستگی باعث می شود که واریانس فرم پیچیده تری به نام ماتریس کواریانس به خود بگیرد که یک ماتریس d*d است و d در آن تعداد ویژگی هاست. پس در این ماتریس عضو (i,j) نشان دهنده همبستگی ویژگی i ام با j ام است. همچنین میانگین به صورت ساده به صورت برداری به اندازه d است که در آن هر عنصر میانگین هر ویژگی است. در متلب می توان از این توزیع به صورت زیر نمونه گرفت:

mu = [2,3];
sigma = [1,1.5;1.5,3];
r = mvnrnd(mu,sigma);


اگر صد نمونه بگیریم و در یک شکل رسم کنیم به صورت زیر خواهد شد
mu = [2,3];
sigma = [1,1.5;1.5,3];
rng default % For reproducibility
r = mvnrnd(mu,sigma,100);
figure
plot(r(:,1),r(:,2),'+')
در مطالب بعدی به صورت ریز تری به معنای ماتریس های کواریانس و نیز کاربردهای توزیع نرمال چند متغیره می پردازیم

@MatlabTips
#For_intermediate , #Multivariate_normal_distribution, #Normal_distribution
نویسنده: (A-2)