تبليغاتX
آموزش مقدماتی نرم افزار متلب
http://www.mathhouse.org/VisitorPages/show.aspx?ItemID=243

 

http://limit.blogfa.com/

 

http://www.997.blogfa.com/

+ نوشته شده در  چهارشنبه هفتم فروردین 1387ساعت 22:6  توسط دوست تو  | 

آغاز برنامه نویسی در MATLAB :

 

تا به حال تنها از توابعي استفاده ميکرديم که قبلا براي matlab تعريف شده بود؛ ولي ممكن است اين

توابع نتوانند نيازهاي ما را پاسخ دهند، يا بخواهيم توابعي با کاربري خاص بنويسيم.

 

يك تابع (function file) مانند يك m-file است با اين تفاوت که خط اول آن به صورت زير است:

 

 

function [outputs]= name(inputs)

 

اين خط مشخص مي کند که اين M-file يك تابع است. همچنين تعداد ورودي ها و خروجي ها را مشخص

کرده و هر يك را در يك متغير قرار مي دهد.در صورتي که تنها يك ورودي داشته باشيم نيازي به کروشه []

نیست .name نيز نام تابع را مشخص مي کند.

 

بهتر است براي خواناتر شدن برنامه از عبارات توضيحي استفاده کنيم.اين عبارات بايد ورودي ها و خروجي

ها را مشخص کند.همچنين مي توان نام برنامه نويس و تاريخ نوشتن آن را نيز مشخص کرد. اين خطوط با

اجرا دستور help name << به نمایش در می آیند .

به عنوان مثال  M-file زیر دستور prod را شبیه سازی می کند:

 

 

 

function p=prod2 (x)

% function p=PROD2 (x)

% shabih sazi farman PROD

% a:radif b:sotoon

[a,b]=size2(x);

p(1,:)=x(1,:);

for i=2:a,

% satr aval p dar satr haye x zarb shode

% va dar satr aval p zakhir mishavad

p(1,:)=p(1,:).*x(i,:);

end

% if x is rowvector

while a==1;

p=1;

for i=1:b,

p=p*x(i);

end

a=0;

end

 

حلقه هاي تكرار:

اين دستورات در اغلب زبان هاي برنامه نويسي به خصوص c وجود دارند.

 

حلقه for :

اين حلقه اين امكان را به وجود مي آورد که تعدادي از دستورات به تعداد دفعات از قبل تعيين شده تكرار

شوند.شكل کلی آن به صورت زير است:

 

for variable = a

statement 1

statement 2

end

 

که a یک ماتریس است . در هر بار تكرار حلقه يك ستون ماتريس a در variable قرار مي گيرد.به اين ترتيب

حلقه به تعداد ستون هاي a تكرار مي شود.

اين حلقه را مي توان به صورت تو در تو استفاده کرد. مثال زير با استفاده از حلقه هاي تو در تو جدول ضرب

ايجاد مي کند.

 

for i=1:5

for j=1:5

s(i,j)=i*j;

end

end

 

حلقه while :

 

اين حلقه چند دستور را به تعداد دفعات نامحدود تكرار مي کند. از اين دستور هنگامي استفاده مي شود

که تعداد دفعات تكرار مشخص نباشد. شكل کلي اين دستور به صورت زير است:

 

while expression

statements

end

 

expression يك عبارت شرطي است و تا هنگاميکه درست باشد، حلقه تكرار مي شود. (عبارات شرطي

در قسمت بعد شرح داده مي شود.)

 

 

ساختارهاي تصميم:

 

شرط if-else-end :

 

حتما با عملكرد اين دستور در زبان هاي برنامه نويسي ديگر آشنا شده ايد.شكل کلی اين دستور را در زير

مي بينيد.

 

if expression 1

statements 1

elseif expression 2

statements 2

elseif expression n

statements n

else

statements

end

 

همان طور که مشاهده ميکنید در حالت کلی مي توان از يك if بیشمار elseif و یک else و end استفاده کرد .

استفاده از else و elseif اختیاری است .

 

اگر شرط مقابل if درست باشد دستورات شماره 1 اجرا مي شوند، در غير اين صورت شرط 2 (مقابل

Elseif) بررسي مي شود در صورتي که درست باشد دستورات 1 ودر غير اين صورت شرط 3 بررسي مي

شود ... در صورتي کهn شرط  بررسي شد و درست نبود دستورات قسمت else اجرا می شوند.

 

MATLABاعداد مختلط در

اعداد مختلط رادر  matlab به راحتی می توان ایجاد کرد.برای این کار کافیست ازj وi استفاده کرد به مثال زیر توجه کنید:

 

>> a=1+2j

 

a =

 

   1.0000 + 2.0000i

 

>> b=2-3i

 

b =

 

   2.0000 - 3.0000i

می بینید که به   به راحتی می توان عدد مختلط ساخت توجه کنید که1+j2  درست نیست مگر اینکه از علامت * استفاده کنیم.

 

>> 1+i2

??? Undefined function or variable 'i2'.

 

>> 1+i*2

 

ans =

 

1+ 2.0000i

چند تابع برای کار با اعداد مختلط:

 

:absتابع

 

این تابع برای بدست آوردن اندازه در اعداد مختلط بکار می رود:

 

>> a=1+2j

 

a =

 

   1.0000 + 2.0000i

 

>> abs(a)

 

ans =

 

    2.2361

:angleتابع

 

اندازه عدد مختلط را بر حسب رادیان می دهد:

>> a=1+2j;

>> angle(a)

 

ans =

 

    1.1071

:conjتابع

 

مزدوج مختلط را محاسبه می کند:

 

>> conj(a)

 

ans =

 

   1.0000 - 2.0000i

:imagتابع

 

قسمت موهومی عدد مختلط را می دهد:

 

   1.0000 - 2.0000i

 

>> imag(a)

 

ans =

 

     2

:realتابع

 

قسمت حقیقی عدد مختلط را می دهد:

>> real(a)

 

ans =

 

     1

 

:isrealتابع 

 

اگر متغیر حقیقی باشد عدد یک و اگر موهومی باشد صفر را بر می گرداند:

 

>> a=1+2j;

>> b=6;

>> isreal(a)

 

ans =

 

     0

 

>> isreal(b)

 

ans =

 

     1

:complexتابع

 

یک عدد مختلط ایجاد می کند:

>> complex(5,10)

 

ans =

 

   5.0000 +10.0000i

 

عدد اول در پرانتز قسمت حقیقی و عدد دوم قسمت موهومی است.

 

 

: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

امیدوارم این بحثها مفید واقع شده باشند.

 

 

مطالب این قسمت از سایت http://matlabseven.blogfa.com گرفته شده اند.

+ نوشته شده در  شنبه بیستم بهمن 1386ساعت 23:51  توسط دوست تو  | 

رسم نمودار در مطلب قسمت اول:

 

از این قسمت به بعد تصمیم گرفتم رسم نمودار در مطلب رو به صورت خلاصه و مفید شروع کنم:

 

مطلب نمودارهای مختلفی را رسم می کند و این بحث در مطلب خیلی گسترده است اما سعی

 می کنم آنچه را که لازم به نظر میرسد توضیح دهم.

 

دستور plot:

 

شکل کلی این دستور به صورت زیر است:

 

plot(x1,y1,'s1'x2,y2,'s2'…)

 

مفهوم این دستور این است که شما می توانید y1 را بر حسب x1 و y2 را برحسب x2 را رسم کنید.

 

مثلا فرض کنید می خواهیم تابع  1+cos(2x)را در بازه [-5 5] رسم کنیم پس به این صورت عمل

عمل می کنیم:

 

>> x=-5:0.1:5;

>> y=1+cos(2*x);

>> plot(x,y)

 

 

 

حال فرض کنید می خواهیم رنگ نمودار را قرمز و خط آن را ستاره ای کنیم ،پس می نویسیم:

این همان s1 است که سیمبول محسوب می شود.

 

>> plot(x,y,'r*')

 

 

 

 

 

دیدید که برای این تغییرات علایمی را در کوتیشن قرار دادیم این تغییرات را می توانیم بر حسب جدول زیر مدل کنیم:

 

نماد

رنگ

نماد

علایم

نماد

نوع خط

b

آبی

.

نقطه

-

توپر

g

سبز

o

دایره

:

نقطه چین

r

قرمز

+

علامت جمع

.-

خط نقطه

c

فیروزه ای

*

ستاره

--

خط چین

m

ارغوانی

s

مربع

 

 

y

زرد

x

علامت ضربدر

 

 

k

سیاه

d

لوزی

 

 

w

سفید

v

مثلث رو به پایین

 

 

 

 

^

مثلث رو به بالا

 

 

 

 

< 

مثلث رو به چپ

 

 

 

 

> 

مثلث رو به راست

 

 

 

 

p

ستاره پنج پر

 

 

 

 

h

ستاره شش پر

 

 

 

 

 

که می توانیم این تغییرات را در هر شکل ایجاد کنیم و این علایم را داخل کوتیشن کنار هم قرار دهیم.

 

دستور ezplot:

برای رسم توابع به کار می رود که در این هنگام دیکر حتی نیازی به تعریف بردار هم ندارید:

فرض کنید می خواهیم   cosh(x) را رسم کنیم پس داریم:

 

ezplot('cosh(x)')

 

 

 

 

 

دستور semilogy:

 

مقدار  log(y) را جایگزین می کند .

 

دستور semilogx:

 

مقدار  log(x) را جایگزین می کند .

 

>> x=-5:0.1:5;

>> y=exp(-2*x);

>> semilogy(x,y)

 

 

 

دستور title:

 

برای تا یپ متن در بالای نمودار از آن استفاده می شود.

 

title('your text')

 

دستور grid:

 

 grid onخطوط شبکه ای ایجاد می کند, grid off این خطوط را از بین می برد.

 

دستور box:

box on جعبه محور های مختصات را ایجاد می کند.وbox off آن را از بین می برد.

 

دستورات xlabel و ylabel وzlabel :

 

به ترتیب برچسب هایی را در کنار محور های x و y وz ایجاد می کند.

xlabel('your text')

 

دستور gtext:

 

پس از تایپ به صورت gtext('your text') اگر مکان نما روی figure قرار بگیرد می توانید

متن را در هر نقطه ای قرار دهید.

 

 

ادامه رسم نمودار . . .

 

در این جلسه قصد دارم در مورد ایجاد تغییرات در یک شی گرافیکی صحبت کنم.

 

هر زمان که شما یک نمودار را در مطلب رسم می کنید چند شی متفاوت ایجاد می شود:اول یک صفحه خالی

است که figure نامیده می شود.

 

دستور figure:

 

یک پنجره خالی ایجاد می کند.که حاوی هیچ نموداری نیست.

 

قسمت دوم قسمتی است که نمودار در آن رسم می شود و شامل محور های مختصات می باشد.

و در مطلب axes نامیده می شود.

 

دستور axes :

 

یک figure رسم می کند که حاوی یک axes  خالی است .

 

و در نهایت چیزی است که در axes رسم می شود.

 

اما همه این حرفها را گفتم تا این چیز را بدانید که تمام اشیا که بوجود می آیند دارای خواص منحصر به فرد

 خود نیز هستند مثلا زمانی که شما یک نمودار را رسم می کنید این نمودار دارای خواصی مثل رنگ زمینه ، نوع خطی که شکل با آن رسم می شود، قطر خط و . . . غیره می باشد که می توان تمام خواص یک شی را گرفت و همچنین آنها را به دلخواه خود تغییر داد که برای این کار از دستورات زیر استفاده می کنیم :

 

 

دستور get:

 

می توان خواص و یا یک خاصیت از یک شی را در یافت کرد.

 

مثلا در زیر خواص نموداری را که در جلسه قبل رسم کردیم را با دستور get دریافت

می کنیم:

 

دتورات رسم را دوباره در زیر آورده ام:

 

>> x=-5:0.1:5;

>> y=1+cos(2*x);

>> handel=plot(x,y);

>> get(handel)

                 Color: [0 0 1]

             EraseMode: 'normal'

             LineStyle: '-'

             LineWidth: 0.5000

                Marker: 'none'

            MarkerSize: 6

       MarkerEdgeColor: 'auto'

       MarkerFaceColor: 'none'

                 XData: [1x101 double]

                 YData: [1x101 double]

                 ZData: [1x0 double]

          BeingDeleted: 'off'

         ButtonDownFcn: []

              Children: [0x1 double]

              Clipping: 'on'

             CreateFcn: []

             DeleteFcn: []

            BusyAction: 'queue'

      HandleVisibility: 'on'

               HitTest: 'on'

         Interruptible: 'on'

              Selected: 'off'

    SelectionHighlight: 'on'

                   Tag: ''

                  Type: 'line'

         UIContextMenu: []

              UserData: []

               Visible: 'on'

                Parent: 157.0016

           DisplayName: ''

             XDataMode: 'manual'

           XDataSource: ''

           YDataSource: ''

           ZDataSource: ''

 

چیز هایی را که در بالا می بینید همان خواصی هستند که در مورد آنها صحبت کردم البته صحبت در مورد

همه خواص بالا خارج از حوصله است و چند تا از خاصیت ها را ذکر کرده و با دستور set تغییر می دهیم:

 

دستور set:

 

توسط این دستور می توان خواص یک شی را به دلخواه تغییر داد:

 

مثلا فرض کنید می خواهم رنگ نمودار را از آبی به قرمز و نوع marker آن را به ستاره ای

با سایز 8 تغییر دهیم:

 

پس از دستور set به ترتیب نام مشخصه و سپس مقدار آن را وارد می نماییم:

 

>> set(handel,'color',[1 0 0],'marker','*','markersize',8)

 

 

از دستورات set و get در طراحی رابط های گرافیکی به وفور استفاده می شود.

 

 

 

رسم کردن رویه ها :

 

رسم کردن رویه ها در MATLAB  ، همانند رسم نمودار مبحث گسترده ای است ( البته

برای حرفه ای ها ) . ولی در زیر چند مثال را آورده ام که امیدوارم برای شروع کار

 مفید مفید واقع شود :

 

دستور meshgrid :

 

آرایه های  x  و  yرا  برای نمودار های سه بعدی تولید می کند .

 

 

>> [X,Y] = meshgrid(1:3,10:14)

 

X =

 

     1     2     3

     1     2     3

     1     2     3

     1     2     3

     1     2     3

 

 

Y =

 

    10    10    10

    11    11    11

    12    12    12

    13    13    13

    14    14    14

 

در مثال های آتی این دستور را در کنار دیگر دستورات رسم سه بعدی خواهیم آورد .

 

دستور surf :

 

نمودار صفحه ای (surface plot ) را رسم می کند .

 

مثال :تابع                          را رسم کنید .

 

xg=linspace(-5,5,20);

[x,y]=meshgrid(xg,xg);

z=2-x.^2-y.^2;

surf(x,y,z)

 

 

 

 

 

دستور surfc :

 

 

خطوط تراز را روی صفحه ثابت z و در زیر رویه نمایش می دهد .