🔘کد نمایش انیمیشن از یک کره(sphere) در متلب
✔️نتیجه به صورت انیمیشن می باشد.
clear all
close all
clc
%🔺Draw a sphere sphere
%🔺Make the current axis box square in %size
sphere
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
sphere
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
🔘رسم یک شیء گرافیکی به صورت قطعه(Patch) بر اساس تعریف نقاط سازنده آن با دو بردار مختصات x و y و تعیین رنگ دلخواه برای آن با دستور patch در متلب
✍دستور patch در متلب برای ساخت یک شیء گرافیکی به صورت قطعه به کار می رود. شکل کلی استفاده از دستور patch به صورت زیر میباشد:
patch(x, y, color)
قطعه (Patch)، بر اساس اتصال تعدادی نقطه به یکدیگر و رنگ آمیزی سطح درون آنها ساخته میشود، بنابراین ما باید مختصات نقاط سازنده قطعه(Patch) و همچنین رنگ(Color) آن را تعیین نماییم.
برای این منظور، مختصات نقاط را در دو بردار با نام های x و y تعریف می کنیم(البته نام های دیگری نیز می توانید برای این دو بردار انتخاب نمایید). بنابراین مختصات محور افقی(X) و محور عمودی(Y) نقاط در دو بردار x و y ذخیره میشوند. یعنی مختصات محور افقی(X) نقطه اول، در اولین عنصر بردار x و مختصات محور عمودی(Y) نقطه اول، در اولین عنصر بردار y ذخیره می گردد. همچنین مختصات محور افقی(X) نقطه دوم، در دومین عنصر بردار x و مختصات محور عمودی(Y) نقطه دوم، در دومین عنصر بردار y ذخیره میگردد و الی آخر.
🔺به عنوان مثال برای تعریف مختصات 3 نقطه، کد زیر را مینویسیم :
x = [0 1 2];
y = [0 2 0];
همچنین باید رنگ مورد نظرمان را هم بر اساس کد رنگ (کد RGB) تعیین نماییم. یعنی به شکل کلی زیر :
color = [r g b];
که در آن، r برابر مقدار مربوط به رنگ قرمز (red) و g برابر مقدار مربوط به رنگ سبز (green) و b برابر مقدار مربوط به رنگ آبی (blue) میباشد (رنگ نهایی بر اساس یک ترکیب از مقدارهای دلخواه از این 3 رنگ اصلی به دست میآید).
🔺به عنوان مثال رنگ آبی (blue) را با کد زیر مشخص میکنیم:
color = [0 0 1];
بنابراین پس از تعیین مختصات نقاط و همچنین رنگ مورد نظرمان برای قطعهای (Patch) که میخواهیم رسم شود، میتوانیم دستور patch را بر اساس همان شکل کلی که ذکر کردیم به کار ببریم:
patch(x, y, color)
🔺به مثال زیر توجه کنید:
clear all
close all
clc
x = [0 1 2];
y = [0 2 0];
color = [0 0 1];
patch(x, y, color)
xlabel('X axis')
ylabel('Y axis')
✔️یادآوری:
دستورهای xlabel و ylabel در متلب برای تعیین عنوان برای محورهای عمودی (محور Y) و افقی (محور X) شکل به کار میروند.
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
💯نتیجه اجرای قطعه کد بصورت زیر میباشد👇👇
✍دستور patch در متلب برای ساخت یک شیء گرافیکی به صورت قطعه به کار می رود. شکل کلی استفاده از دستور patch به صورت زیر میباشد:
patch(x, y, color)
قطعه (Patch)، بر اساس اتصال تعدادی نقطه به یکدیگر و رنگ آمیزی سطح درون آنها ساخته میشود، بنابراین ما باید مختصات نقاط سازنده قطعه(Patch) و همچنین رنگ(Color) آن را تعیین نماییم.
برای این منظور، مختصات نقاط را در دو بردار با نام های x و y تعریف می کنیم(البته نام های دیگری نیز می توانید برای این دو بردار انتخاب نمایید). بنابراین مختصات محور افقی(X) و محور عمودی(Y) نقاط در دو بردار x و y ذخیره میشوند. یعنی مختصات محور افقی(X) نقطه اول، در اولین عنصر بردار x و مختصات محور عمودی(Y) نقطه اول، در اولین عنصر بردار y ذخیره می گردد. همچنین مختصات محور افقی(X) نقطه دوم، در دومین عنصر بردار x و مختصات محور عمودی(Y) نقطه دوم، در دومین عنصر بردار y ذخیره میگردد و الی آخر.
🔺به عنوان مثال برای تعریف مختصات 3 نقطه، کد زیر را مینویسیم :
x = [0 1 2];
y = [0 2 0];
همچنین باید رنگ مورد نظرمان را هم بر اساس کد رنگ (کد RGB) تعیین نماییم. یعنی به شکل کلی زیر :
color = [r g b];
که در آن، r برابر مقدار مربوط به رنگ قرمز (red) و g برابر مقدار مربوط به رنگ سبز (green) و b برابر مقدار مربوط به رنگ آبی (blue) میباشد (رنگ نهایی بر اساس یک ترکیب از مقدارهای دلخواه از این 3 رنگ اصلی به دست میآید).
🔺به عنوان مثال رنگ آبی (blue) را با کد زیر مشخص میکنیم:
color = [0 0 1];
بنابراین پس از تعیین مختصات نقاط و همچنین رنگ مورد نظرمان برای قطعهای (Patch) که میخواهیم رسم شود، میتوانیم دستور patch را بر اساس همان شکل کلی که ذکر کردیم به کار ببریم:
patch(x, y, color)
🔺به مثال زیر توجه کنید:
clear all
close all
clc
x = [0 1 2];
y = [0 2 0];
color = [0 0 1];
patch(x, y, color)
xlabel('X axis')
ylabel('Y axis')
✔️یادآوری:
دستورهای xlabel و ylabel در متلب برای تعیین عنوان برای محورهای عمودی (محور Y) و افقی (محور X) شکل به کار میروند.
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
💯نتیجه اجرای قطعه کد بصورت زیر میباشد👇👇
✔️خروجی قطعه کد بالا👆👆👆
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔘تابع گاما(Gamma Function) با دستور gamma در متلب
♦️دستور gamma در متلب برای تعریف تابع گاما به کار میرود. دستور gamma در متلب به شکل زیر به کار میرود که در آن، X باید یک عدد حقیقی باشد.
Y = gamma(X)
⚠️توجه
تابع گاما برای درون یابی کردن تابع فاکتوریل به کار میرود.
برای عدد صحیح n داریم:
gamma(n+1) = n! = prod(1:n)
🔺به مثال زیر توجه کنید:
clear all
close all
clc
Y_1 = gamma(1)
Y_2 = gamma(5)
Y_3 = gamma(10)
Y_4 = gamma(50)
✔️نتیجه:
Y_1 =
1
Y_2 =
24
Y_3 =
362880
Y_4 =
6.0828e+62
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
♦️دستور gamma در متلب برای تعریف تابع گاما به کار میرود. دستور gamma در متلب به شکل زیر به کار میرود که در آن، X باید یک عدد حقیقی باشد.
Y = gamma(X)
⚠️توجه
تابع گاما برای درون یابی کردن تابع فاکتوریل به کار میرود.
برای عدد صحیح n داریم:
gamma(n+1) = n! = prod(1:n)
🔺به مثال زیر توجه کنید:
clear all
close all
clc
Y_1 = gamma(1)
Y_2 = gamma(5)
Y_3 = gamma(10)
Y_4 = gamma(50)
✔️نتیجه:
Y_1 =
1
Y_2 =
24
Y_3 =
362880
Y_4 =
6.0828e+62
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
#سوال_کاربران
با سلام و تشکر از کانال خوبتون. سوالی داشتم. بنده قبلاً با سیشارپ کار کردم ولی الان با متلب دارم برنامهنویسی میکنم. آیا متلب هم امکانات گرافیکی مانند چکباکس و اینچیزا رو داره؟ آخه من میخوام چندتا برنامه رو در یک لیست قرار بدهم و کاربر با زدن دکمه هرکدام از آنها برنامه را اجرا کنه. ممنون میشم اگه یه مثال تصویری ارائه بفرمایید🙏🙏
#پاسخ
سلام دوست عزیز. وقتتون بخیر. جواب سوالتون "بله" هست. به محیط گرافیکی در متلب میگن GUIDE که به اصطلاح میشه همون واسط گرافیکی. در محیط متلب و در قسمت command windows متلب کلمه guide رو تایپ و اجرا کنید تا وارد محیط گرافیکی متلب بشید. در پُست بعدی آموزش ویدئویی این کار را میزاریم خدممتون🌹🌺
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
با سلام و تشکر از کانال خوبتون. سوالی داشتم. بنده قبلاً با سیشارپ کار کردم ولی الان با متلب دارم برنامهنویسی میکنم. آیا متلب هم امکانات گرافیکی مانند چکباکس و اینچیزا رو داره؟ آخه من میخوام چندتا برنامه رو در یک لیست قرار بدهم و کاربر با زدن دکمه هرکدام از آنها برنامه را اجرا کنه. ممنون میشم اگه یه مثال تصویری ارائه بفرمایید🙏🙏
#پاسخ
سلام دوست عزیز. وقتتون بخیر. جواب سوالتون "بله" هست. به محیط گرافیکی در متلب میگن GUIDE که به اصطلاح میشه همون واسط گرافیکی. در محیط متلب و در قسمت command windows متلب کلمه guide رو تایپ و اجرا کنید تا وارد محیط گرافیکی متلب بشید. در پُست بعدی آموزش ویدئویی این کار را میزاریم خدممتون🌹🌺
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
Solve_BVP_Equation_Shooting_Rung_Kutta_Method.rar
2.9 MB
🔘کد حل عددی معادلات دیفرانسیل معمولی با شرایط مرزی(BVP) به روش شوتینگ-رانگ کوتا
👈به همراه فایل توضیحات و حل مثال نمونه معادله بلازیوس
✍تشکر ویژه از جناب آقای دکتر صدیقیرنانی🙏🙏🙏
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
👈به همراه فایل توضیحات و حل مثال نمونه معادله بلازیوس
✍تشکر ویژه از جناب آقای دکتر صدیقیرنانی🙏🙏🙏
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔘برنامه حل معادله درجه دوم در متلب
clc
clear all;
% This program solves equation
a=input('Enter a (ax^2_bx+c) : ');
b=input('Enter b (ax^2_bx+c) : ');
c=input('Enter c (ax^2_bx+c) : ');
if a==0 && b~=0
x=-c/b;
answer=[x,x];
elseif a~=0
delta=b^2-4*a*c;
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
answer=[x1,x2];
elseif a==0 && b==0
disp ('this is not an equation')
answer =[];
end
answer
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
clc
clear all;
% This program solves equation
a=input('Enter a (ax^2_bx+c) : ');
b=input('Enter b (ax^2_bx+c) : ');
c=input('Enter c (ax^2_bx+c) : ');
if a==0 && b~=0
x=-c/b;
answer=[x,x];
elseif a~=0
delta=b^2-4*a*c;
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
answer=[x1,x2];
elseif a==0 && b==0
disp ('this is not an equation')
answer =[];
end
answer
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔘برنامه تبدیل اعداد مختلط به صورت قطبی
% Evaluation of Z
% the complex numbers are entered
Z1 = 3+4*j;
Z2 = 5+2*j;
theta = (60/180)*pi; % angle in radians
Z3 = 2*exp(j*theta);
Z4 = 3+6*j;
Z5 = 1+2*j;
% Z_rect is complex number Z in rectangular form
disp('Z in rectangular form is'); % displays text inside brackets
Z_rect = Z1*Z2*Z3/(Z4+Z5);
Z_rect
Z_mag = abs (Z_rect); % magnitude of Z
Z_angle = angle(Z_rect)*(180/pi); % Angle in degrees
disp('complex number Z in polar form, mag, phase'); % displays text
%inside brackets
Z_polar = [Z_mag, Z_angle]
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
% Evaluation of Z
% the complex numbers are entered
Z1 = 3+4*j;
Z2 = 5+2*j;
theta = (60/180)*pi; % angle in radians
Z3 = 2*exp(j*theta);
Z4 = 3+6*j;
Z5 = 1+2*j;
% Z_rect is complex number Z in rectangular form
disp('Z in rectangular form is'); % displays text inside brackets
Z_rect = Z1*Z2*Z3/(Z4+Z5);
Z_rect
Z_mag = abs (Z_rect); % magnitude of Z
Z_angle = angle(Z_rect)*(180/pi); % Angle in degrees
disp('complex number Z in polar form, mag, phase'); % displays text
%inside brackets
Z_polar = [Z_mag, Z_angle]
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🌹با سلام و عرض قبولی طاعات و عبادات🌹
✍جهت همفکری بیشتر و نتیجه گیری بیشتر، از اعضاء کانال و سوپر گروه تخصصی متلب تقاضا میشود دوستان علمی و دانشگاهی خود را به این گروه دعوت کنند و یا اینکه لینک گروه را برای گروهها و کانالهای علمی دانشگاه موسسات علمی و تحقیقاتی خودشون ارسال کنن تا با حضور بیشتر دانشجویان و اساتید محترم شاهد هم افزائی بیشتری در گروه باشیم و کیفیت و رضایتمندی بیشتری نیز از حضور در این گروه علمی حاصل شود.
لینک گروه تخصصی متلب در بالای همین کانال پین(سنجاق) شده است. لطفاً دوستان خود را فرا بخوانید🙏🙏🌹🌺
با سپاس فراوان، ادمین
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
✍جهت همفکری بیشتر و نتیجه گیری بیشتر، از اعضاء کانال و سوپر گروه تخصصی متلب تقاضا میشود دوستان علمی و دانشگاهی خود را به این گروه دعوت کنند و یا اینکه لینک گروه را برای گروهها و کانالهای علمی دانشگاه موسسات علمی و تحقیقاتی خودشون ارسال کنن تا با حضور بیشتر دانشجویان و اساتید محترم شاهد هم افزائی بیشتری در گروه باشیم و کیفیت و رضایتمندی بیشتری نیز از حضور در این گروه علمی حاصل شود.
لینک گروه تخصصی متلب در بالای همین کانال پین(سنجاق) شده است. لطفاً دوستان خود را فرا بخوانید🙏🙏🌹🌺
با سپاس فراوان، ادمین
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
Camera.rar
1.5 MB
🔘آموزش فارسی کار با دوربین در متلب
🔘camera in MATLAB
👈فایل PDF
#camera
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔘camera in MATLAB
👈فایل PDF
#camera
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔘اندازهگیری فاصله با لیزر و وبکم در متلب
🔺با کمک این برنامه که توی امفایل مینویسید چند تا فاصله رو اندازه بگیرید.از جسم بعد با فاصله بین لیزر و دوربین تو فرمولها قرار بدید.
🔺 فاصله بین لیزر و بالای تصویر همون اندازهای هست که با نزدیک و دور شدن جسم کم و زیاد میشه.
🔺این برنامه فقط یک بار تصویر وبکم رو میخونه و دو تا چیز رو به شما میده(مختصات لیزر روی تصویر). اگر خواستید همیشه تصویر خونده بشه میتونید برنامه رو توی یه حلقه قرار بدید. پس من همه برنامه رو ننوشتم، چرا؟ چون نوع دوربین و فاصله دوربین با لیزر متفاوت هست.
%design by iman payoon
clc
clear all
utilpath = fullfile(matlabroot, 'toolbox', 'imaq', 'imaqdemos', ...
'html', 'applications', 'laserTracking');
addpath(utilpath);
vid = videoinput('winvideo', 1, 'RGB24_320x240');
set(vid, 'FramesPerTrigger', 1);
set(vid, 'TriggerRepeat', Inf);
triggerconfig(vid,'manual')
%rr=imread('kh.jpg');
%design by iman payoon
hTarget = plot(0, 0, 'yo');
preview(vid)
start(vid)
set(hTarget, 'Xdata', 0, 'Ydata', 0);
sound(1), pause(2)
sound(1), trigger(vid);
acqResults{1} = getdata(vid, 1);
[xCalib(1), yCalib(1), laserSights] = util_findlaser(acqResults{1});
xCalib(1)
yCalib(1)
spy(laserSights)
calibFig = figure;
util_plotpos(acqResults{1}, xCalib(1), yCalib(1));
stop(vid)
delete(vid)
clear vid
%design by iman payoon
✔️منبع: دانشگاه مجازی موج برتر
#camera
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔺با کمک این برنامه که توی امفایل مینویسید چند تا فاصله رو اندازه بگیرید.از جسم بعد با فاصله بین لیزر و دوربین تو فرمولها قرار بدید.
🔺 فاصله بین لیزر و بالای تصویر همون اندازهای هست که با نزدیک و دور شدن جسم کم و زیاد میشه.
🔺این برنامه فقط یک بار تصویر وبکم رو میخونه و دو تا چیز رو به شما میده(مختصات لیزر روی تصویر). اگر خواستید همیشه تصویر خونده بشه میتونید برنامه رو توی یه حلقه قرار بدید. پس من همه برنامه رو ننوشتم، چرا؟ چون نوع دوربین و فاصله دوربین با لیزر متفاوت هست.
%design by iman payoon
clc
clear all
utilpath = fullfile(matlabroot, 'toolbox', 'imaq', 'imaqdemos', ...
'html', 'applications', 'laserTracking');
addpath(utilpath);
vid = videoinput('winvideo', 1, 'RGB24_320x240');
set(vid, 'FramesPerTrigger', 1);
set(vid, 'TriggerRepeat', Inf);
triggerconfig(vid,'manual')
%rr=imread('kh.jpg');
%design by iman payoon
hTarget = plot(0, 0, 'yo');
preview(vid)
start(vid)
set(hTarget, 'Xdata', 0, 'Ydata', 0);
sound(1), pause(2)
sound(1), trigger(vid);
acqResults{1} = getdata(vid, 1);
[xCalib(1), yCalib(1), laserSights] = util_findlaser(acqResults{1});
xCalib(1)
yCalib(1)
spy(laserSights)
calibFig = figure;
util_plotpos(acqResults{1}, xCalib(1), yCalib(1));
stop(vid)
delete(vid)
clear vid
%design by iman payoon
✔️منبع: دانشگاه مجازی موج برتر
#camera
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔘ایجاد ویدئو از تصاویر متوالی در متلب
🔺فرض کنیم یه تعداد عکس یا تصویر داریم، میخوایم اینا رو توی یه فایل ویدئویی پشت سر هم نمایش بدیم. من اینجا از یکی از مثالهای خود متلب استفاده میکنم، عنوانش اینه:
Create a New Video with the Image Sequence.
دقیقا همون نیست، یه خورده شیوه نامگذاری رو عوض میکنم که نیاز به sort کردن پیدا نکنیم. فرمت ویدئو رو هم mp4 قرار میدم تا تفاوت حجمش با avi مشخص بشه، چون توضیحاتش رو هم نخوندم احتمالا متفاوت توضیح میدم.
🔺اول از همه ما نیاز داریم که یه سری تصویر متوالی داشته باشیم، واسه اینکار میتونیم از یه ویدئو این تصاویر رو استخراج کنیم و در آخر دوباره این تصاویر استخراج شده رو به یه ویدئو تبدیل کنیم. متلب چند تا ویدئو داره، مثلا rhinos.avi که توی تولباکس Image Processing استفاده میشه، اما اینجا از shuttle.avi استفاده میکنم، که توی مثال متلب هم استفاده شده. اگه خواستین این ویدئو رو مشاهده کنین، اما نه با متلب با پلیر خودتون میتونین این دستور رو توی Command Window تایپ کنین:
کد:
winopen('shuttle.avi')
دستور winopen فایل مورد نظرتون رو باز میکنه، اما نه داخل متلب با برنامهای که به ویندوزتون برای فایلهایی با اون پسوند در نظر گرفته، مثل اینکه روی فایل دابل کلیک کنین.
🖼تصویر shuttle(در پست بعدی میزاریم که ببینید)
🔺خب الان میخوایم هر فریم ویدئو رو به صورت یه تصویر ذخیره کنیم، از دستور VideoReader استفاده می کنیم، این دستور فایلمون رو نمی خونه بلکه فقط آدرس و مشخصاتش رو نگه میداره، اینجوری RAMمون هم بی دلیل اشغال نمیشه اگه فایل ویدئویی حجیم باشه. خط بعدش نگاه میکنیم این فایلمون چند فریم داره، بعد هم یه فولدر درست میکنیم که تصویرهای خروجی رو داخل اون بریزه.
کد:
clear;
myvideo = VideoReader('shuttle.avi'); framesNum = myvideo.NumberOfFrames;
if ~exist('ShuttleImages','dir') mkdir('ShuttleImages');
end
for i = 1:framesNum
myframe = read(myvideo,i);
namewithPath = sprintf('ShuttleImages\\%03d.png',i); imwrite(myframe,namewithPath,'png'); end
🔺در ادامش روی فریمهای ویدئومون یه حلقه میذاریم که فریم به فریم بخونه و ذخیره کنه. یه توضیحی هم درمورد sprintf بدم: به علامت \ برای نمایش آدرس داخل این دستور باید از \\ استفاده کنیم. برای عددهای صحیح که از d% استفاده میشه، پس اون ۰۳ چیه که من گذاشتم، ۰۳ در واقع مشخص میکنه عددم همیشه از سه تا کاراکتر تشکیل بشه، برای اعدادی که کمتر از سه رقم دارن به تعداد مورد نیاز سمت راستش صفر قرار بده. با این روش دیگه نیاز به مرتب کردن موقع خوندن نداریم، چون در اون صورت اعداد یه رقمی، دو رقمی و… ترتیبشون بهم میخوره (مثلا ۱ و ۱۱ پشت سر هم قرار میگیرن، چون هر دو با یک شروع میشن).
فرمت فایلها رو هم من png گذاشتم تا فشرده سازی نداشته باشیم، با همون کیفیت اصلی ذخیره بشن. خب تصاویر توی فولدر ShuttleImages ریخته میشه:
🖼تصاویر استخراج شده از ویدئو(در پست بعدی میزاریم که ببینید)
🔺میرسیم به بخش اصلی یعنی میخوایم این تصاویری که استخراج کردیم رو به صورت یه ویدئوی جدید در بیاریم. اسم تصاویر مورد نظرمون رو با دستور dir میخونیم، دیگه نگرانی بابت ترتیبشون نداریم چون قبلا در موردش فکر کرده بودیم. میتونیم تمام تصاویر رو اول بخونیم بعد ازشون استفاده کنیم، ولی خب نمیخوایم بی دلیل حافظه RAM رو اشغال کنیم، دونه دونه میخونیم و استفاده میکنیم. برای این کار هم یه چنین کدی نیاز داریم:
کد:
clear;
ImagesList =dir('ShuttleImages\*.png'); MyNewVideo = VideoWriter('MyNewVideo.mp4','MPEG-4');
MyNewVideo.FrameRate = 10; open(MyNewVideo)
for i = 1:numel(ImagesList)
myImage = imread(fullfile('ShuttleImages',ImagesList(i).name)); writeVideo(MyNewVideo,myImage)
end
close(MyNewVideo);
🔺بعد از اینکه تمام اسامی تصاویرمون رو توی ImagesList ریختیم، خب یه فایل خروجی برای ویدئومون نیاز داریم، من mp4 انتخاب کردم، واسه mp4 باید نحوه ی فشردهسازی ‘MPEG-4’ هم مشخص بشه، در غیر این صورت بازم avi ذخیره میکنه. واسه avi اون خط رو باید این شکلی بنویسیم:
کد:
MyNewVideo = VideoWriter('MyNewVideo.avi');
🔺البته FrameRate رو هم ۱۰ گذاشتم که واسه ویدئوی اصلی ۳۰ بود. معمولا هم همون ۳۰ استفاده میشه. واسه همین زمان ویدئوی من ۳ برابر شده و خیلی نسبت به ویدئوی اصلی آهسته تر هستش.
🔺در آخر هم با winopen نمایشش میدیم ببینیم چی درست شده، البته اگه نام یا فرمت رو تغییر دادین باید این خط رو هم اصلاح کنیم:
کد:
winopen('MyNewVideo.mp4')
✔️منبع: noandishaan.com
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔸تصاویر مرتبط با این مطلب👇👇👇
🔺فرض کنیم یه تعداد عکس یا تصویر داریم، میخوایم اینا رو توی یه فایل ویدئویی پشت سر هم نمایش بدیم. من اینجا از یکی از مثالهای خود متلب استفاده میکنم، عنوانش اینه:
Create a New Video with the Image Sequence.
دقیقا همون نیست، یه خورده شیوه نامگذاری رو عوض میکنم که نیاز به sort کردن پیدا نکنیم. فرمت ویدئو رو هم mp4 قرار میدم تا تفاوت حجمش با avi مشخص بشه، چون توضیحاتش رو هم نخوندم احتمالا متفاوت توضیح میدم.
🔺اول از همه ما نیاز داریم که یه سری تصویر متوالی داشته باشیم، واسه اینکار میتونیم از یه ویدئو این تصاویر رو استخراج کنیم و در آخر دوباره این تصاویر استخراج شده رو به یه ویدئو تبدیل کنیم. متلب چند تا ویدئو داره، مثلا rhinos.avi که توی تولباکس Image Processing استفاده میشه، اما اینجا از shuttle.avi استفاده میکنم، که توی مثال متلب هم استفاده شده. اگه خواستین این ویدئو رو مشاهده کنین، اما نه با متلب با پلیر خودتون میتونین این دستور رو توی Command Window تایپ کنین:
کد:
winopen('shuttle.avi')
دستور winopen فایل مورد نظرتون رو باز میکنه، اما نه داخل متلب با برنامهای که به ویندوزتون برای فایلهایی با اون پسوند در نظر گرفته، مثل اینکه روی فایل دابل کلیک کنین.
🖼تصویر shuttle(در پست بعدی میزاریم که ببینید)
🔺خب الان میخوایم هر فریم ویدئو رو به صورت یه تصویر ذخیره کنیم، از دستور VideoReader استفاده می کنیم، این دستور فایلمون رو نمی خونه بلکه فقط آدرس و مشخصاتش رو نگه میداره، اینجوری RAMمون هم بی دلیل اشغال نمیشه اگه فایل ویدئویی حجیم باشه. خط بعدش نگاه میکنیم این فایلمون چند فریم داره، بعد هم یه فولدر درست میکنیم که تصویرهای خروجی رو داخل اون بریزه.
کد:
clear;
myvideo = VideoReader('shuttle.avi'); framesNum = myvideo.NumberOfFrames;
if ~exist('ShuttleImages','dir') mkdir('ShuttleImages');
end
for i = 1:framesNum
myframe = read(myvideo,i);
namewithPath = sprintf('ShuttleImages\\%03d.png',i); imwrite(myframe,namewithPath,'png'); end
🔺در ادامش روی فریمهای ویدئومون یه حلقه میذاریم که فریم به فریم بخونه و ذخیره کنه. یه توضیحی هم درمورد sprintf بدم: به علامت \ برای نمایش آدرس داخل این دستور باید از \\ استفاده کنیم. برای عددهای صحیح که از d% استفاده میشه، پس اون ۰۳ چیه که من گذاشتم، ۰۳ در واقع مشخص میکنه عددم همیشه از سه تا کاراکتر تشکیل بشه، برای اعدادی که کمتر از سه رقم دارن به تعداد مورد نیاز سمت راستش صفر قرار بده. با این روش دیگه نیاز به مرتب کردن موقع خوندن نداریم، چون در اون صورت اعداد یه رقمی، دو رقمی و… ترتیبشون بهم میخوره (مثلا ۱ و ۱۱ پشت سر هم قرار میگیرن، چون هر دو با یک شروع میشن).
فرمت فایلها رو هم من png گذاشتم تا فشرده سازی نداشته باشیم، با همون کیفیت اصلی ذخیره بشن. خب تصاویر توی فولدر ShuttleImages ریخته میشه:
🖼تصاویر استخراج شده از ویدئو(در پست بعدی میزاریم که ببینید)
🔺میرسیم به بخش اصلی یعنی میخوایم این تصاویری که استخراج کردیم رو به صورت یه ویدئوی جدید در بیاریم. اسم تصاویر مورد نظرمون رو با دستور dir میخونیم، دیگه نگرانی بابت ترتیبشون نداریم چون قبلا در موردش فکر کرده بودیم. میتونیم تمام تصاویر رو اول بخونیم بعد ازشون استفاده کنیم، ولی خب نمیخوایم بی دلیل حافظه RAM رو اشغال کنیم، دونه دونه میخونیم و استفاده میکنیم. برای این کار هم یه چنین کدی نیاز داریم:
کد:
clear;
ImagesList =dir('ShuttleImages\*.png'); MyNewVideo = VideoWriter('MyNewVideo.mp4','MPEG-4');
MyNewVideo.FrameRate = 10; open(MyNewVideo)
for i = 1:numel(ImagesList)
myImage = imread(fullfile('ShuttleImages',ImagesList(i).name)); writeVideo(MyNewVideo,myImage)
end
close(MyNewVideo);
🔺بعد از اینکه تمام اسامی تصاویرمون رو توی ImagesList ریختیم، خب یه فایل خروجی برای ویدئومون نیاز داریم، من mp4 انتخاب کردم، واسه mp4 باید نحوه ی فشردهسازی ‘MPEG-4’ هم مشخص بشه، در غیر این صورت بازم avi ذخیره میکنه. واسه avi اون خط رو باید این شکلی بنویسیم:
کد:
MyNewVideo = VideoWriter('MyNewVideo.avi');
🔺البته FrameRate رو هم ۱۰ گذاشتم که واسه ویدئوی اصلی ۳۰ بود. معمولا هم همون ۳۰ استفاده میشه. واسه همین زمان ویدئوی من ۳ برابر شده و خیلی نسبت به ویدئوی اصلی آهسته تر هستش.
🔺در آخر هم با winopen نمایشش میدیم ببینیم چی درست شده، البته اگه نام یا فرمت رو تغییر دادین باید این خط رو هم اصلاح کنیم:
کد:
winopen('MyNewVideo.mp4')
✔️منبع: noandishaan.com
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔸تصاویر مرتبط با این مطلب👇👇👇
🔘تصویر shuttle 👆👆👆
✔️مرتبط با پُست قبلی(ایجاد ویدئو از تصاویر متوالی در متلب)
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
✔️مرتبط با پُست قبلی(ایجاد ویدئو از تصاویر متوالی در متلب)
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔘تصاویر استخراج شده از ویدئو👆👆👆
✔️مرتبط با پُست قبلی(ایجاد ویدئو از تصاویر متوالی در متلب)
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
✔️مرتبط با پُست قبلی(ایجاد ویدئو از تصاویر متوالی در متلب)
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
#مخصوص_دانشجویان_تحصیلات_تکمیلی
#سوال_کاربران
🔵 سوال1: از چه سایتی میتونم تمام مقالات پولی رو به رایگان و بدون هیچ محدودیتی و به سرعت دانلود کنم؟
✅ جواب: سایت روسی زیر این امکان رو برای تمامی محققین جهان فراهم کرده
www.sci-hub.cc
🔵 سوال2: از چه سایتهایی میتونم به متن کامل پایان نامه ها دسترسی پیدا کنم؟
✅ جواب: به سایتهای زیر مراجعه فرمایید
search.proquest.com/dissertations/advanced?accountid=14511
discovery.ucl.ac.uk/
ethos.bl.uk/
www.dart-europe.eu/basic-search.php
www.ndltd.org/resources/find-etds
🔵 سوال3: از کجا میتونم ایمپکت فاکتور یک مجله رو پیدا کنم؟
✅ جواب: برای دسترسی به ضریب تاثیر IF یک مجله می تونید به سایت های معتبری چون SJR , Bioxbio مراجعه کنید
SJR:
www.scimagojr.com
Bioxbio:
www.bioxbio.com
CiteFactor:
www.citefactor.com
🔵 سوال4: چطور میتونم مقاله ام رو قبل از اینکه به ژورنالی بفرستم به لحاظ پلاجیاریزم چک کنم تا مطمئن بشم جملات مقاله ی من با هیچ یک از جملات سایر مقالات مشابهتی نداره؟
✅ جواب: از سایتهای زیر جهت بررسی جملات مقاله قبل از سابمیت استفاده نمایید
www.turnitin.com
www.ithenticate.com
www.writecheck.com
🔵 سوال5: من مقاله ام رو نوشتم اما نمیدونم به کدوم ژورنال بفرستم؟
✅ جواب: در سایت های زیر می توانید با وارد کردن عنوان مقاله، چکیده و کلید واژه ها ژورنال های مرتبط و نزدیک به موضوع خود را پیدا کنید.
http://journalfinder.elsevier.com/#results
https://www.springer.com/gp/authors-editors/journal-author/journal-author-helpdesk/preparation/1276
https://www.edanzediting.com/jou
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
•┄✺ೋ🌹✺┄•
#سوال_کاربران
🔵 سوال1: از چه سایتی میتونم تمام مقالات پولی رو به رایگان و بدون هیچ محدودیتی و به سرعت دانلود کنم؟
✅ جواب: سایت روسی زیر این امکان رو برای تمامی محققین جهان فراهم کرده
www.sci-hub.cc
🔵 سوال2: از چه سایتهایی میتونم به متن کامل پایان نامه ها دسترسی پیدا کنم؟
✅ جواب: به سایتهای زیر مراجعه فرمایید
search.proquest.com/dissertations/advanced?accountid=14511
discovery.ucl.ac.uk/
ethos.bl.uk/
www.dart-europe.eu/basic-search.php
www.ndltd.org/resources/find-etds
🔵 سوال3: از کجا میتونم ایمپکت فاکتور یک مجله رو پیدا کنم؟
✅ جواب: برای دسترسی به ضریب تاثیر IF یک مجله می تونید به سایت های معتبری چون SJR , Bioxbio مراجعه کنید
SJR:
www.scimagojr.com
Bioxbio:
www.bioxbio.com
CiteFactor:
www.citefactor.com
🔵 سوال4: چطور میتونم مقاله ام رو قبل از اینکه به ژورنالی بفرستم به لحاظ پلاجیاریزم چک کنم تا مطمئن بشم جملات مقاله ی من با هیچ یک از جملات سایر مقالات مشابهتی نداره؟
✅ جواب: از سایتهای زیر جهت بررسی جملات مقاله قبل از سابمیت استفاده نمایید
www.turnitin.com
www.ithenticate.com
www.writecheck.com
🔵 سوال5: من مقاله ام رو نوشتم اما نمیدونم به کدوم ژورنال بفرستم؟
✅ جواب: در سایت های زیر می توانید با وارد کردن عنوان مقاله، چکیده و کلید واژه ها ژورنال های مرتبط و نزدیک به موضوع خود را پیدا کنید.
http://journalfinder.elsevier.com/#results
https://www.springer.com/gp/authors-editors/journal-author/journal-author-helpdesk/preparation/1276
https://www.edanzediting.com/jou
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
•┄✺ೋ🌹✺┄•
discovery.ucl.ac.uk
UCL Discovery
-
UCL Discovery
-
UCL Discovery
UCL Discovery is UCL's open access repository, showcasing and providing access to UCL research outputs from all UCL disciplines.
This media is not supported in your browser
VIEW IN TELEGRAM
🔘فیلم آموزشی نحوه نصب وبکم برای شروع کار با آن در متلب
✔️برای شروع کار با وبکم در متلب، باید پَک وبکم را مطابق با این فیلم آموزشی نصب کرد.
#camera
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
✔️برای شروع کار با وبکم در متلب، باید پَک وبکم را مطابق با این فیلم آموزشی نصب کرد.
#camera
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔘دستور waitbar در متلب
🔸فرض کنید در برنامه متلبی که مینویسیم بخشی از برنامه دارای محاسبات زمان بر میباشد و بنابراین باید به نحوی به کاربر اعلام کنیم که تا زمان پایان محاسبات صبر کند تا بداند که برنامه دچار توقف یا مشکل نشده است و همچنین باید میزان پیشرفت انجام محاسبات را هم به کاربر نمایش دهیم تا بداند که حدودا چه مدت تا پایان محاسبات، زمان باقی مانده است.
برای این منظور میتوانیم از دستور waitbar در متلب استفاده کنیم که یک پنجره جدید را باز کرده و به کاربر، پیامی دلخواه را نمایش میدهد (مثلا درخواست صبر کردن از کاربر) و همچنین میزان پیشرفت محاسبات را نیز به کاربر نشان میدهد:
💯👈قطعه کد زیر را در mفایل بنویسید و آنرا اجرا کنید.
function basicwaitbar
f = waitbar(0,'Please wait...');
pause(.5)
waitbar(.33,f,'Loading your data');
pause(1)
waitbar(.67,f,'Processing your data');
pause(1)
waitbar(1,f,'Finishing');
pause(1)
close(f)
end
✅برای دریافت توضیحات بیشتر به همراه کد متلبِ waitbar، در هلپ متلب عبارت waitbar را جستجو کنید.
✅تصویر زیر نمونهای از waitbar در متلب است.
✔️منبع: هلپِ متلب
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔸فرض کنید در برنامه متلبی که مینویسیم بخشی از برنامه دارای محاسبات زمان بر میباشد و بنابراین باید به نحوی به کاربر اعلام کنیم که تا زمان پایان محاسبات صبر کند تا بداند که برنامه دچار توقف یا مشکل نشده است و همچنین باید میزان پیشرفت انجام محاسبات را هم به کاربر نمایش دهیم تا بداند که حدودا چه مدت تا پایان محاسبات، زمان باقی مانده است.
برای این منظور میتوانیم از دستور waitbar در متلب استفاده کنیم که یک پنجره جدید را باز کرده و به کاربر، پیامی دلخواه را نمایش میدهد (مثلا درخواست صبر کردن از کاربر) و همچنین میزان پیشرفت محاسبات را نیز به کاربر نشان میدهد:
💯👈قطعه کد زیر را در mفایل بنویسید و آنرا اجرا کنید.
function basicwaitbar
f = waitbar(0,'Please wait...');
pause(.5)
waitbar(.33,f,'Loading your data');
pause(1)
waitbar(.67,f,'Processing your data');
pause(1)
waitbar(1,f,'Finishing');
pause(1)
close(f)
end
✅برای دریافت توضیحات بیشتر به همراه کد متلبِ waitbar، در هلپ متلب عبارت waitbar را جستجو کنید.
✅تصویر زیر نمونهای از waitbar در متلب است.
✔️منبع: هلپِ متلب
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
🔸تصویر waitbar در متلب
👈لطفاً توضیحات مندرج در پُست بالا مطالعه شود.
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
👈لطفاً توضیحات مندرج در پُست بالا مطالعه شود.
کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication