🔘تعیین مقدار زمان اجرای محاسبات در متلب
🔸برای تعیین زمان اجرای برنامه و یا بخشی از برنامه، از دستورهای tic و toc استفاده میشود. همانطور که مشخص است، نام این دو دستور از(تیک تاک) ساعت گرفته شده است. این دستورات یکی از مهمترین دستورات متلب میباشند. قبل از هر چیز، اهمیت این دستورات را برای شما شرح میدهیم:
معمولا در پروژه های پیچیده، زمان اجرای برنامه بسیار طولانی میشود. در چنین مواقعی برنامه نویس ممکن است که کنجکاو باشد که یکی از موارد زیر را بداند:
1- کدام بخش برنامه است که بیشترین زمان را به خود اختصاص داده است. با دانستن این موضوع، برنامهنویس سعی میکند که کدهای آن بخش از برنامه را بهینهسازی کند تا در زمان صرفه جویی شود.
2- ممکن است بخواهیم بدانیم که زمان اجرای برنامه چقدر است، اما نمی خواهیم که مجبور باشیم همین طور بنشینیم و ببینیم چه زمانی برنامه پایان مییابد. مثلا شب قبل از خواب، برنامه را اجرا می کنید و صبح که بیدار شوید میتوانید در پنجره Command ، میزان زمان اجرای برنامه را ببینید.
3- در بسیاری از برنامهها، حلقه های for هستند که زمان زیادی میگیرند. فرض کنید حلقهای داریم که پارامتر آن از 1 تا 1000 میباشد. با قرار دادن دستور در ابتدا و انتهای حلقه(ابتدا و انتهای درون حلقه) میتوانیم زمان یک بار اجرا را محاسبه کنیم و سپس آن را ضرب در 1000 کنیم، چنانچه زمان بیش از حد زیاد باشد، میتوانیم همین حالا آن را متوقف کنیم(با گرفتن کلید Ctrl و فشار دادن کلید C از کیبورد)، به جای آن که پس از اجرای نیمی از برنامه، به این نتیجه برسیم.
🔺نحوه استفاده از دستورهای tic و toc را در مثال زیر شرح دادهایم:
👈مثال
tic
A=ones(100,100);
toc
✔️نتیجه :
Elapsed time is 0.000064 seconds.
دستور (100,100)A=ones ، ماتریسی با 100 ردیف و 100 ستون میسازد که همه مقادیر آن برابر 1 میباشد. همانطور که مشاهده می کنید ساخت این ماتریس، 0.000064 ثانیه طول کشیده است. زیاد به این عدد کوچک خیره نشوید، زیرا ممکن است روزی آرزویتان این باشد که برنامهای که دارید در کمتر از 1 روز اجرا شود.
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔸برای تعیین زمان اجرای برنامه و یا بخشی از برنامه، از دستورهای tic و toc استفاده میشود. همانطور که مشخص است، نام این دو دستور از(تیک تاک) ساعت گرفته شده است. این دستورات یکی از مهمترین دستورات متلب میباشند. قبل از هر چیز، اهمیت این دستورات را برای شما شرح میدهیم:
معمولا در پروژه های پیچیده، زمان اجرای برنامه بسیار طولانی میشود. در چنین مواقعی برنامه نویس ممکن است که کنجکاو باشد که یکی از موارد زیر را بداند:
1- کدام بخش برنامه است که بیشترین زمان را به خود اختصاص داده است. با دانستن این موضوع، برنامهنویس سعی میکند که کدهای آن بخش از برنامه را بهینهسازی کند تا در زمان صرفه جویی شود.
2- ممکن است بخواهیم بدانیم که زمان اجرای برنامه چقدر است، اما نمی خواهیم که مجبور باشیم همین طور بنشینیم و ببینیم چه زمانی برنامه پایان مییابد. مثلا شب قبل از خواب، برنامه را اجرا می کنید و صبح که بیدار شوید میتوانید در پنجره Command ، میزان زمان اجرای برنامه را ببینید.
3- در بسیاری از برنامهها، حلقه های for هستند که زمان زیادی میگیرند. فرض کنید حلقهای داریم که پارامتر آن از 1 تا 1000 میباشد. با قرار دادن دستور در ابتدا و انتهای حلقه(ابتدا و انتهای درون حلقه) میتوانیم زمان یک بار اجرا را محاسبه کنیم و سپس آن را ضرب در 1000 کنیم، چنانچه زمان بیش از حد زیاد باشد، میتوانیم همین حالا آن را متوقف کنیم(با گرفتن کلید Ctrl و فشار دادن کلید C از کیبورد)، به جای آن که پس از اجرای نیمی از برنامه، به این نتیجه برسیم.
🔺نحوه استفاده از دستورهای tic و toc را در مثال زیر شرح دادهایم:
👈مثال
tic
A=ones(100,100);
toc
✔️نتیجه :
Elapsed time is 0.000064 seconds.
دستور (100,100)A=ones ، ماتریسی با 100 ردیف و 100 ستون میسازد که همه مقادیر آن برابر 1 میباشد. همانطور که مشاهده می کنید ساخت این ماتریس، 0.000064 ثانیه طول کشیده است. زیاد به این عدد کوچک خیره نشوید، زیرا ممکن است روزی آرزویتان این باشد که برنامهای که دارید در کمتر از 1 روز اجرا شود.
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔘نمایش تاریخ و ساعت در متلب
🔸معمولا در برنامههای کاربردی که با متلب مینویسیم، پیش میآید که بخواهیم روز و یا ساعت اجرای برنامه را بدانیم. مثلا اگر بخواهیم با متلب یک برنامه جعبه لایتنر بنویسیم، باید بدانیم که هر فلش کارت، آخرین بار در چه روزی مشاهده شده است. متلب برای اینگونه موارد دستوراتی را در نظر گرفته است که در ادامه آنها را توضیح میدهیم:
👈دستور clock :
دستور clock ، مقدار سال، ماه، روز، ساعت، دقیقه و ثانیه را برای لحظه فعلی به صورت یک بردار نشان میدهد. ترتیب این مقادیر در بردار خروجی به صورت زیر میباشد:
[year month day hour minute seconds]
🔺مثال
A=clock
✔️نتیجه :
A =
1.0e+003 *
2.0120 0.0050 0.0270 0.0090 0.0170 0.0264
👈در نتایج فوق همانطور که میبینید، قبل از خط نمایش مقادیر عناصر بردار، عبارت 1.0e+003 * نوشته شده است که معنای آن این است که مقادیری که نمایش داده شدهاند، بر 1000 تقسیم شدهاند تا نمایش آنها راحت تر باشد، بنابراین مثلا برای دانستن مقدار سال باید عدد 2.012 را در 1000 ضرب کنیم که نتیجه میشود سال 2012 .
👈دستور date :
این دستور تاریخ امروز را به صورت یک رشته نمایش میدهد. به مثال زیر توجه کنید:
🔺مثال
date
✔️نتیجه :
ans =
27-May-2012
👈دستور today :
این دستور تعداد روزهای گذشته از تقویم میلادی تا به امروز را به صورت یک عدد محاسبه میکند.
🔺مثال
👈میخواهیم بدانیم که امروز چندمین روز از تقویم میلادی میباشد. مینویسیم:
today
✔️نتیجه :
ans =
735016
در واقع عدد فوق، تعداد تمامی روزهایی میباشد که از تقویم میلادی گذشته است. مثلا امروز تاریخ 2012/05/27 میلادی میباشد، بنابراین عدد فوق باید به طور تقریبی برابر حاصل اجرای دستور زیر باشد:
(2011*365)+(5*30)+27
✔️نتیجه :
ans =
734192
همان طور که مشاهده میکنید، عبارت بالا تنها یک تقریب است که عملکرد دستور today را متوجه شوید، اما دستور today ، عددی را که بر میگرداند، کاملا دقیق است.
👈دستور datenum :
قبلا شرح دادیم که دستور today ، عدد مربوط به تعداد روزهای گذشته از تقویم میلادی تا به امروز را حساب میکند. اما ممکن است بخواهیم تعداد روزها را برای یک تاریخ مشخص که در ذهن داریم، محاسبه کنیم. برای این منظور میتوانیم از دستور datenum استفاده کنیم. این دستور مخفف date number میباشد. در دستور datenum ، تاریخ مد نظرمان را به شکلهای مختلفی می توانیم مشخص کنیم که عبارتند از:
🔸شکل اول: دریافت عدد روز و ماه و سال بهصورت جداگانه
🔺مثال:
A=datenum(2012, 05, 27)
همانطور که مشاهده میکنید، ابتدا باید سال، بعد ماه و در آخر، روز را برای دستور datenum مشخص کنیم.
✔️نتیجه :
A =
735016
🔸شکل دوم: به صورت کاملا عددی(مثل: 27.05.2012)
🔺مثال
A=datenum('27.05.2012', 'dd.mm.yyyy')
✔️نتیجه :
A =
735016
👈دقت شود که با عبارت 'dd.mm.yyyy' در واقع ترتیب به کار رفته برای روز، ماه و سال را مشخص کردهایم. d حرف اول کلمه day و m حرف اول کلمه month و y حرف اول کلمه year میباشد.
🔸شکل سوم: ماه به صورت نام(مثل : 27-May-2012)
🔺مثال
A=datenum('27-May-2012', 'dd-mmm-yy')
✔️نتیجه :
A =
735016
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔸معمولا در برنامههای کاربردی که با متلب مینویسیم، پیش میآید که بخواهیم روز و یا ساعت اجرای برنامه را بدانیم. مثلا اگر بخواهیم با متلب یک برنامه جعبه لایتنر بنویسیم، باید بدانیم که هر فلش کارت، آخرین بار در چه روزی مشاهده شده است. متلب برای اینگونه موارد دستوراتی را در نظر گرفته است که در ادامه آنها را توضیح میدهیم:
👈دستور clock :
دستور clock ، مقدار سال، ماه، روز، ساعت، دقیقه و ثانیه را برای لحظه فعلی به صورت یک بردار نشان میدهد. ترتیب این مقادیر در بردار خروجی به صورت زیر میباشد:
[year month day hour minute seconds]
🔺مثال
A=clock
✔️نتیجه :
A =
1.0e+003 *
2.0120 0.0050 0.0270 0.0090 0.0170 0.0264
👈در نتایج فوق همانطور که میبینید، قبل از خط نمایش مقادیر عناصر بردار، عبارت 1.0e+003 * نوشته شده است که معنای آن این است که مقادیری که نمایش داده شدهاند، بر 1000 تقسیم شدهاند تا نمایش آنها راحت تر باشد، بنابراین مثلا برای دانستن مقدار سال باید عدد 2.012 را در 1000 ضرب کنیم که نتیجه میشود سال 2012 .
👈دستور date :
این دستور تاریخ امروز را به صورت یک رشته نمایش میدهد. به مثال زیر توجه کنید:
🔺مثال
date
✔️نتیجه :
ans =
27-May-2012
👈دستور today :
این دستور تعداد روزهای گذشته از تقویم میلادی تا به امروز را به صورت یک عدد محاسبه میکند.
🔺مثال
👈میخواهیم بدانیم که امروز چندمین روز از تقویم میلادی میباشد. مینویسیم:
today
✔️نتیجه :
ans =
735016
در واقع عدد فوق، تعداد تمامی روزهایی میباشد که از تقویم میلادی گذشته است. مثلا امروز تاریخ 2012/05/27 میلادی میباشد، بنابراین عدد فوق باید به طور تقریبی برابر حاصل اجرای دستور زیر باشد:
(2011*365)+(5*30)+27
✔️نتیجه :
ans =
734192
همان طور که مشاهده میکنید، عبارت بالا تنها یک تقریب است که عملکرد دستور today را متوجه شوید، اما دستور today ، عددی را که بر میگرداند، کاملا دقیق است.
👈دستور datenum :
قبلا شرح دادیم که دستور today ، عدد مربوط به تعداد روزهای گذشته از تقویم میلادی تا به امروز را حساب میکند. اما ممکن است بخواهیم تعداد روزها را برای یک تاریخ مشخص که در ذهن داریم، محاسبه کنیم. برای این منظور میتوانیم از دستور datenum استفاده کنیم. این دستور مخفف date number میباشد. در دستور datenum ، تاریخ مد نظرمان را به شکلهای مختلفی می توانیم مشخص کنیم که عبارتند از:
🔸شکل اول: دریافت عدد روز و ماه و سال بهصورت جداگانه
🔺مثال:
A=datenum(2012, 05, 27)
همانطور که مشاهده میکنید، ابتدا باید سال، بعد ماه و در آخر، روز را برای دستور datenum مشخص کنیم.
✔️نتیجه :
A =
735016
🔸شکل دوم: به صورت کاملا عددی(مثل: 27.05.2012)
🔺مثال
A=datenum('27.05.2012', 'dd.mm.yyyy')
✔️نتیجه :
A =
735016
👈دقت شود که با عبارت 'dd.mm.yyyy' در واقع ترتیب به کار رفته برای روز، ماه و سال را مشخص کردهایم. d حرف اول کلمه day و m حرف اول کلمه month و y حرف اول کلمه year میباشد.
🔸شکل سوم: ماه به صورت نام(مثل : 27-May-2012)
🔺مثال
A=datenum('27-May-2012', 'dd-mmm-yy')
✔️نتیجه :
A =
735016
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔘کد نمایش انیمیشن از یک کره(sphere) در متلب
👈کد متلب:
clear all
close all
clc
% Draw a sphere
sphere
% Make the current axis box square in size
axis('square')
% Define noscript and labels for reference
noscript('Rotation of a sphere...')
xlabel('x'); ylabel('y'); zlabel('z')
% Modify azimuth (horizontal rotation) and update drawing
for az = -50 : .2 : 30
view(az, 40)
drawnow
end
% Modify elevation (vertical rotation) and update drawing
for el = 40 : -.2 : -30
view(30, el)
drawnow
end
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
👈کد متلب:
clear all
close all
clc
% Draw a sphere
sphere
% Make the current axis box square in size
axis('square')
% Define noscript and labels for reference
noscript('Rotation of a sphere...')
xlabel('x'); ylabel('y'); zlabel('z')
% Modify azimuth (horizontal rotation) and update drawing
for az = -50 : .2 : 30
view(az, 40)
drawnow
end
% Modify elevation (vertical rotation) and update drawing
for el = 40 : -.2 : -30
view(30, el)
drawnow
end
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔘کد نمایش انیمیشن از سهمی (paraboloid)
👈کد متلب :
clear all
close all
clc
% Define paraboloid
X = -2 : .1 : 2; Y = X;
[x, y] = meshgrid(X, Y);
z = .5 * (x.^2 + y.^2);
% Draw 3D figure, keep track of its handle
h = surf(x,y,z);
% Keep axes constant
axis([-2 2 -2 2 0 20])
% Define noscript and labels for reference
xlabel('x'); ylabel('y'); zlabel('z')
% Stretch paraboloid and show updates
for i = 1 : .1 : 5;
set(h, 'xdata', x, 'ydata', y, 'zdata', i*z)
drawnow
end
% Modify azimuth (horizontal rotation) and update drawing
for az = -37.5 : .5 : 30
view(az, 30)
drawnow
end
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
👈کد متلب :
clear all
close all
clc
% Define paraboloid
X = -2 : .1 : 2; Y = X;
[x, y] = meshgrid(X, Y);
z = .5 * (x.^2 + y.^2);
% Draw 3D figure, keep track of its handle
h = surf(x,y,z);
% Keep axes constant
axis([-2 2 -2 2 0 20])
% Define noscript and labels for reference
xlabel('x'); ylabel('y'); zlabel('z')
% Stretch paraboloid and show updates
for i = 1 : .1 : 5;
set(h, 'xdata', x, 'ydata', y, 'zdata', i*z)
drawnow
end
% Modify azimuth (horizontal rotation) and update drawing
for az = -37.5 : .5 : 30
view(az, 30)
drawnow
end
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔘 اتسو یک روش آستانهگذاری خودکار است که با توجه به هیستوگرام تصویر یک مقدار آستانه را تولید میکند. در این قسمت تصویر با استفاده از این روش آستانهگذاری شده و به یک تصویر باینری تبدیل شده است که تنها پیکسلهای سفید و سیاه دارد. همانطور که مشاهده میشود، سکهها با دقت نسبتا خوبی از پس زمینه جدا شدهاند.
clc
close all
clear all
image=imread('coins.png');
figure,imshow(image),noscript('image')
TH = graythresh(image);
TH = TH * 255;
mask = image > TH ;
figure,imshow(mask),noscript('segmented image')
لینک کانال:👇👇👇👇👇
@Matlab_Communication
تصاویر خروجی و تصویر مورد استفادهء برنامه در قسمت پایین قابل مشاهده میباشد. لطفاً جهت استفاده، تصویر اصلی را دانلود کنید👇👇👇👇👇👇👇
clc
close all
clear all
image=imread('coins.png');
figure,imshow(image),noscript('image')
TH = graythresh(image);
TH = TH * 255;
mask = image > TH ;
figure,imshow(mask),noscript('segmented image')
لینک کانال:👇👇👇👇👇
@Matlab_Communication
تصاویر خروجی و تصویر مورد استفادهء برنامه در قسمت پایین قابل مشاهده میباشد. لطفاً جهت استفاده، تصویر اصلی را دانلود کنید👇👇👇👇👇👇👇
Media is too big
VIEW IN TELEGRAM
🔘نحوه کار با سایت فیزیونت
🔺 نحوه دسترسی به داده های سایت فیزیونت
🔺 نحوه کار با GUI سایت فیزیونت
🔺 نحوه دانلود داده به فرمت .mat
👈مدرس: محمد نوری زاده چرلو
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔺 نحوه دسترسی به داده های سایت فیزیونت
🔺 نحوه کار با GUI سایت فیزیونت
🔺 نحوه دانلود داده به فرمت .mat
👈مدرس: محمد نوری زاده چرلو
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
Subsystem.pdf
184.2 KB
🔘تعریف یک زیرسیستم با بلوک در سیمولینک متلب (Subsystem) با بلوک Subsystem در سیمولینک متلب
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
کانال تخصصی متلب
@matlab_communication Findind_2Curves_Intersections.rar
✅تکمیلی
نحوه کار و توضیحات این برنامه توسط جناب دکتر سید جمال صدیقی رنانی تکمیل شده. با تشکر از آقای دکتر.
توضیحات تکمیلی👇👇👇👇
نحوه کار و توضیحات این برنامه توسط جناب دکتر سید جمال صدیقی رنانی تکمیل شده. با تشکر از آقای دکتر.
توضیحات تکمیلی👇👇👇👇
Nonlinear_Control_Design.rar
2.3 MB
🔘کد متلب( کد برنامه متلب) طراحی کنترلر غیرخطی برای کنترل زاویه دریچه ورودی هوا در موتور خودرو به دو روش:
👈فیدبک خطی ساز
👈مد لغزشی
🔸همچنین بررسی اثرات نامعینی در پارامترهای سیستم بر کنترلرهای طراحی شده.
✔️تشکر ویژه از آقای دکتر سید جمال صدیقی رنانی بابت تهیه و نوشتن این برنامه.
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
👈فیدبک خطی ساز
👈مد لغزشی
🔸همچنین بررسی اثرات نامعینی در پارامترهای سیستم بر کنترلرهای طراحی شده.
✔️تشکر ویژه از آقای دکتر سید جمال صدیقی رنانی بابت تهیه و نوشتن این برنامه.
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔘کاربرد دستور در متلبinmem
با استفاده از دستور inmem در متلب میتوانیم نام تمام توابع(Function) و MEX-fileها و کلاسهای موجود در حافظه را به دست آوریم.
🔺به مثال زیر توجه کنید:👇👇👇
clear all
close all
clc
A = magic(3)
M = inmem
✔️نتیجه اجرای کد بالا بصورت زیر است:👇
چون از تابع magic استفاده کردهایم، بنابراین تابع magic در حافظه قرار گرفته است و در فهرست نامها مشاهده میشود:
A =
8 1 6
3 5 7
4 9 2
✔️خروجی برنامه به شکل زیر میباشد:👇
M =
'Mesal'
'RmiMlData.RmiMlData'
'RMIRepository.RMIRepository'
'workspacefunc'
'close'
'magic'
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
با استفاده از دستور inmem در متلب میتوانیم نام تمام توابع(Function) و MEX-fileها و کلاسهای موجود در حافظه را به دست آوریم.
🔺به مثال زیر توجه کنید:👇👇👇
clear all
close all
clc
A = magic(3)
M = inmem
✔️نتیجه اجرای کد بالا بصورت زیر است:👇
چون از تابع magic استفاده کردهایم، بنابراین تابع magic در حافظه قرار گرفته است و در فهرست نامها مشاهده میشود:
A =
8 1 6
3 5 7
4 9 2
✔️خروجی برنامه به شکل زیر میباشد:👇
M =
'Mesal'
'RmiMlData.RmiMlData'
'RMIRepository.RMIRepository'
'workspacefunc'
'close'
'magic'
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔘جلوگیری از پاک شدن توابع از حافظه (جلوگیری از عملکرد دستور clear برای آنها) با دستور mlock در متلب
🔺هنگامی که از یک تابع در کدهای برنامه متلب خود استفاده میکنیم، آن تابع در حافظه قرار میگیرد و زمانی که از دستور clear استفاده شود، از حافظه پاک خواهد شد. اما گاهی ما قصد داریم که در صورت استفاده از یک تابع، حتی اگر دستور clear اجرا شود، تابع مورد نظر از حافظه پاک نگردد. در این موارد میتوانیم از دستور mlock در متلب استفاده نماییم.به این صورت که دستور mlock در خط دوم از کدهای تعریف تابع ذکر میگردد.
🔺به عنوان مثال، فرض کنید که تابعی با نام add و با ساخت یک m-file جدید با نام add.m تعریف نمودهایم که کدهای تعریف آن به صورت زیر میباشد:👇👇👇👇
function [z] = add(x,y)
z = x+y;
👈اکنون در صورتی که بخواهیم دستور mlock را در آن ذکر نماییم، کدهای تعریف تابع را به صورت زیر مینویسیم:
function [z] = add(x,y)
mlock
z = x+y;
👈حال چک می کنیم که آیا با اجرای دستور clear ، تابع add از حافظه پاک میشود یا خیر. برای این منظور کد متلب زیر را اجرا میکنیم:
clear all
close all
clc
A = add(1,2)
clear all
M = inmem
👈دستور clear all را بعد از استفاده از تابع add به کار بردهایم، زیرا وقتی از تابع add استفاده میشود، آنگاه در حافظه قرار میگیرد و بنابراین بعد از آن باید دستور clear all برای پاک کردن از حافظه اجرا گردد.
در کد بالا، دستور inmem برای به دست آوردن نام تمام توابع و MEX-file ها و کلاسهای موجود در حافظه به کار رفته است.
✔️نتیجه:
A =
3
M =
'Mesal'
'RmiMlData.RmiMlData'
'RMIRepository.RMIRepository'
'add'
'workspacefunc'
همان طور که مشاهده میکنید تابع add از حافظه پاک نشده است.
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔺هنگامی که از یک تابع در کدهای برنامه متلب خود استفاده میکنیم، آن تابع در حافظه قرار میگیرد و زمانی که از دستور clear استفاده شود، از حافظه پاک خواهد شد. اما گاهی ما قصد داریم که در صورت استفاده از یک تابع، حتی اگر دستور clear اجرا شود، تابع مورد نظر از حافظه پاک نگردد. در این موارد میتوانیم از دستور mlock در متلب استفاده نماییم.به این صورت که دستور mlock در خط دوم از کدهای تعریف تابع ذکر میگردد.
🔺به عنوان مثال، فرض کنید که تابعی با نام add و با ساخت یک m-file جدید با نام add.m تعریف نمودهایم که کدهای تعریف آن به صورت زیر میباشد:👇👇👇👇
function [z] = add(x,y)
z = x+y;
👈اکنون در صورتی که بخواهیم دستور mlock را در آن ذکر نماییم، کدهای تعریف تابع را به صورت زیر مینویسیم:
function [z] = add(x,y)
mlock
z = x+y;
👈حال چک می کنیم که آیا با اجرای دستور clear ، تابع add از حافظه پاک میشود یا خیر. برای این منظور کد متلب زیر را اجرا میکنیم:
clear all
close all
clc
A = add(1,2)
clear all
M = inmem
👈دستور clear all را بعد از استفاده از تابع add به کار بردهایم، زیرا وقتی از تابع add استفاده میشود، آنگاه در حافظه قرار میگیرد و بنابراین بعد از آن باید دستور clear all برای پاک کردن از حافظه اجرا گردد.
در کد بالا، دستور inmem برای به دست آوردن نام تمام توابع و MEX-file ها و کلاسهای موجود در حافظه به کار رفته است.
✔️نتیجه:
A =
3
M =
'Mesal'
'RmiMlData.RmiMlData'
'RMIRepository.RMIRepository'
'add'
'workspacefunc'
همان طور که مشاهده میکنید تابع add از حافظه پاک نشده است.
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔘بازگرداندن دوباره قابلیت پاک شدن توابع از حافظه(خنثی کردن دستور mlock برای تابع) با دستور munlock در متلب
🔺در پُست قبلی چگونگی جلوگیری از پاکشدن توابع از حافظه(جلوگیری از عملکرد دستور clear برای آنها) با استفاده از دستور mlock در متلب را شرح دادیم. اما ممکن است بعد از اجرای این مورد برای یک تابع (با ذکر کردن دستور mlock در کدهای تعریف آن تابع) بخواهیم که دوباره این امکان را به وجود بیاوریم که در صورت استفاده از دستور clear ، آن تابع از حافظه پاک شود. برای این منظور باید دستور munlock در متلب را به کار ببریم.
👈یعنی با فرض اینکه مثلا تابع دارای نام add باشد (کدهای تعریف آن در یک m-file با نام add.m) و دستور mlock به صورت زیر در کدهای تعریف آن ذکر شده باشد:
function [z] = add(x,y)
mlock
z = x+y;
👈آنگاه در هنگام استفاده از این تابع، میتوانیم به صورت زیر تعیین کنیم که دوباره امکان پاک شدن آن از حافظه توسط دستور clear به وجود بیاید:👇👇👇👇👇
munlock add
🔺به عنوان مثال کد زیر را اجرا میکنیم:👇👇
clear all
close all
clc
A = add(1,2)
munlock add
clear all
M = inmem
👈دستور clear all را بعد از استفاده از تابع add به کار بردهایم، زیرا وقتی از تابع add استفاده میشود آنگاه در حافظه قرار میگیرد و بنابراین بعد از آن باید دستور clear all برای پاک کردن از حافظه اجرا گردد.
👈در کد بالا دستور inmem برای به دست آوردن نام تمام توابع و MEX-file ها و کلاسهای موجود در حافظه به کار رفته است.
✔️نتیجه:👇👇👇👇
A =
3
M =
'Mesal'
'RmiMlData.RmiMlData'
'RMIRepository.RMIRepository'
'workspacefunc'
همان طور که مشاهده میکنید تابع add از حافظه پاک شده است.
⚠️منبع: وبسایت کلیدستان
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔺در پُست قبلی چگونگی جلوگیری از پاکشدن توابع از حافظه(جلوگیری از عملکرد دستور clear برای آنها) با استفاده از دستور mlock در متلب را شرح دادیم. اما ممکن است بعد از اجرای این مورد برای یک تابع (با ذکر کردن دستور mlock در کدهای تعریف آن تابع) بخواهیم که دوباره این امکان را به وجود بیاوریم که در صورت استفاده از دستور clear ، آن تابع از حافظه پاک شود. برای این منظور باید دستور munlock در متلب را به کار ببریم.
👈یعنی با فرض اینکه مثلا تابع دارای نام add باشد (کدهای تعریف آن در یک m-file با نام add.m) و دستور mlock به صورت زیر در کدهای تعریف آن ذکر شده باشد:
function [z] = add(x,y)
mlock
z = x+y;
👈آنگاه در هنگام استفاده از این تابع، میتوانیم به صورت زیر تعیین کنیم که دوباره امکان پاک شدن آن از حافظه توسط دستور clear به وجود بیاید:👇👇👇👇👇
munlock add
🔺به عنوان مثال کد زیر را اجرا میکنیم:👇👇
clear all
close all
clc
A = add(1,2)
munlock add
clear all
M = inmem
👈دستور clear all را بعد از استفاده از تابع add به کار بردهایم، زیرا وقتی از تابع add استفاده میشود آنگاه در حافظه قرار میگیرد و بنابراین بعد از آن باید دستور clear all برای پاک کردن از حافظه اجرا گردد.
👈در کد بالا دستور inmem برای به دست آوردن نام تمام توابع و MEX-file ها و کلاسهای موجود در حافظه به کار رفته است.
✔️نتیجه:👇👇👇👇
A =
3
M =
'Mesal'
'RmiMlData.RmiMlData'
'RMIRepository.RMIRepository'
'workspacefunc'
همان طور که مشاهده میکنید تابع add از حافظه پاک شده است.
⚠️منبع: وبسایت کلیدستان
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
#مرور_مطالب_گذشته
🔘چاپ سری فیبوناچی در متلب👇👇
clear;clc;
N=input('Number =');
f(1)=1;f(2)=1;
for t=3:N
f(t)=f(t-1)+f(t-2);
end
disp(f)
به شکل زیر هم میتوان نوشت:👇
clc;clear all;close all;
n=input('Enter a number');
f(1)=0;
f(2)=1;
sum=[1 1];
for i=3:n
sum(i)=sum(i-1)+sum(i-2)
end
disp(sum);
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔘چاپ سری فیبوناچی در متلب👇👇
clear;clc;
N=input('Number =');
f(1)=1;f(2)=1;
for t=3:N
f(t)=f(t-1)+f(t-2);
end
disp(f)
به شکل زیر هم میتوان نوشت:👇
clc;clear all;close all;
n=input('Enter a number');
f(1)=0;
f(2)=1;
sum=[1 1];
for i=3:n
sum(i)=sum(i-1)+sum(i-2)
end
disp(sum);
کانال تخصصی متلب:👇👇👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
Forwarded from کانال تخصصی متلب (Ali Moradi)
Matlab.rar
62.9 MB
@Matlab_Communication
✅آموزش تصویری(ویدئویی) متلب از صفر.
💫ویژه مبتدیان یا کسانی که میخواهند کار با متلب را از صفر شروع کنند.
کانال تخصصی متلب:::::::::👇👇
@Matlab_Communication
✅آموزش تصویری(ویدئویی) متلب از صفر.
💫ویژه مبتدیان یا کسانی که میخواهند کار با متلب را از صفر شروع کنند.
کانال تخصصی متلب:::::::::👇👇
@Matlab_Communication