userinfo close
  ,

برنامه نویسی


programmerclub

تاسیس: 6 دی 1383  پروفایل کلوب
مدیر کلوب: سوداگر - معاونان
زکات دانش، نشر آن است.
 

لیست بحث ها

  عناوین بحث ها ارسال کننده پاسخها بازدید بروز رسانی اولویت
55
1302
90/8/26 (08:21)
1109
10540
90/11/19 (02:33)
217
2681
90/11/15 (01:57)
109
1930
90/11/6 (11:58)
10
55
90/11/20 (18:51)
0
0
90/11/20 (00:51)
1
11
90/11/19 (03:14)
1
8
90/11/19 (03:05)
9
34
90/11/19 (02:59)
1
14
90/11/19 (02:41)
6
23
90/11/19 (02:38)
5
28
90/11/19 (02:37)
34
207
90/11/18 (22:50)
4
6
90/11/17 (00:10)
6
17
90/11/15 (02:08)
5
43
90/11/13 (00:37)
5
25
90/11/13 (00:26)
10
50
90/11/8 (23:29)
33
223
90/11/6 (11:59)
2
7
90/11/5 (01:55)

عنوان بحث

شایان   , shayanboy
شایان - 00:20 1386/04/29

آموزش MATLAB

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

 

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

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

 

دستور 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)

 

alt

 

 

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

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

 

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

 

alt

 

 

 

 

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

 

نماد

رنگ

نماد

علایم

نماد

نوع خط

b

آبی

.

نقطه

-

توپر

g

سبز

o

دایره

:

نقطه چین

r

قرمز

علامت جمع

.-

خط نقطه

c

فیروزه ای

*

ستاره

--

خط چین

m

ارغوانی

s

مربع

 

 

y

زرد

x

علامت ضربدر

 

 

k

سیاه

d

لوزی

 

 

w

سفید

v

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

 

 

 

 

^

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

 

 

 

 

مثلث رو به چپ

 

 

 

 

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

 

 

 

 

p

ستاره پنج پر

 

 

 

 

h

ستاره شش پر

 

 

 

 

 

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

 

دستور ezplot:

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

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

 

ezplot('cosh(x)')

 

 

alt

 

 

دستور semilogy:

 

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

 

دستور semilogx:

 

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

 

>> x=-5:0.1:5;

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

>> semilogy(x,y)

 

alt

 

 

دستور 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 قرار بگیرد می توانید

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

پاسخ ها

ترتیب پاسخ ها : از اولین پاسخ
شایان   , shayanboy
شایان - 14:01 1386/04/29
8
نه کار نکردم ولی اگه بخوای برات می ذارم مقالات شو
شاهین تنها , shahinjf
شاهین تنها - 13:39 1386/04/29
7

با NNTool هم کار کردی؟
تولبار شبکه عصبی مطلب... ؟!

آی دی من: sh81j

شایان   , shayanboy
شایان - 00:35 1386/04/29
6
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)

شایان   , shayanboy
شایان - 00:34 1386/04/29
5
matlabچند دستور ساده اما کاربردی در

 

 :clcدستور

 

  را پاک می کند.command windowصفحه

 

 :whoدستور

 

را می دهد.  workspace تمام آرایه های موجود در

>> a=3;

>> b=magic(4);

>> c='matlabseven';

>> who

 

Your variables are:

 

a  b  c

 :whosدستور

 

رابا ذکر تمامی خصوصیات وفضای اشغال شده در حافظه را می دهد.  workspace تمام آرایه های موجود

 

>> whos

  Name      Size                    Bytes  Class

 

  a         1x1                         8  double array

  b         4x4                       128  double array

  c         1x11                       22  char array

 

Grand total is 28 elements using 158 bytes

 :saveدستور

 

 پاک خواهند workspaceاگر از نرم افزار خارج شوید تمامی آرایه های موجود در

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

 

 :loadدستور

 

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

 

 :clearدستور

 

پاک خواهند شد . workspaceاگر  فقط همین دستور را استفاده کنیم کل تمامی آرایه های موجود در

 هستند فقط آنها را پاک خواهندworkspace اگر بعد از آن نام  متغیر یا متغیر هایی را بیاوریم که در

کرد.

 

 :helpbrowserدستور

 

 مطلب را باز می کند .help

 

 :demoدستور

 

  های مطلب را باز می کند .demo

شایان   , shayanboy
شایان - 00:32 1386/04/29
4

محاسبات مربوط به زمان :

 

 :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 نوع فرمت مورد نظر را انتخاب کرده اند

شایان   , shayanboy
شایان - 00:30 1386/04/29
3

مقایسه رشته ها:

 

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

 

 :strcmpدستور

 

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

>> str1='hello';

>> str2='Hello';

>> str3='help';

>> strcmp(str1,str2)

 

ans =

 

     0

 

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

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

 

 :strcmpiدستور

 

بدون در نظر گرفتن بزرگی و کوچکی حروف برابری آنها را مقایسه می کند:

 

>> strcmpi(str1,str2)

 

ans =

 

     1

 

>> strcmpi(str1,str3)

 

ans =

 

     0

 :strncmp دستور

 

 کاراکتر اول دو رشته مشابه هستند یا نه ؟nتشخیص می دهد که آیا

 

>> strncmp(str1,str3,2)

 

ans =

 

     1

 

>> strncmp(str1,str3,3)

 

ans =

 

     1

 

>> strncmp(str1,str3,4)

 

ans =

 

     0

برابرند .  help وhelloسه حرف اول از

 

: strncmpiدستور

.

 

nبدون در نظر گرفتن بزرگی و کوچکی حروف برابری آنها را در

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

 

>> strncmpi(str1,str3,3)

 

ans =

 

     1

 

>> strncmpi(str1,str3,4)

 

ans =

 

     0

 

 :isletterدستور

 

مشخص می کند که یک کاراکتر حرف است یا نه در غیر این صورت

صفر بر می کرداند.

 

>> matlabseven='matlab7';

>> isletter(matlabseven)

 

ans =

 

     1     1     1     1     1     1     0

 

 :isspaceدستور

 

به ازای فضاهای خالی یک بر می گرداند:

 

>> matlabseven='how are you';

>> isspace(matlabseven)

 

ans =

 

     0     0     0     1     0     0     0     1     0     0     0

 

 :findstrدستور

 

درون یک رشته را برای یک کلمه  جستجو می کند:

str='i love learning matlab in matlabseven';

 

>> findstr(str,'matlab')

 

ans =

 

17        27

  دو بار در عبارت بالا آمده است .کاراکتر17و27matlabکلمه

 

 : strmatchدستور

 

یکی دیگر از توابع انطباقی می باشد.این تابع بر روی کاراکتر های آغازین ردیف های

 یک آرایه کاراکتری دو بعدی نظر می افکند و لیستی از ردیف های آغاز شونده با ترتیب

کاراکتر های مورد نظر ایجاد می کند.

 

  ایجاد میکنیم :strvcatیک آرایه کاراکتری با

 

>> x = strmatch('max', strvcat('max', 'minimax', 'maximum'))

 

x =

 

     1

     3

: strrep دستور

 

عمل جستجو و جایگزینی را انجام می دهد:شکل کلی آن به صورت زیر است:

 

result=strrep(str,srch,repl)

 

 همان رشته ای است که قرار است بررسی شود.str

رشته ای است که باید جستجو شود.srch

 رشته جایگزین شونده است.repl

 

 

>> str='i love matlab';

>> result=strrep(str,'matlab','matlabseven')

 

result =

 

i love matlabseven

 

:strtok دستور

 

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

درصورت عدم ذکر کاراکتر محدود ساز در ورودی کاراکتر پیش فرض که فضای سفید

می باشد مورد استفاده قرار می گیرد.

 

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

 

[token,remainder]=strtok(string,delim)

 

  رشته ورودی است .string

 که اختیاری است مجموعه ای از کاراکتر های محدود سازاست .  delim

قرار میگیرد  اولین مجموعه کاراکترهایی را که قبل از کاراکتر محدود ساز token

  می آید.delim  باقی رشته است که بعد از remainder و درانتها

 

>> [token,remainder]=strtok('here is matlabseven')

 

token =

 

here

 

 

remainder =

 

 is matlabseven

شایان   , shayanboy
شایان - 00:30 1386/04/29
2

توابع رشته ای :

 

  است .هر کا راکتر در دو بایت از حافظه ذخیره می شود .charیک رشته در مطلب آرایه ای از نوع

 

یک متغیر کاراکتری هنگامی که یک رشته بدان نسبت داده می شود خود به خود به وجود می آید :

 

مثال :

 

 

>> str='matlabseven.blogfa'

 

str =

 

matlabseven.blogfa

 

>> whos str

  Name      Size                    Bytes  Class

 

  str       1x18                       36  char array

 

Grand total is 18 elements using 36 bytes

 

 :ischarدستور

برای چک کردن آرایه های کاراکتری به کار می رود اگر متغیر ورودی یک کاراکتر باشد این تابع یک و در غیر این صورت صفررا بر می گرداند .

 

 

>> ischar str

 

ans =

 

     1

 

 :doubleدستور

 

  تبدیل شوند.doubleبه   charمتغیر ها می توانند با استفاده از این تابع  از نوع

 

 

>> a='matlab'

 

a =

 

matlab

 

>> x=double(a)

 

x =

 

   109    97   116   108    97    98

 

 :charدستور

 

عکس عمل بالا را انجام می دهد یعنی متغیر ها را از نوع دابل به کاراکتری تبدیل می کند .

 

 

>> char(x)

 

ans =

 

matlab

 

ایجاد آرایه کاراکتری دو بعدی :

 

 

امکان ایجاد آرایه های کاراکتری دو بعدی وجود دارد ولی بدین منظور سطرهای آرایه باید دارای طول یکسانی باشند.

اگر یکی از سطر ها کوتاهتر از دیگری باشد آرایه کاراکتری تولید اشتباه می کند.چون برخلاف قانون بیان شده است.

 

>> name=['hi';'salam'];

??? Error using ==> vertcat

CAT arguments dimensions are not consistent.

 

 

 

 است.charآسانترین راه برای ایجاد آرایه کاراکتری استفاده از تابع

>> name=char('abbas salimi','matlabseven')

 

name =

 

abbas salimi

matlabseven

 

 : deblankدستور

 

هر گونه فضای خالی اضافی را از انتهای یک رشته هنگام استخراج آن از درون یک آرایه از بین برد .

 

>> A{1,1} = 'MATLAB    ';

A{1,2} = 'SIMULINK    ';

A{2,1} = 'Toolboxes    ';

A{2,2} = 'The MathWorks    ';

>> A

 

A =

 

    'MATLAB    '       'SIMULINK    '    

    'Toolboxes    '    'The MathWorks    '

 

>> deblank(A)

 

ans =

 

    'MATLAB'       'SIMULINK'    

    'Toolboxes'    'The MathWorks'

 

                                                                    :strcatدستور

 

دو یا چند رشته را به صورت افقی به هم متصل می کند .این تابع به فضا های خالی درون رشته ها کاری ندارد

ولی فضاهای خالی بین دو رشته را حذف می کند:

 

>> result=strcat('matlab','seven')

 

result =

 

matlabseven

 

 :strvcatدستور

 

دو یا چند رشته را به صورت عمودی به هم وصل می کند:

 

>> h=strvcat('welcom','to','matlabseven')

 

h =

 

welcom    

to        

matlabseven

شایان   , shayanboy
شایان - 00:29 1386/04/29
1

تبدیل حروف بزرگ و کوچک به یکدیگر:

 

دستور upper:

 

تمامی کاراکتر های حروف درون یک رشته را به حروف بزرگ تبدیل می کند.

 

 

a='i love MATLABSEVEN'

>>upper(a)

ans=

 

I LOVE MATLABSEVEN

 

دستور: lower

 

تمامی کاراکتر های حروف درون یک رشته را به حروف کوچک تبدیل می کند.

>>lower(a)

ans=

 

i love matlabseven

 

تبدیل عدد به رشته :

 

دستور int2str:

 

به مثال زیر دقت کنید:

>> x=2332;

>>int2str(x):

 whos

  Name      Size                    Bytes  Class

 

  x         1x1                         8  double array

  y         1x4                         8  char array

 

Grand total is 5 elements using 16 bytes

 

به طور پیش فرض مطلب عدد x را در یک آرایه double با ابعاد 1*1 با مقدار 2332 ذخیره می کند.

تابع int2str این مقدار اسکالر را به یک آایه کاراکتری 4*1که حاوی رشته 2332 می باشد تبدیل می کند.

 

دستور num2str:

 

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

 

<<  p=num2str(exp(1),(6

 

p =

 

2.71828

 

تا 6 رقم اعشار عدد e  محاسبه شد .

 

 

دستور bin2dec:

 

مقدار باینری را به دسیمال تبدیل می کند.

>> bin2dec('10001')

 

ans =

 

    17

 

دستور hex2dec:

 

 

مقدار هگز را به دسیمال تبدیل می کند.

 

>> hex2dec('af4')

 

ans =

 

        2804

 

دستورhex2num:

 

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

 

 

>> hex2num('400921fb54442d18')

 

ans =

 

       3.1416

 

>> hex2num('bff')

 

ans =

 

    -1

 

دستور dec2base و base2dec:

 

تبدیل اعداد اعشاری به هر پایه دیگری از 2 تا 36 و برعکس را انجام می دهند:

 

>> b=dec2base(26,3(

 

b =

 

222

 

<< base2dec(b,3(

 

ans =

 

    26

دستور dec2bin:

 

مقادیر دسیمال را به باینری تبدیل می کند:

(dec2bin(23<<

 

ans =

 

10111

دستور mat2str:

 

یک آرایه را به یک رشته تبدیل می کند که مطلب توانایی محاسبه evaluate آن را دارد:

 

>> a=[4 5 6;7 8 9]

 

a =

 

     4     5     6

     7     8     9

 

>> b=mat2str(a)

 

b =

 

[4 5 6;7 8 9]

 

دستور sprintf:

 

این نابع اختیار تام بر چگونگی فرمت رشته کاراکتری خروجی را می دهد:

 

>> str=sprintf('the value of pi =%8.6f.',pi)

 

str =

 

the value of pi =3.141593.

 

تبدیل رشته به عدد:

 

دستورeval:

 

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

 >> a='3.141592'

 

a =

 

3.141592

 

>>b=eval(a)

 

b =

 

       3.1416

 

 whos<<

  Name      Size                    Bytes  Class

 

  a         1x8                        16  char array

  b         1x1                         8  double array

 

Grand total is 9 elements using 24 bytes

 

دستور sscanf:

 

شکل کلی تابع به صورت زیر می باشد:

 

value=sscanf(string,format)

 

string  رشته ورودی و فرمت نوع تبدیلی است که قرار است صورت بگیرد.

 

%d' 'برای اعداد دهدهی و %g'  'برای اعداد اعشاری می باشد.

 

>> sscanf('3.141592','%g')

 

ans =

 

       3.1416

 

>> sscanf('3.141592','%d')

 

ans =

 

     3

کلوب دات کام
کلیه محتوای این سایت توسط کاربران درج شده است و کلوب دات کام هیچ مسئولیتی نسبت به آن ها ندارد.