در صورتي كه بخواهيد در مورد دستور و يا تابع خاصي اطلاعاتي به دست بياوريد مي توانيد در پنجره MATLAB كلمه help و پس از آن نام دستور يا تابع مورد نظر را بنویسید:
» help magic
MAGIC Magic square.
MAGIC(N) is an N-by-N matrix constructed from the integers
1 through N^2 with equal row, column, and diagonal sums.
Produces valid magic squares for N = 1,3,4,5,...
روش ديگر استفاده از help بكار
بردن دستور helpwin است. اين دستور پنجره كمكی را باز مي كند و اجازه مي
دهد تا توضيحات مورد نياز را در پنجره جداگانه اي بدست آوريد. توضيحات داده
شده در اين پنجره همانهايي هستند كه دستور help ارائه مي نمايد.
لازم
به توضيح است كه نام دستورات و توابع در help با حروف بزرگ آورده مي شوند
در حاليكه MATLAB نسبت به بزرگ و كوچك بودن حروف حساس است و هنگام استفاده
از اين دستورات و توابع بايد آنها را با حروف كوچك بكار برد.
برچسبها: پایگاه فارسی نرم افزار MATLAB, متلب, به انگلیسی, MATLAB
وقتي دستور plot x,y را اجرا مي كنيد متلب مقدارهاي درايه هاي بردار x را روي محور افقي و مقدارهاي بردار y را روي محور عمودي قرار مي دهد. سپس مختصات هر نقطه از نمودار به اين شكل تعيين مي شود كه درايه ها نظير به نظير به عنوان مختصات (X و Y) نقاط در نظر گرفته مي شوند. يعني نقطه m ام با مختصاتي به شكل X مساوي "درايه m ام بردار x " و Y مساوي "درايه m ام بردار y "رسم خواهد شد. مثلا اگر 5 امين درايه بردار x برابر 3 و 5امين درايه y برابر 10.5 باشد نقطه اي در مختصات X=3 و Y=10.5 رسم خواهد شد. در دستور plot همه اين نقاط به هم متصل مي شود و در دستور stem به صورت ميله اي گسسته رسم ميشوند و نهايتا نمودار نمايش داده مي شود. به بیان فنی تر هر جفت از درایه های دو بردار مذکور یک نمونه از سیگنال را می سازند. براي مثال چند نمونه از سيگنال هاي معروف را رسم ميكنيم.
سيگنال ضربه واحد زمان-گسسته
همانطور که میدانید این سیگنال خیلی ساده است و فقط به ازای n=0 مقداری برابر یک و در بقیه نقاط مقدار صفر دارد. يك بردار به نام n را به عنوان ورودي (محور افقی) و برداري به نام y را به عنوان خروجي (محور قائم) ايجاد ميكنيم. براي ایجاد n كافي است يك بردار از اعداد صحيح مثلا از 10- تا 10 با گام (فاصله) ١ بسازيم (مقدار اولین درایه و فاصله مقادیر و مقدار آخرین درایه به ترتیب با علامت دونقطه مشخص میشوند). از آن جا كه فقط يك نمونه در بردار y (به ازاي n=0) داريم ابتدا y را با درايه هاي صفر ميسازيم به طوری که اندازه (تعداد درایه) آن با n یکسان باشد (این کار را با دستور zeros انجام میدهیم). بعد درايه وسط y را مساوي ١ قرار مي دهيم (زیرا در بردار n درایه با مقدار صفر در وسط قرار میگیرد بنابراین درایه متناظر آن در y هم در وسط است) . در پايان با دستور stem سيگنال را رسم ميكنيم. برای اجرای این مثال کد زیر را در متلب وارد کنید:
>> y=zeros(1,21) ;
>> y(1,11) = 1 ;
>> stem(n,y)
سیگنال سینوسی پیوسته
بردار ورودی را با نام t ایجاد میکنیم. در اصل این بردار باید یک بازه پیوسته باشد اما چون در متلب باید یک بردار با درایه های متناهی داشته باشیم برداری با تعداد زیاد درایه ایجاد میکنیم تا به حالت پیوسته نزدیک باشد. این بردار را با دستور linspace ایجاد میکنیم (در این جا 500 درایه برایش در نظر میگیریم. کمترین مقدار آن را 50- و بیشترین را 50 تعیین میکنیم تا نمودار در این بازه رسم شود). بردار خروجی به راحتی با تابع sin ایجاد می شود (کافی است t را به عنوان آرگمون به آن بدهیم). در آخر با plot نمودار را رسم میکنیم.
>> y = sin(2*t) ;
>> plot(x,y)
سیگنال پله واحد زمان-پیوسته
این سیگنال را هم در همان بازه 50- تا 50 رسم خواهیم کرد. بنابراین بردار ورودی می تواند همان بردار ورودی مثال قبل باشد. بردار y را به عنوان خروجی با درایه های صفر ایجاد میکنیم. سپس همه درایه های بعد از درایه وسط (که متناظر با t=0 است) را مساوی 1 قرار می دهیم. توجه کنید این کار با یک دستور (با استفاده از علامت دو نقطه برای تعیین بازه) امکان پذیر است.
>> y = zeros(1,500) ;
>> y(251:500) = 1 ;
>> plot(t,y) ;
نمودارهایی که با کدهای گفته شده رسم میشود در ساده ترین شکل ممکن است. دستورات مختلفی در متلب وجود دارد که توسط آن ها میتوانید نمودارهای خود را زیباتر و دقیق تر کنید (مثلا با تغییر مقیاس و تغییر رنگ ها). یادگیری آن ها را به شما واگذار میکنم.
برچسبها: matlab, matlab 2011, Maze به زبان matlab, Maze به زبان متلب
لینک دانلود مستقیم از سرور کیو پروژه
برچسبها: matlab, matlab 2011, Maze به زبان matlab, Maze به زبان متلب
Subplot رسم چندین رسم در یک صفحه
بوسیله این دستور می توانیم صفحه ترسیم را به چندین قســـمت
تقسیم کنیم.
این دستور را بدین گونه استفاده می کنیم.
Subplot(m,n,p)
با این دستور صفحه به m سطر و n ستون تقسیم میشودوقسمت
pام را آدرس دهی می کند.
که شماره قسمت از ردیف اول از بالا شروع می شود.
به مثال زیر توجه کنید:
X=-pi:pi/10:pi;
Y=sin(x);z=cos(x);t=sin(x).*cos(x);
Subplot(2,2,1);plot(x,y,'r');title('sin');
Subplot(2,2,2);plot(x,y,'y');title('cos');
Subplot(2,2,3);plot(x,t');title('sin*cos');
Subplot(2,2,4);plot(x,y+z);title('sin+cos');
لطفاً به نحوه کاربردsubplot و نحوه تنظیم ترسیمات توجه فرمایید.
ترسیمات سه بعدی و سطوح
دیدیم که دستور plot ابزاری برای رسم نمودارهای دوبعدی اســـت
ولی مواقعی که می خواهیم نمودارهای سه بعدی را رسم نماییم
چه کار باید بکنیم.
دستورplot3 این کار را انجام می دهد.
Plot3 رسم سه بعدی
این دستور تابع را در سه بعد رسم می کند.
به این مثال توجه فرمایید:
>>t=-3*pi:pi/30:3*pi;
>>x=sin(t);
>>y=cos(t);
>>z=t:
>>plot3(x,y,z);

می بینید که نحوه ترسیم مانند دستور plot می باشد.
البته می توانیم بوسیله دستورplot3، سطوح و لایه ها را ترســـیم
کنیم.
رسم سطح و لایه
رسم لایه و سطح با نمودار یکسان نمی باشد، نمودار یک منحنی
و...می باشد(در کل یک خط) ولی سطح اینگونه نمی باشد و یــک
فضای پیوسته(لایه) می باشد.
خودمان می توانیم هر سطحی که دلمان می خواهد بسازیم ولـی
برای راحتی کار، یک تابع سطح، در خد متلب قرار داده شده است
که با دستورpeaks می توان به این سطح دست یافت.
Peaks سطح نمونه
گفتیم که یک سطح پیش فرضی در متلب قرار داده شـتده که با این
دستور می توان به این سطح دست یافت.
[x,y,z]=peaks(n)
N
دقت ترسیم را نشـــــان می دهـــــد(بازه مربوطه به عدد وارد شده
تقسیم می شود و چقدر n بیشتر باشد قطعات کوچکتر و هــــمین
طور شکستگی نرم تر و رسم دقیقتر خواهد بود)
در صورتی که می خواهید یم سطح بسازید، باید فاصله همه نقــاط
موجود بر روی سطح یکسان و به طور مساوی پخش شده باشــد و
البته x y z را نیز بر حسب توابع بیان می کنیم.
برای ساختن سطح باید شبکه ای کامل و همگن ساخته شــــود(
منظور از شبکه خطوط، خطوط عمود بر هـــم است که محل تقاطع
مکان نقاط سطح را نشان دهد).
در متلب شبکه را با کمک دستور meshgrid می سازیم.
برچسبها: چندجمله ای در متلب, دانلود کتب مرتبط با متلب, MATLAB, دانلود
گاهی نیاز است برخی اعداد اعشاری را بنا به دلایلی گرد کنیم. متلب چند تابع مخصوص این کار رو داره که براتون میگم:
1. fix(x)
دستور fix قسمت اعشاری عدد x را حذف می کند.
fix(-2.5) = -2
fix(1.05) = 1
2. round(x)
دستور round عدد x را به نزدیکترین عدد صحیح به خودش گرد می کند.
round(5.7) = 6
round(5.5) = 6
round(-3.8) = -4
round(-5.5) = -6
3. ceil(x)
دستور ceil عدد x را به کوچکترین عدد صحیح بزرگتر یا مساوی x گرد می کند.
ceil(-3.8) = -3
اعداد صحیح بزرگتر از 3.8- عبارتند از : 3- و 2- و 1- و 0 و 1 و . . . که کوچکرترین آنها 3- می باشد پس به 3- گرد می کند.
ceil(4.9) = 5
اعداد صحیح بزرگتر از 4.9 عبارتند از : 5 و 6 و 7 و . . . که کوچکترین آنها 5 می باشد پس به 5 گرد می کند.
4. floor(x)
دستور floor عدد x را به بزرگترین عدد صحیح کوچکتر یا مساوی x گرد می کند.
floor(7.5) = 7
اعداد صحیح کوچکتر یا مساوی 7.5 عبارتند از: 7 و 6 و 5 و . . . پس به بزرگترین آنها یعنی 7 گرد می کند.
و به همین ترتیب:
floor(-3.7) = -4
برچسبها: مراجع آموزش متلب, فیلم آموزشی نرم افزار متلب, MATLAB, به زبان فارسی
فایلی فارسی در مورد فیلتر در matlab
http://uploadkon.ir/uploads/e2e1530c5939ab24778e0ea0104e2cad.pdf
برچسبها: پایگاه فارسی نرم افزار MATLAB, متلب, به انگلیسی, MATLAB
محاسبات مربوط به زمان :
:clockدستور
زمان و تاریخ جاری را در یک آرایه قرار می دهد:
>> t=clock
t =
2007 6 13 23 41 47.562
داده فوق به صورت زیر است:
t=[year month day minute seconds]
:nowدستور
زمان و تاریخ جاری را به صورت عدد تاریخی با دقت دابل یا به صورت ساده یک عدد تاریخی نشان می دهد.
>> format long
>> t=now
t =
7.332069933734722e+005
>> format short g
:dateدستور
تاریخ جاری را می دهد:
>> date
ans =
13-Jun-2007
:weekdayدستور
روزهای هفته را از یک رشته یا عدد تاریخی جدا می کند :
>> [d,w]=weekday('21-dec-1994')
d =
4
w =
Wed
:eomdayدستور
آخرین روز هر ماه را می دهد:
>> eomday(1993,5)
ans =
31
>> eomday(1996,2)
ans =
29
>> eomday(1900,2)
ans =
28
:calendar تابع
با استفاده از این تابع می توانید برای هر ماهی تقویمی ایجاد کنید :
calendar(date)
Jun 2007
S M Tu W Th F S
0 0 0 0 0 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
0 0 0 0 0 0 0
>> calendar(2006,3)
Mar 2006
S M Tu W Th F S
0 0 0 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 0
0 0 0 0 0 0 0
: datestrتابع
عدد تاریخ را به رشته تاریخ تبدیل می کند که شکل کلی آن به صورت زیر است :
datestr(date,dateform)
مراجعه کنید. help برای اطلاعات کافی به
>> t=now
t =
7.3321e+005
>> datestr(t)
ans =
14-Jun-2007 00:22:42
>> datestr(t,12)
ans =
Jun07
>> datestr(t,25)
ans =
07/06/14
اعداد 12 و 25 نوع فرمت مورد نظر را انتخاب کرده اند .
برچسبها: متلب, MATLAB, آرایه سلولی, clockدستور
آیا می دانید آرایه سلولی در مطلب چیست ؟
در حقیقت آرایه سلولی آرایه ای است .که عناصر آن سلول هایی هستند که همانند ظروفی دیگر آرایه های ویژه را در خود جای می دهند .مثلا ممکن است یک سلول از آن حاوی آرایه اعداد حقیقی بوده سلول دیگر حاوی آرایه ای متشکل از رشته ها و دیگر ی حاوی آرایه ای از اعداد مختلط باشد.
.
:MATLABایجاد آرایه سلولی در
روش اول :
content indexing استفاده از عبارت انتسابی است MATLABروش اول ایجاد آرایه سلولی در
در این روش عمل انتساب در هر لحظه تنها به یک سلول امکان پذیر است . به مثال زیر توجه کنید.
>> a{1,1}=[1 2 7];
>> a{1,2}=[];
>> a{2,1}='hello';
>> a{2,2}=1+2*j;
>> a
a =
[1x3 double] []
'hello' [1.0000 + 2.0000i]
عنصر اول یک یردار است عنصر دوم یک ماتریس تهی عنصر سوم یک رشته و عنصر چهارم یک عدد مختلط است .دقت می کنید که مطلب عنصر اول را چون کمی بزرگتر بود به صورت خلاصه نوشت.
آرایه سلولی را به این طریق هم می توانید ایجاد کنید مثال زیر را ببینید:
>> b(1,1)={10};
>> b{1,2}={[]};
>> b(1,3)={1+2j};
>> b(1,4)={'matlabseven.blogfa'};
>> b
b =
[10] {1x1 cell} [1.0000 + 2.0000i] 'matlabseven.blogfa'
داریم:aنکته :اگر بخواهید نوع محتویات سلول را ببینید از علامت پرانتز استفاده می کنیم مثلا برای عنصر اول ماتریس
>> a(1,1)
ans =
[1x3 double]
و اگر بخواهید محتویات ساختار دادهای را ببینید از آکولاد استفاده می کنیم :
>> a{1,1}
ans =
1 2 7
cell indexingروش دوم ایجاد آرایه سلولی:
:cellدستور
می توان یک آرایه با ابعاد دلخواه را ایجاد کرد و بعد اعضا را را مقدار دهی کرد. cellبا دستور
مثال:
>> c=cell(2,2)
c =
[] []
[] []
>> c{1,1}='matlabseven.blogfa'
c =
'matlabseven.blogfa' []
[] []
البته دقت کنید که شما می توانید ماتریس را به شکل زیر هم ایجاد کنید.
مثال:
>> d={[1 2],19,[2;4],3-4j,'abbas',eye(3)}
d =
Columns 1 through 5
[1x2 double] [19] [2x1 double] [3.0000 - 4.0000i] 'abbas'
Column 6
[3x3 double]
:celldispدستور
داریم:dاگر می خواهید کل عناصر آرایه سلولی را به طور کامل ببینید از این دستور استفاده کنید :مثلا برای ماتریس
>> celldisp(b)
b{1} =
۱۰
b{2}{1} =
[]
b{3} =
1.0000 + 2j
b{4} =
matlabseven.blogfa
:cellplotدستور
: استفاده می کنیم cellplotبرای نمایش گرافیکی سطح بالای ساختار آرایه سلولی از تابع
مثال:
>> cellplot(d)
برچسبها: متلب, MATLAB, آرایه سلولی
: matlabآرایه های اسپارس در
دارند؟matlab آیا می دانید آرایه اسپارس چیست ؟و چه فایده ای در
آرایه های اسپارس در حقیقت آرایه هایی هستند که باعث کاهش دادن حجم آرایه ها با عدم در نظر گرفتن مقادیر با مقدار صفر بوجود می آیند .
به مثال زیر توجه کنید :
به وجود می آید .حال فرض کنید ماتریس زیر را ایجاد کرده ایم:eye همانطور که در مبحث ماتریس ها گفتیم یک ماتریس همانی با دستور
>> a=eye(10)
a =
1 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 1
آرایه matlabهمانطور که می بینیم این ماتریس از 90 عنصر صفر تشکیل شده است و فقط 10 عنصر غیر صفر دارد .در اینجا
های اسپارس را تعریف می کند .ماتریس بالا را به صورت اسپارس تعریف می کنیم :
:sparseدستور
با استفاده از این دستور یک آرایه اسپارس را بوجود می آوریم:
>> b=sparse(a)
b=
(1,1) 1
(2,2) 1
(3,3) 1
(4,4) 1
(5,5) 1
(6,6) 1
(7,7) 1
(8,8) 1
(9,9) 1
(10,10) 1
همانطور که می بینیم مطلب یک آرایه اسپارس به وجود آورد به این صورت که از از آرایه های صفر صرف نظر کرد .و سطر و ستون و
مقدار آن را ذکر کرد.اما فکر می کنید بیان کردن به این شکل چه فایده و تفاوتی دارد ؟یکی از فواید به این صورت کم کردن مقدارحافظه و این امر را مشاهد می کنیم.whosفضای مورد نیاز است با دستور
>> whos
Name Size Bytes Class
a 10x10 800 double array
ans 10x10 164 double array (sparse)
b 10x10 164 double array (sparse)
Grand total is 120 elements using 1128 bytes
که اسپارس بود 164 بایت حافظه اشغال شد. b که غیر اسپارس بود 800 بایت فضا اشغال شد در صورتی که در آرایه a در آرایه
در زیر به چند تابع اسپارس اشره می کنیم :
:speyeدستور
در بالا:b این دستور آرایه اسپارس همانی ایجاد می کند یعنی یه چیزی مثل ماتریس
>> a=speye(4)
a =
(1,1) 1
(2,2) 1
(3,3) 1
(4,4) 1
:fullدستور
این دستور یک ماتریس اسپارس را به فرم غیر اسپارس در می آورد:
>> b=full(a)
b =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
:findدستور
مختصات و مقادیر عناصر غیر صفر ماتریس را پیدا می کند.
>> a=eye(10);
>> find(a)
ans =
1
12
23
34
45
56
67
78
89
100
>> a=speye(4)
a =
(1,1) 1
(2,2) 1
(3,3) 1
(4,4) 1
>> find(a)
ans =
1
6
11
16
:nnzدستور
تعداد عناصر غیر صفر ماتریس را می دهد:
>> a=speye(4);
>> nnz(a)
ans =
4
:nonzeros دستور
یک بردار ستونی شامل عناصر غیر صفر می دهد.
>> a=speye(4);
>> a(2,1)=5;
>> b=nonzeros(a)
b =
1
5
1
1
1
:sponesدستور
عناصر غیر صفر ماتریس اسپارس را با یک جایگزین می کند.
>> a=speye(4);
>> a(2,1)=5;
>> a(2,2)=14;
>> a
a =
(1,1) 1
(2,1) 5
(2,2) 14
(3,3) 1
(4,4) 1
>> d=spones(a)
d =
(1,1) 1
(2,1) 1
(2,2) 1
(3,3) 1
(4,4) 1
:spyدستور
شکل پراکندگی ماتریس اسپارس را به صورت یک نمودار به تصویر می کشد.
برلی ماتریس بالا داریم.
spy(d)
برچسبها: آرایه های اسپارس در متلب, matlab
ایجاد چند جمله ای :
فرض کنید می خواهیم چند جمله ای زیر را در مطلب ایجاد کنیم:
x4-12x3+25x+116
برای شناساندن این چند جمله ای به مطلب کافیست یک بردار از ضرایب این چند جمله ای در مطلب تشکیل دهیم .
p=[1 -12 0 25 116];
بهره ببرید:rootاگر بخواهید ریشه های این چند جمله ای را در مطلب بدست آورید کافیست از دستور
:rootدستور
در زیر با استفاده ازاین دستور ریشه های چند جملهای را بدست آورده ایم:
>> r=roots(p)
r =
11.7473
2.7028
-1.2251 + 1.4672i
-1.2251 - 1.4672i
همانطور که می بینید دو تا از ریشه ها مختلط هستند.
فرض کنید می خواهیم چند جمله ای های زیر را ضرب کنیم:
x3+2x2+3x+4
x3+4x2+9x+16
:convدستور
این دستوررا برای ضرب چند جمله ای ها استفاده می کنیم:
نتایج را در زیر مشاهده می کنیم:
>> a=[1 2 3 4];
>> b=[1 4 9 16];
>> c=conv(a,b)
c =
1 6 20 50 75 84 64
:deconvدستور
از این دستور برای تقسیم چند جمله ای ها استفاده می کنیم:
را بر هم تقسیم می کنیمb وa
>> [q,r]=deconv(a,b)
q =
1
r =
0 -2 -6 -12
به ترتیب خارج قسمت و باقیمانده هستند.r و qدر بالا
نکته:استفاده از عدد صفر را هرگز از یاد نبرید اگر ضریبی از یک توان خاص وجود نداشت باید حتما از عدد صفر استفاده کنید.
: polyderدستور
از این دستور برای مشتق گیری از چند جمله ایها استفاده می کنیم:
ضرایب یک چند جمله ایست: با استفاده از این دستور به راحتی مشتق گیری می کنیم:aفرض کنید
>> a=[1 5 18 24 39 7];
>> s=polyder(a)
s =
5 20 54 48 39
:polyintدستور
از این دستور برای انتگرالگیری در چند جمله ایها استفاده می کنیم:
انتگرال چند جمله ای بالا را محاسبه می کنیم:
.
>> a=[1 5 18 24 39 7];
>> i=polyint(a)
i =
Columns 1 through 5
0.1667 1.0000 4.5000 8.0000 19.5000
Columns 6 through 7
7.0000 0
امیدوارم این بحثها مفید واقع شده باشند.
برچسبها: جمله ایها در متلب, MATLAB
اكثر اشیایی كه در ساختار گرافیكی مطلب دیده میشوند ، ویژگیهای مشتركی دارند.امروز به دو ویژگی دیگر از آنها میپردازم.
این كدها را در در یك m-file به اسم plot1 ذخیره كنید.
x=1:100;
y=x.^2;
hold on
for i=1:99
plot([x(i) x(i+1)],[y (i) y(i+1)])
drawnow
end
و كدهای زیر را به اسم plot2
x=1:100;
y=-(x.^2);
hold on
for i=1:99
plot([x(i) x(i+1)],[y(i) y(i+1)])
drawnow
end
در خط فرمان دستور زیر را بنویسید.
figure ('WindowButtonUpFcn','plot2','WindowButtonDownFcn','plot1')
بر روی پنجره باز شده كلیك كرده و تكمه موس را پایین نگه دارید ، بعد از چند لحظه تكمه موس را رها كنید.
میبینید كه رسم نمودار اول متوقف شده و نمودار دروم رسم میشود.
با دستور get مقدار دو ویژگی یاد شده را مشاهده كنید.
get (gcf,'bus')
get (gcf,'inter')
نكته : در هنگام كار كردن با ویژگیها لازم نیست نام كامل آنها را بنویسید، فقط تا آنجایی كه با بقیه ویژگیها قاطی نشود لازم است كه بنویسید.
مقدار bus برابر با queue(صف) یعنی رخداد(event) دوم بعد از رخداد اول انجام میشود.مقدار inter برابر با on یعنی رخداد دوم میتواند جلوی رخداد اول را بگیرد.
figure ('WindowButtonUpFcn','plot2','WindowButtonDownFcn','plot1','Interru ptible','off')
دوباره تكمه موس را پایین نگه داشته و بعد رها كنید.میبینید كه رخداد اول یطور كامل انجام شده و بعد رخداد دوم انجام میشود.
این دفعه یك پنجره ایجاد كرده و مقدار bus را برابر با cancel و مقدار inter را off میكنیم.
figure ('WindowButtonUpFcn','plot2','WindowButtonDownFcn','plot1')
set (gcf,'inter','off')
set (gcf,'bus','cancel')
بعد از رها كردن موس هیچ اتفاقی نمیافتد.
برچسبها: متلب, MATLAB, m, file
دستور line برای رسم خط بکار می رود
line(X,Y)
line(X,Y,Z)
line(X,Y,Z,'PropertyName',PropertyValue,...)
line('PropertyName',PropertyValue,...) low-level-PN/PV pairs only
h = line(...)
حالت اول دستور نقاطی که با X وY مشخص شده اند را به ترتیب به هم وصل می نماید.اگر فاصله نقاط را خیلی کم در نظر بگیریم می توانیم منحنی هم رسم کنیم.
t = 0:pi/20:2*pi;
hline1 = line(t,sin(t));
شکل دوم دستور برای ترسیم سه بعدی مورد استفاده قرار می گیرد.
تعداد سطرهای X با تعداد ستونهای Y باید برابر باشد.در حقیقت مطلب هر سطر X را در برابر هر ستون Y رسم می کند ؛ و همینطور در مورد Z
در شکل سوم و چهارم از ویژگیهای دستور line استفاده میشود.در شکل چهارم ماتریسهای X,Y,Z استفاده نمیشوند و نقاط مورد نظر یا استفاده از
ویژگی xdata و ... . رسم میشود.
line([1 2 4],[1 2 1;2 1 3])
برچسبها: رسم خط, دستور line, متلبMATLAB, MATLAB
در مورد گرافیک در مطلب خیلی صحبت کردم اما بدون صحبت از guide مطالبم ناقص است.
ویرایشگر رابط گرافیکی(guide) که از این پس ویرایشگر نامیده می شود ساده ترین راه برای ایجاد رابط گرافیکی است .توسط این ویرایشگر شبیه تمام زبانهای ویژوال کافی است که مکان تکمه ها، نمودارها، منوها و ... انتخاب کرده و رابط گرافیکی خوتان را ایجاد کنید.
اگر از ویرایشگر مطلب 7.0 استفاده کنید نمی توانید از رابط ایجاد شده در نسخه های پایین تر مطاب استفاده کنید. البته امکان ذخیره کردن رابط به صورت m-file که در نسخه های پایین تر قابل استفاده باشد نیز وجود دارد اما ترچیح می دهم که این کار را نکنم و در صورت لزوم رایط گرافیکی را مستقیما با نوشتن دستورات مطلب ایجاد کنم.
ویرایشگر رابط گرافیکی ایجاد شده را در دو فایل ذخیره می کند.یک fig-file و یک m-file . چیدمان نمودارها و .... در fig-file ذخیره می شود و m-file برای برنامه نویسی استفاده می شود.
اولین کار برای ایجاد رابط - پیدا کردن یک تیکه گچ ، کشیدن رابط و ... رابط اسم یک بازی است که قدیما از صبح تا شب بازی می کردیم - کشیدن یک طرح از پنجره مورد نظر روی کاغذ است .بعد از این کار دستور guide را اجرا کرده و طرح خود را در ویرایشگر می کشیم .
بعد از این کار باید ویژگی های اشیا قرار داده شده را تنظیم کنیم.مهمترین ویژگی که باید تنظیم شود ویژگی tag است.برای دسترسی به لیست ویژگی ها روی شئ مورد دوبار کلیک کنید.
در قسمت tag یک اسم یکتا را وارد کنید، اگر در لیست باز شده به قسمت callback (اگر وجود داشته باشد) نگاه کنید خواهید دید که در مقابل عبارت automatic ذکر شده است.معنی این عبارت این است که در m-file ایجاد شده یک تابع به اسم tag_Callback ایجاد می شود گه به جای tag اسمی که وارد کردید قرار می گیرد(البته گاهی بهتر است که برای گروهی از اشیا یک اسم انتخاب کنید).
پس از ذخیره یرنامه m-file آن باز می شود. در m-file ایجاد شده توضیحات کامل برای کار آن توسط مطلب قراردهده شده است .در اینجا مقداری از آنها را برسی می کینم.
ویرایشگر را باز کنید و یک Edit Text، یک Static Text . یک Push Bottun در صفحه باز شده قرار دهید(در منو سمت چپ می توانید اینها را پیدا کنید).بر روی هرکدام از این اشیا کلیک کرده تا لیست ویژگی های هرکدام باز شود.می بنید که برای ویژگی tag مربوط به Edit Text عبارت edit1 نوشته شده است.می توانید هر عبارت دیگری را بنوسید اما من تغیری در آن و در tag مربوط به دیگر اشیا نمی دهم.
من برنامه را به اسم guitest ذخیره کرده ام در m-file باز شده 6 تابع دیده می شود.
guitest
guitest_OpeningFcn
guitest_OutputFcn
نظیر این سه تابع در همه رابطهایی که با ویرایشگر ایجاد می شود وجود دارد و توابع دوم و سوم تابع داخلی تابع guitest (اسمی که رابط با آن ذخیره شده است) می باشند.
سه تابع دیگر در این m-file دیده می شود
edit1_Callback
edit1_CreateFcn
pushbutton1_Callback
در اینجا با تابع edit1_CreateFcn کاری نداریم در لیست ویژگی های Edit text در مقابل CreateFcn عبارت automatic نوشته شده است اگر این عبارت را پاک کنید این تابع ایجاد نخواهد شد.عملکرد این تابع همانند تابع guitest_OpeningFcn است .
در زیرتابع edit1_Callback این عبارات دیده می شود.
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double
عبارت edit1 همان عبارتی است که در مقابل ویژگی tag شئ Edit Text نوشتیم و hobject دستگیره مربوط به این شئ است.
eventdata در حال حاضر در مطلب کاربرد ندارد
handles یک متغیر از نوع structure است.در این متغیر دستگیره تمام اشیا موجود در رابط قرار دارند.شما می توانید هر داده مورد نیاز را در آن قرار دهید.
و اما guidata
با کمک این دستور می توان متغیر handles به عنوانguidata ( داده های مورد نیاز تابع guitest) تعریف کرد و در هر قسمت از این تابع به این داده ها دسترسی پیدا کرد. با این کار نیازی به استفاده از متغیرهای سراسری و یا دستورات مشابه نیست.
این دستورات را به تابع edit1_Callback اضافه کنید
input = str2double(get(hObject, 'String'));
handles.metricdata.input = input;
guidata(hObject,handles)
دستور اول رشته موجود در شئ edit1 را به عدد تبدبه عنوان guidataیل می کند.دستور دوم این عدد را در متغیر handles ذخیره می کند و دستور سوم این متغیر را به عنوان guidata تعریف می کند.
شکل استفاده از دستور guidata به این صورت است.
guidata(object_handle, data)
آرگومان object_handle دستگیره رابط گرافیکی است ولی می توان دستگیره هر کدام از اشیا موجود در رابط را به جای به کار برد.
در زیر تابع pushbutton1_Callback دستورات زیر را اضافه کنید.
output = handles.metricdata.input * 3;
set(handles.text1, 'String', output);
واضح است که دستور اول عدد وارد شده در edit1 را در 3 ضرب کرده و در متغیر output قرار می هد.
برای دسترسی به دستگیره یک شئ کافی است به متغیر handles و فیلدی به اسم tag ان شئ مراجعه کیند.
لینکهای زیر رابط گرافیکی ایجاد شده برای این برنامه و یکی از مثالهای مطلب می باشد.که با مطلب 7.0 درست شده اند.
http://amin.bashi.googlepages.com/Guitest.rar
http://amin.bashi.googlepages.com/Guitest2.rar
برچسبها: متلب, MATLAB
حتما می دانید که سری فوریه هر تابع، تقریبی از آن تابع است.هرچه چملات سری بیشتر باشد مقدار سری به مقدار واقعی تابع نزدیک تر است.
یکی از راه های بدست آوردن سری فوریه یک تابع استفاده از دستور fit است.این دستور توانایی محاسبه سری فوریه با حداکثر 8 جمله را دارد.
x=[-pi:.1:pi]';
y=sin(x);
f=fit(x,y,'fourier1')
به جای fourier1 می توان fourier2...fourier8 را قرار داد.
توابع زیر هم نیاز معرفی ندارند/
تابع گاما
Y = gamma(A)
تابع خطا
Y = erf(X)
سری فوریه
سری فوریه
فرض کنید تابع f به صورت زیر تعریف شده یاشد.

تابع f یک تابع تناوبی با دوره 2L می باشد و ثابتهای بسط فوریه این تابع از روایط زیر بدست می آیند



برای محاسبه این ثوابت از دستور int استفاده می کنیم
R = int(S)
R = int(S,v)
R = int(S,a,b)
R = int(S,v,a,b)
استفاده از این دستور ببسیار ساده است.S عبارتی است که می خواهیم از آن انتگرال بگیریم، v متغیر مستقل است و a,b حدود انتگرال گیری هستند
اولین قدم برای استفاده از این دستور تعریف متغیرهاست
syms w A t n
و بعد از آن محاسبه ثوابت
a0= w/pi*int('A*sin(w*t)','t',0,pi/w)
an=w/pi*int('A*sin(w*t)*cos(n*w*t)','t',0,pi/w)
bn=w/pi*int('A*sin(w*t)*sin(n*w*t)','t',0,pi/w)
قدم بعدی یافتن مقدار ثوابت در n های مختلف است.برای این کار از دستور subs استفاده می کنیم
subs(bn,n,3)
دستور بالا مقدار bn را به ازای n=3 محاسبه می کند
مقدار an را در n=1 مبهم است چون صورت و مخرج an صفر می شود .با استفاده از دستور limit حد این عبارت را در n=1 می توان بدست آورد.
limit(an,n,1,'right')
limit(an,n,1,'left')
برچسبها: محاسبه سری فوریه به صورت عددی, symbolic, متلب, MATLAB
حل عددی معادلات دیفرانسیل با درجات بالاتر از یک
حتما می دانید که هر معادله دیفرانسیل با درجه n را می شود به n معادله درجه اول تبدیل کرد.از این روش برای حل معادلات با درجه بالاتر از یک استفاده می شود.
معادله زیر را در نظر بگیرید:
برای حل تحلیلی این معادله کافی است بنویسیم
f=dsolve('D2y =(y-6*Dy)/t/4','y(1)=2','y(2)=3');
ezplot(f,[1 , 10]);
و اما حل عددی :
فرض کنید
در نتیجه خواهیم داشت
و اگر آن را به شکل ماتریس بنویسیم
حالا باید تابع odefun را بنوسیم
function dy=odefun(t,y)
A = [0 1;1/t/4 -6/t/4];
dy = A*y;
و در خط فرمان مطلب دستور زیر را
[t,y]=ode45('odefun',[1 ,10],[2;3]);
متغییر y دو ستون دارد که ستون اول به y1 و ستون دوم یه y2 اختصاص دارد که y1 جواب معادله و y2 مشتق آن است.
برچسبها: حل عددی معادلات دیفرانسیل با درجات بالاتر از یک, متلب, MATLAB, عادله دیفرانسیل با درجه n
یکی از دوستان سوال کردن چطور می شود معادلات سمبولیک را به عدد تبدیل کرد و گفتند که در نسخه های قبل از متلب ۷ با دستور numeric ٬ این کار قابل انجام بوده است.
من نمی دانم دستور numeric چه کاری انجام می دهد٬ ولی اگر بخواهیم مقدار عددی یک عبارت سبمبولیک را پیدا کنیم از دستور subs استفاده می کنیم
syms x
y = int(x^2)
subs(y,x,3)
قالب کلی اسن دستور به این صورت است
R = subs(S)
R = subs(S,new)
R = subs(S,old,new)
در مثال بالا از حالت سوم دستور استفاده کردیم.
هر عبارت سمبولیک یک متغیر پیش فرض دارد که این متغیر اولین متغیری است که در خروجی دستور findsym دیده می شود.
syms x y z
f = z+y+x
findsym(f)
subs(f,2)
مثال زیر نحوه استفاده از حالات اول دستور را نشان میدهد.
y = dsolve('Dy=y+a')
a = 1000
C1 = 2
subs(y)
برچسبها: تبدیل معادلات سمبولیک به عددی, دستور numeric, سمبولیک, متلب
قبلا درمورد محاسبه سری فوریه به کمک جعبه ابزار تحلیلی (symbolic) توضیحاتی را داده بودم،امروز نحوه محاسبه سری فوریه به صورت عددی را توضیح میدهم.
سری فوریه به شکلهای گوناگون قابل تعریف است، برای راحتی کار فرم ساده زیر را در بازهی 0< t < 1 را در نظر بگیرید

و ضرایب سری فوریه را می توان به این صورت تعریف کرد

اگر در این قسمت مشکلی دارید به کتابهای ریاضی مهندسی مراجعه کنید.
فرض کنید

برای محاسبهی سری فوریه تنها باید ضرایب آن را حساب کرد، برای محاسبه هرکدام از ضرایب یابدهرکدام از انتگرالهای فوق را حساب کنیم. برای نمونه من مقدار an را حساب می کنم
functiony = anfunc(t)
y = 2*sin(2*pi*t).*sin(2*n*pi*t);
همانطور می دانید هرکدام از این ضرایب یک دنباله از اعدادهستند و با توجه به مقدار n مقدار آنها تغییر می کند. برای محاسبهی تغییرات anfuncبا n 2 راه وجود دارد (مبحث مربوط به ParameterizingFunctions Called by Function Functions را در راهنمای متلبمطالعه کنید). من از تابع تودرتو (nested function) استفاده میکنم.
functionmyfunc
forn = 1:10
an(n) = quad(@anfunc,0,1);
end
an
function y = anfunc(t)
y = 2*sin(2*pi*t).*sin(2*n*pi*t);
end
end
در ادامهکافی است که ابتدا دیگر ضرایب را حساب کردهو سپس مقدار سری را از جمع کردن آنها محاسبه کنیم.
برچسبها: محاسبه سری فوریه به صورت عددی, symbolic, متلب, MATLAB
به دلیل تصاویر و فرمولهای ریاضی استفاده شده این آموزش به صورت PDF در اختیار شما قرار می گیرد
دانلود آموزش حل عددی معادلات دیفرانسیل در متلب
برچسبها: حل عددی معادلات دیفرانسیل در متلب, دانلود آموزش حل عددی معادلات دیفرانسیل در متلب, MATLAB, بکار بردن روش رونگ

دانلود آموزش نصب نرم افزار Matlab R2010a + فیلم
-------------------------------------
-------------------------------------
ارسال شده توسط : محمدرضا رازقی زاده
برچسبها: چه جوری gui را در matlab به exe تبدیل کنم, براي تبديل ويولت معکوس در matlab, Matlab, C
این کتاب را می توانید در ادامه مطلب پیدا کنید.
برچسبها: matlab, متلب, رباتیک, تولباکس
ادامه مطلب...

