| عناوین بحث ها | ارسال کننده | پاسخها | بازدید | بروز رسانی | اولویت | |
|---|---|---|---|---|---|---|
|
|
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)
|
|
از این قسمت به بعد تصمیم گرفتم رسم نمودار در مطلب رو به صورت خلاصه و مفید شروع کنم:
مطلب نمودارهای مختلفی را رسم می کند و این بحث در مطلب خیلی گسترده است اما سعی
می کنم آنچه را که لازم به نظر میرسد توضیح دهم.
دستور 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 قرار بگیرد می توانید
متن را در هر نقطه ای قرار دهید.
آیا می دانید آرایه سلولی در مطلب چیست ؟
در حقیقت آرایه سلولی آرایه ای است .که عناصر آن سلول هایی هستند که همانند ظروفی دیگر آرایه های ویژه را در خود جای می دهند .مثلا ممکن است یک سلول از آن حاوی آرایه اعداد حقیقی بوده سلول دیگر حاوی آرایه ای متشکل از رشته ها و دیگر ی حاوی آرایه ای از اعداد مختلط باشد.
.
: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)
: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
محاسبات مربوط به زمان :
: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 نوع فرمت مورد نظر را انتخاب کرده اند
مقایسه رشته ها:
شما می توانید از چهار تابع در مطلب برای مقایسه رشته ها استفاده کنید:
: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
توابع رشته ای :
است .هر کا راکتر در دو بایت از حافظه ذخیره می شود .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
تبدیل حروف بزرگ و کوچک به یکدیگر:
دستور 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