MatlabTips
891 subscribers
462 photos
73 videos
54 files
304 links
آموزش MATLAB با "استفاده از ویدئو و متن" در سطوح مبتدی تا پیشرفته
پاسخ به سوالات تخصصی:
@roholazandie
Download Telegram
کد برنامه در زیر آمده است:
%  pimc.m
% Matlab Program to Find Pi using Random Numbers
Nrand = input('How Many Random Numbers ');
NInside = 0;
for nloops=1:Nrand
Xrand = rand; % Generate Random XY Point
Yrand = rand;
Rrand = Xrand^2 + Yrand^2; % Find its distance from origin
if (Rrand <= 1)
NInside = NInside + 1;
end
end
disp(['Total Generated: ' num2str(Nrand) ' Inside Pts: ' ...
num2str(NInside)]);
piapprox = 4*NInside/Nrand;
disp([' Approximation to pi = ' num2str(piapprox)]);

دقت کنید که هر چقدر نقاط تولید بیشتر باشد، جواب بهتری خواهید گرفت. مثال های کاربردی تری در ادامه خواهیم زد.
#Monte_Carlo, #For_all , #PI
@MatlabTips
Forwarded from تراکالا
🔯چه جوری ویروس مخفی کننده پوشه‌ها در فلش را از بین ببریم؟

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

🔸حذف ویروس مخفی کننده پوشه‌ها و فایل‌ها:

اگر روزی فلش‌تان را باز کردید و دیدید داخل آن چیزی نیست، وحشت نکنید. احتمالا ویروس گرفته‌اید و ویروسی که این کار را می‌کند، خوشبختانه فایل‌ها را پاک نمی‌کند و فقط آن‌ها را مخفی می‌کند. برای اطمینان از این‌که فایل‌ها پاک نشده‌اند، می‌توانید فضای اشغال‌شده‌ روی فلش را بررسی کنید. اگر فلش‌تان همچنان پُر بود، فایل‌های ارزش‌مندتان همچنان روی فلش قرار دارد. پس بیایید ببینیم چگونه می‌توانیم فایل‌ها را به حالت اول برگردانیم.

گام اول: قبل از هر چیز آنتی‌ویروس‌تان را به‌روز و کامپیوترتان را اسکن کنید.

گام دوم: کلید ویندوز را نگه دارید و دکمه‌ی r را فشار بدهید تا پنجره‌ی Run در گوشه‌ی پایین و سمت چپ صفحه باز شود. در پنجره‌ی Run فرمان cmd را تایپ کنید و سپس کلید اینتر را فشار دهید تا پنجره‌ی فرمان ویندوز یا همان Command Prompt باز شود.

گام سوم: My Computer را باز کنید و نام درایو مورد نظرتان را ببینید. مثلاً اگر درایو فلش‌تان در مای کامپیوتر F است، در پنجره‌ی فرمان ویندوز تایپ کنید F: و کلید اینتر را فشار بدهید تا پنجره‌ی فرمان وارد درایو F (یا هر چیز دیگری که مربوط به فلش‌تان است) شود.

گام چهارم: دستور زیر را وارد کنید و کلید اینتر را فشار بدهید:
attrib -r -a -s -h *.*/s/d

این دستور تمام بلاهایی را که ویروس سر فایل‌ها و پوشه‌هاتان آورده، از بین می‌برد. در واقع این ویروس ویژگی‌های فایل‌ها و فولدرها را طوری دست‌کاری می‌کند که نتوانید آن‌ها را ببینید. این فرمان ویژگی‌های فایل‌ها و فولدرها را به حالت اول برمی‌گرداند.
@terakala
🔵ماتریس‌های بزرگ رو زودتر تخصیص دهید🔵
سطح پیچیدگی:🌕🌕🌑🌑🌑
پیش‌نیاز: کد نویسی مقدماتی
برای: پیشرفته
📝هدف از این پست : استفاده بهینه از حافظه

متلب از روش هیپ (heap) کردن برای مدیریت حافظه استفاده میکند.هنگامی که حافظه کافی در heap متلب جهت ذخیره‌سازی متغیرهای جاری وجود نداشته باشد، ازطریق سیستم عامل به حافظه درخواست میدهد. تا زمانی که یک سگمنت مناسب برای جاسازی متغیر در heap متلب پیدا نشود، متلب از مموری استفاده میکند.
برای مثال اجرای کد زیر در متلب در یک ماشین خاص به اندازه 15.4 مگابایت ram میگیرد:
a = rand(1e6,1);
b = rand(1e6,1);

در حالی که عبارت زیر 16.4 مگابایت Ram میگیرد:
c = rand(2.1e6,1);

حالا به این عبارات دقت کنید که تقریبا 32.4 مگابایت Ram میگیرند. به این دلیل که متلب قادر نیست دیگر آرایه 2.1 مگابایتی را در فضایی که قبلا توسط دو آرایه 1 مگابایتی اشغال شده بود، جاسازی کند:
a = rand(1e6,1);
b = rand(1e6,1);
clear
c = rand(2.1e6,1);

ساده‌ترین راه برای جلوگیری از بیش‌تخصیص حافظه، تخصیص بزرگترین بردار در ابتدای امر است. این عبارات در حدود 16.4 مگابایت ram میگیرند.
c = rand(2.1e6,1);
clear
a = rand(1e6,1);
b = rand(1e6,1);

#For_advanced, #Memory ,#Preallocate
@MatlabTips
دستورالعمل‌های کیمیاگری به جا مانده از نیوتن در قرن هفدهم، کشف شد
#Science_Facts
@MatlabTips
🔵میانگین‌گیری دمای کره زمین با استفاده از شبیه‌سازی مونت کارلو🔵
سطح پیچیدگی:🌕🌕🌕🌑🌑
پیش‌نیاز: خواندن پست قبلی مربوط به مونت کارلو
برای: پیشرفته
📝هدف از این پست : کاربردی از شبیه سازی مونت کارلو

برای تعیین میانگین دمای کره، باید میانگین دمای هر باند عرض جغرافیایی(latitude) را محاسبه کنیم. پر واضح است که از خط استوا تا عرض 10 درجه نسبت به عرض 80 درجه تا قطب شمال(که فقط خرس بزرگ و پسر نانوک الان زندگی میکنند) نواحی بیشتری وجود دارد .
بنابراین برای تعیین میانگین دما باید به هر باند وزنی متناسب با نواحی آن باند داده شود. اگرچه این موضوع بصورت تحلیلی و با استفاده از انتگرالگیری میسر است، اما می توان با استفاده از روش مونت کارلو هم چنین کاری انجام داد.
برنامه ای را که در پست قبلی مربوط به مونت کارلو نوشته شد، میتوانیم قدری اصلاح کنیم تا برنامه این پست را بنویسیم.
در این مسئله نقطه xyz را درون یک مکعب به ابعاد واحد تولید میکنیم. در مرحله بعد تعیین میکنیم که آیا همچین نقطه‌ای بر روی سطح کره ای به شعاع یک قرار دارد یا خیر مانند زیر:
Rrand = Xrand.^2 + Yrand.^2 + Zrand.^2;

                       CheckValue = Rrand<=1.01 & Rrand>=.99;

در مرحله بعد چک میکنیم که آیا نقاط در باند جغرافیایی و بر روی سطح کره مذکور قرار گرفته اند یا خیر.‌ یک شمارنده برای ارزیابی این معیار در نظر گرفته شده است. در پایان نیز میتوانیم تعداد نقاط در هر باند عرض جغرافیایی(دقت کنید هر باند 10 درجه تقسیم کرده ایم) را بر کل نقاط تولید شده که بر روی سطح کره بودند تقسیم کنیم.
%  Spheremc.m

%  Program to Determine Fraction of Area in Latitude Bands on a Sphere


Theta1 = 0;

Theta2 = 90;

NSubDiv = 9; % Nine Subdivisions of 10 Degrees Each

dTh = (Theta2-Theta1)/NSubDiv;  % Width of Each Division (10 Degrees)

ThLow = Theta1:dTh:Theta2-dTh;  % Lower Limit for Each Region ( 0,10,20..80)

ThHigh = Theta1+dTh:dTh:Theta2; % Upper Limit for Each Region (10,20,30..90)

Nrand = 8192;    % Number of Points for Student Edition of Matlab

Nmax  = input('How Many Loops of 8192 Values Each ');

NTrand = 0;               % Initialize Total number of Points Generated

NGoodPts = 0;             % Initialize Total number of Points on Sphere

NZone = zeros(1,NSubDiv); % Initialize Number in each zone

T0 = clock;               % Keep track of CPU time (for reference purposes)

for nloops=1:Nmax

   Xrand = rand(1,Nrand);    % Generate XYZ Points in space

   Yrand = rand(1,Nrand);

   Zrand = rand(1,Nrand);

   Rrand = Xrand.^2 + Yrand.^2 + Zrand.^2;  % Find distance from origin

   CheckValue = Rrand<=1.01 & Rrand>=.99;   % See if on surface of sphere

   NGoodPts = NGoodPts + sum(CheckValue);   % Keep track of total on surface

   Lat = asin(Zrand)*180/pi;                % Find the Latitude of Each point

   for i=1:NSubDiv                          % Sweep through all latitudes

       NZoneCheck = Lat < ThHigh(i) & Lat >= ThLow(i); % Check if in latitude

       NZoneCheck = NZoneCheck .* CheckValue;          %  and on surface

       NZone(i) = NZone(i) + sum(NZoneCheck);          % If so, add to sums

   end

   NTrand = NTrand + Nrand;                 % Total number of Points Generated

end

T0 = clock - T0;                            % CPU Time at end of program

disp(['Total Generated: ' num2str(NTrand) ' Good Pts: '...

    num2str(NGoodPts)  ' Seconds: ' num2str(T0)]);

fLatitude = NZone/NGoodPts;

fError = fLatitude./sqrt(NZone);

fActual = sin(ThHigh*pi/180.)-sin(ThLow*pi/180.);

disp('Summary for Zones');

disp('Lower Angle, Upper Angle, Simulated Fraction in Band, Uncertainty,');

disp('   Actual Fraction (using Calculus)');

disp([ ThLow' ThHigh' fLatitude' fError' fActual']);

#Monte_Carlo
#For_advanced
@MatlabTips
الماسی به بزرگی ماه در فضا کشف شده که آن را "لوسی" نامیده‌اند (بر اساس آهنگ گروه بیتلز به نام "لوسی در آسمان با الماس‌ها")
#Science_Fact
@MatlabTips
Forwarded from تراکالا
اگر در مرورگر یک Tab را به اشتباه بستید کافی است این سه کلید را همزمان فشار دهید
Ctrl+shift+the
@terakala
🔵انتگرال عددی با استفاده از روش مونت کارلو🔵
سطح پیچیدگی:🌕🌕🌑🌑🌑
پیش‌نیاز: خواندن پست قبلی مربوط به مونت کارلو
برای: پیشرفته و متوسط
📝هدف از این پست : کاربردی از شبیه سازی مونت کارلو در انتگرال گیری


در پست‌های قبلی دیدیم که چگونه با استفاده از روش مونت کارلو توانستیم عدد p را تقریب بزنیم و ایده‌ای برای میانگین گیری دمای کره زمین ارائه دادیم. اما شاید اینها کاربردهایی خیلی پیش‌پا افتاده از این روش است. شاید باور کردن این موضوع برای شما هم دشوار باشد که از این روش در پروژه‌های عظیمی مانند پروژه منهتن (پروژه ساخت بمب هسته‌ای) هم به کمک مهندسین آمده است. اما مشهورترین روش استفاده، به کارگیری این روش توسط انریکو فرمی در سال 1930 بود که از روشی تصادفی برای تعیین مشخصات نوترون تازه کشف‌شده بود.
اینها را گفتم که به عظمت این روش پی ببریم و این اندیشه در ذهنمان نماند که برای مسائل ساده جوابگو است.
در این پست میخواهیم انتگرال یک تابع را با استفاده از روش مونت کارلو بدست آوریم و آن را با مقدار واقعیش مقایسه کنیم. میدانیم که هر چقدر تعداد نمونه های مونت کارلو بیشتر باشد، دقت بهتری میدهد و البته پرواضح است که این روش برای انتگرالهایی با سطوح یا حجم¬های بدترکیب و زشت و یا توابع پیچیده چندمتغیره کاربرد دارد. در مقام مقایسه من از یک تابع مقدماتی شروع میکنم.
فرض کنید تابع شما به صورت زیر باشد:
انتگرال تابع مساحت زیر نمودار منحنی پیوسته هست. برای بدست آوردن انتگرال با مونت کارلو به دو پارامتر نیازمندیم:
دامنه انتگرال. در شکل بال از 0 تا xmax ادامه دارد.
دوم بیشینه تابع در محدوده انتگرال گیری که آن را fmax میگیریم.
دو مقدار xmax و fmax ابعاد یک مستطیل را تشکیل میدهند که تابع را محیط کرده است. انتگرال تابع بخشی از مستطیل است.
درست مانند مثالهای قبلی یک سری اعداد تصادفی تولید میکنیم (xr,fr) و چک میکنیم که این نقطه در بالای منحنی است یا زیر آن.

مراحل:
1⃣تولید یک جفت عدد رندم به نام r1 وr2 . دقت کنید که این دو عدد بین 0و1 باشد.
2⃣محاسبه xr=r1*xmax و fr=r2*fmax. (مشخص است، من در محدوده فضای جستجو اعداد تصادفی تولید میکنم)
3⃣چک کنیم که آیا نقطه زیر منحنی است یا خیر (fr<f(xr))
4⃣اضافه کردن یک عدد به شمارنده در صورتی که نقطه زیر منحنی افتاد
5⃣تکرار مراحل بالا به تعداد کافی
6⃣انتگرال را با نسبت گیری تعداد نقاطی که زیر منحنی افتاده اند با تعداد کل نقاط شبیه سازی ضربدر کل ناحیه مستطیلی بدست می آید.

🖊توجه: از آنجایی که این روش ماهیت تصادفی دارد، اگر شما دو بار اجرا بگیرید با تعداد نمونه های یکسان، جواب متفاوتی به شما میدهد.
clc
clear all
f = @(x) exp(x);
xmax = input('insert xmax:\n');
fmax = input('insert maximum of function:\n');
n = input('number of simulation:\n');
cnt = 0;
for i = 1 : n
r1 = rand;
r2 = rand;
xr = r1 * xmax;
fr = r2 * fmax;
if fr < f(xr)
cnt = cnt + 1;
end
end
area = cnt/n * xmax * fmax;
disp(['the area under the curve is: ' num2str(area)])
err = abs(integral(f,0,xmax)-area);
fprintf('error of monte carlo is %2.4f',err)

#For_advanced , #For_intermediate , #Monte_Carlo , #Integral
@MatlabTips
🔵حل و فصل خطاهای out of memory🔵
سطح پیچیدگی:🌕🌓🌑🌑🌑
پیش‌نیاز: آشنایی با مبانی حافظه
برای: پیشرفته
📝هدف از این پست : استفاده بهینه از حافظه. این پست برای کسانی است که مقام متلب رو بخوان بیشتر درک کنن.


هنگامی که متلب به سیستم عامل درخواست یک مقدار حافظه میدهد و آن مقدار بیش از حافظه موجود است، خطای out of memory دریافت میشود. برای جلوگیری از این حالت چند روش وجود دارد که در چند پست به آن میپردازیم:
🗝پیشنهادات کلی
اگر همچین پیامی دیدید در وهله اول سعی کنید از تکینکهای "استفاده بهینه از حافظه" که در پستهای قبلی اشاره شد استفاده کنید. اما اگر همچنان این خطا پافشاری کرد اقدامات زیر را انجام دهید:
1⃣جهت کاهش فرگمنتیشن حافظه داده ها را فشرده کنید
2⃣در صورت امکان، ماتریس های بزرگ را به چندین ماتریس کوچک تقسیم کنید تا در هر زمان حافظه کمتری صرف شود.
3⃣اگر میتوانید اندازه داده هایتان را کاهش دهید.
4⃣مطمئن شوید که قیدی خارجی بر روی دسترسی متلب به حافظه وجود نداشته ابشد.(در سیستم های unix از دستور limit برای چک کردن این موضوع استفاده کنید)
5⃣حافظه بیشتری به سیستمتان اضافه کنید.
اینها یک سری نکات کلی بود و هر نکته باید به تفصیل پرداخته شود. در پست های جداگانه ای تشریح خواهیم کرد.

#Memory , #Out_of_memory , #For_advanced
@MatlabTips
🔵فشرده‌سازی داده‌ها در حافظه🔵
سطح پیچیدگی:🌕🌓🌑🌑🌑
پیش‌نیاز: آشنایی با مبانی حافظه
برای: پیشرفته
📝هدف از این پست : استفاده بهینه از حافظه.

گفته شد که متلب از روش heap برای مدیریت حافظه استفاده میکند، پس طولانی کردن اجراهای متلب ممکن است به فرگمنت شدن حافظه بینجامد. هنگامی که حافظه فرگمنت شود، مکان های بسیاری از فضاهای خالی وجود دارد ولی تکه تکه هستند و به دلیل عدم پیوستگی نمیتوانند متغیرهای بزرگ را که جدیدا تعریف شده اند در خود جای دهند(دقت کنید که برای جاسازی یک آرایه در حافظه نیاز به یک بلوک پیوسته از حافظه داریم).
1⃣ در صورتی که خطای out of memory دریافت کردید، تابع pack برخی از داده ها را در حافظه فشرده میکند، بنابراین بلوک های پیوسته بزرگتر آزاد میشود.
#For_advanced , #Out_of_memory , #Memory
@MatlabTips
روز گذشته خبر فرود موفقیت‌آمیز راکت شرکت فضایی اسپیس ایکس بر روی سکوی شناور منتشر شد. این اتفاق را می‌توان انقلابی بزرگ در صنعت فضایی دانست که می‌تواند شروع عصری تازه در ارسال راکت و ماهواره‌‌بر به فضا باشد. روز گذشته یکی از موشک های فالکون ۹ این شرکت به شکل موفقیت آمیزی بر روی سکوی شناور فرود آمد.
این پروژه شاهکار نظریه کنترل به عنوان شاخه ای از ریاضیات است که از قرن شانزدهم با نیوتون و لایبنیتز آغاز شد و با لاپلاس، لاگرانژ، لیاپانوف و کولموگروف به اوج رسید. این نظریه در قلب سیستم هایی قرار دارد که قابلیت خودتنظیمی در مقابل تغییرات و کنترل شرایط پیچیده مانند همین فرود را دارند.
اسپیس ایکس تا کنون چندین بار در انجام این پروژه شکست خورده بود تا این که بالاخره توانست یک راکت را برای ماموریت فضایی اعزام کند و پس از انجام ماموریت، آن را به سلامت به زمین بازگرداند. موفقیت این پروژه بدین معناست که از این پس شرکت‌های فضایی می‌توانند از راکت‌هایی که برای ماموریت‌های فضایی مانند حمل ماهواره اعزام می‌شوند، دوباره استفاده کنند و این به معنای کاهش شگفت‌انگیز هزینه‌های پروژه‌های فضایی است.
#News
@MatlabTips
با توجه به این برخی دوستان تصور می کنند فیلم ویدیوی بالا به صورت برعکس نمایش داده شده و فیک است، منابع زیر را برای بررسی بیشتر علاقه مندان قرار می دهیم:
[1] https://www.theguardian.com/science/video/2016/apr/09/spacex-falcon-9-rocket-successfully-lands-on-ocean-platform-video
[2] https://www.space.com/32517-spacex-sticks-rocket-landing-sea-dragon-launch.html
🔵پایه‌ریزی یک برنامه🔵
سطح پیچیدگی:🌕🌓🌑🌑🌑
پیش‌نیاز: ندارد
برای: همه
📝هدف از این پست : برنامه نویسی اصولی

هنگامی که تصمیم میگیرید چگونه یک برنامه را بنویسید، برنامه را بگیرید و به تعدادی برنامه های کوچکتر و مستقل تقسیم کنید.
وظیفه هر برنامه را به عنوان یک تابع جداگانه تعریف کنید.
توابع را به شکل متناسبی کوتاه انتخاب کنید بطوری که هر تابع یک وظیفه انجام دهد.
#Programming , #For_all
@MatlabTips
تقریبا 1100 گونه از خفاش وجود دارد و هیچکدام از آنها کور نیستند. در نور به خوبی میبینند. چون در غار زندگی میکنند و تاریک است از سیستم سونیک برای راه یابی در تاریکی استفاده میکنند.
#Science_Facts
@MatlabTips
جلوگیری از خطای out of memory با استفاده از افزایش java heap memory به روایت تصویر.
#Out_of_memory , #For_advanced
@MatlabTips