تاريخ : دوشنبه دوازدهم تیر ۱۳۹۱

در صورتي كه بخواهيد در مورد دستور و يا تابع خاصي اطلاعاتي به دست بياوريد مي توانيد در پنجره 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) ی + متلب سایت + وب سایت انجمن تخصصی گفتگوی متلب (Professional MATLAB Forum + رفع اشکالات کاربران MATLAB به زبان فارسی + Matlab Online + آموزش مقدماتی نرم افزار متلب + برنامه نویسی در MATLAB + دانلود نرم افزار متلب Mathworks Matlab R2011b + دو کتاب pdf آموزش متلب + دانلود کتاب آموزش متلب (Matlab learning) + matlab download + mathlab + matlab student version + matlab tutorial + مطالب آموزشی تخصصی در زمینه برنامه نویسی متلب و هوش مصنوعی + ایجاد بردار و ماتریس در متلب + آموزش MATLAB + مرجع هوش


برچسب‌ها: پایگاه فارسی نرم افزار MATLAB, متلب, به انگلیسی, MATLAB

ارسال توسط بهرامی
 
تاريخ : یکشنبه یازدهم تیر ۱۳۹۱
مهمترین دستوراتی که در متلب برای رسم سيگنال ها استفاده میشوند plot و stem هستند. اولي براي رسم سيگنال هاي پيوسته و دومي براي سيگنال هاي گسسته مناسب است. اين توابع دو آرگمون ورودي دارند كه اين ورودي ها بايد بردار باشند. طرز كار اين دستورات ساده است:

وقتي دستور 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 سيگنال را رسم ميكنيم. برای اجرای این مثال کد زیر را در متلب وارد کنید:

>> n=-10:1:10 ;
>> y=zeros(1,21) ;
>> y(1,11) = 1 ;
>> stem(n,y)

سیگنال سینوسی پیوسته


بردار ورودی را با نام t ایجاد میکنیم. در اصل این بردار باید یک بازه پیوسته باشد اما چون در متلب باید یک بردار با درایه های متناهی داشته باشیم  برداری با تعداد زیاد درایه ایجاد میکنیم تا به حالت پیوسته نزدیک باشد. این بردار را با دستور linspace ایجاد میکنیم (در این جا 500 درایه برایش در نظر میگیریم. کمترین مقدار آن را 50- و بیشترین را 50 تعیین میکنیم تا نمودار در این بازه رسم شود). بردار خروجی به راحتی با تابع sin ایجاد می شود (کافی است t را به عنوان آرگمون به آن بدهیم). در آخر با plot نمودار را رسم میکنیم.
>> t = linspace(-50,50,500) ;
>> y = sin(2*t) ;

>> plot(x,y)

سیگنال پله واحد زمان-پیوسته

این سیگنال را هم در همان بازه 50- تا 50 رسم خواهیم کرد. بنابراین بردار ورودی می تواند همان بردار ورودی مثال قبل باشد. بردار y را به عنوان خروجی با درایه های صفر ایجاد میکنیم. سپس همه درایه های بعد از درایه وسط (که متناظر با t=0 است) را مساوی 1 قرار می دهیم. توجه کنید این کار با یک دستور (با استفاده از علامت دو نقطه برای تعیین بازه) امکان پذیر است.
>> t = linspace(-50,50,500) ;
>> y = zeros(1,500) ;
>> y(251:500) = 1 ;
>> plot(t,y) ;

 

نمودارهایی که با کدهای گفته شده رسم میشود در ساده ترین شکل ممکن است. دستورات مختلفی در متلب وجود دارد که توسط آن ها میتوانید نمودارهای خود را زیباتر و دقیق تر کنید (مثلا با تغییر مقیاس و تغییر رنگ ها). یادگیری آن ها را به شما واگذار میکنم
.

برچسب‌ها: 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) ی + متلب سایت + وب سایت انجمن تخصصی گفتگوی متلب (Professional MATLAB Forum + رفع اشکالات کاربران MATLAB به زبان فارسی + Matlab Online + آموزش مقدماتی نرم افزار متلب + برنامه نویسی در MATLAB + دانلود نرم افزار متلب Mathworks Matlab R2011b + دو کتاب pdf آموزش متلب + دانلود کتاب آموزش متلب (Matlab learning) + matlab download + mathlab + matlab student version + matlab tutorial + مطالب آموزشی تخصصی در زمینه برنامه نویسی متلب و هوش مصنوعی + ایجاد بردار و ماتریس در متلب + آموزش MATLAB + مرجع هوش مصنوعی و کاربران متلب + مراجع آموزش متلب + فیلم آموزشی نرم افزار متلب (MATLAB) به زبان فارسی + Object-Oriented Programming in MATLAB + ایجاد نمودارهایی با دو محور y در متلب + جی ای اس و کامپیوترورشنال رز-متلب-کدمپ - کتاب آموزش arc gis + متلب سایت - دوره های آموزشی متلب و هوش مصنوعی + اختصاصی کردن علائم نمودار در متلب + دانلود نرم افزار متلب Matlab R2010b + پایان نامه - پروژه با متلب matlab simulink+ آموزش سیمولینک متلب matlab simulink - متلب + دانلود رایگان متلب 2012 + پیاده سازی ماشین بردار پشتیبان SVM در متلب (به همراه نمایش گرافیکی) + کنترل دیجیتال در متلب + جزوه آموزش شبکه عصبي در متلب + آموزش معادلات دیفرانسیل با متلب + سری فوریه در متلب + جزوه آموزش الگوريتم ژنتيك (GA) در متلب Matlab + پروژه های متلب


برچسب‌ها: پایگاه فارسی نرم افزار 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آرایه های سلولی در

 

آیا می دانید آرایه سلولی در مطلب چیست ؟

 

 

 در حقیقت آرایه سلولی آرایه ای است .که عناصر آن سلول هایی هستند که همانند ظروفی دیگر آرایه های ویژه را در خود جای می دهند .مثلا ممکن است یک سلول از آن حاوی آرایه اعداد حقیقی بوده سلول دیگر حاوی آرایه ای متشکل از رشته ها و دیگر ی حاوی آرایه ای از اعداد مختلط باشد. 

 

.

 

 :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

ارسال توسط بهرامی
 
تاريخ : پنجشنبه هشتم تیر ۱۳۹۱
روش رسم کانولوشن را با یک مثال توضیح می دم.

x=[1 1 1 1 1];

h=[1 1 1 1 1 1 0 0 0 1 1 1 1 1 1];

stem(0:4,x)

stem(2:16,h)

y=conv(x,h);

stem(2,2*length(y)-1,y)

دستورstem برای ترسیم گسسته بکار می رود.



برچسب‌ها: کانولوشن, متلب, 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)



نوع مطلب : سری فوریه 

سری فوریه

نویسنده :امین باشی
تاریخ:پنجشنبه 26 مرداد 1385-10:08 ق.ظ

سری فوریه

فرض کنید تابع 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

ارسال توسط بهرامی
 
تاريخ : پنجشنبه هشتم تیر ۱۳۹۱
MATLAB دو تابع معروف برای حل عددی معادلات دیفرانسیل ، با بکار بردن روش رونگ-کوتا در اختیار قرار می دهد. اینها ode23 و ode45 هستند، که بر پایه فرمولهای درجه دوم و سوم فالبرگ برای دقت متوسط و درجه چهارم و پنجم برای دقت بالا بکار می روند. معادلات دیفرانسیل مرتبه ی n ام را باید به n معادله ی دیفرانسیل مرتبه ی یک تغییر شکل داد و باید در یک فایل با پسوند M قرار داده شوند تا در زمان حل معادلات به آن مراجعه شود.

 


به دلیل تصاویر و فرمولهای ریاضی استفاده شده این آموزش به صورت PDF در اختیار شما قرار می گیرد

 

دانلود آموزش حل عددی معادلات دیفرانسیل در متلب


برچسب‌ها: حل عددی معادلات دیفرانسیل در متلب, دانلود آموزش حل عددی معادلات دیفرانسیل در متلب, MATLAB, بکار بردن روش رونگ

ارسال توسط بهرامی
 
تاريخ : جمعه نوزدهم خرداد ۱۳۹۱

دانلود آموزش نصب نرم افزار Matlab R2010a + فیلم

-------------------------------------

دانلود با حجم 2.66 مگابایت

-------------------------------------

ارسال شده توسط : محمدرضا رازقی زاده


برچسب‌ها: چه جوری gui را در matlab به exe تبدیل کنم, براي تبديل ويولت معکوس در matlab, Matlab, C

ارسال توسط بهرامی
 
تاريخ : یکشنبه دوم بهمن ۱۳۹۰
کتاب زیر منبع مفیدی برای  استفاده از تولباکس نرم افزار متلب در طراحی رباتیک است

این کتاب را می توانید در ادامه مطلب پیدا کنید.


برچسب‌ها: matlab, متلب, رباتیک, تولباکس

ادامه مطلب...
ارسال توسط بهرامی

اسلایدر

دانلود فیلم