متلب
صفحات وبلاگ
نویسنده: پ متلب - چهارشنبه ۱٦ فروردین ،۱۳٩۱

Array & Vector Definition - تعریف آرایه یا بردار

MATLAB - متلب - Array & Vector & Matrix - بردارها و ماتریس ها

 


ایجاد یک آرایه عددی با نام x :

[x=[1 2 3<<

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


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

x=1:5<<

در این مثال آرایه ای تولید کردیم که اعضای آن اعداد 1 2 3 4 5 می باشند که ما خود این اعداد را بطور دستی تایپ نکردیم یعنی با عملگر کالن : طول گام اعداد درون آرایه را مشخص می کنیم. به مثالی دیگر توجه کنید...

x=1:2:5<<

در این مثال طول گام اعداد تولید شده را 2 گرفته ایم پس اعضای آرایه 1 3 5 می باشند. همانطور که در مثال اول مشاهده کردید اگر طول گام را بطور صریح ننویسیم آنرا 1 تلقی می کند. به همین روش می توان آرایه های گوناگونی ساخت.

می توان با این روش یک آرایه با اعضای معکوس ساخت در مثال زیر آرایه ای با اعضای 5 4 3 2 1 مشخص شده است:

x=5:-1:1<<


روش سوم برای ایجاد یک آرایه ، قرار دادن مقادیر درون اندیس های آرایه است :

x(1)=10<<

x(2)=11<<

x(3)=12<<

یعنی درون اولین خانه آرایه عدد 10 ، درون دومین خانه عدد 11 و درون سومین خانه عدد 12 و الی آخر... قرار می دهیم.

پس این آرایه شامل اعضای 10 ، 11 و 12 می باشد.


مثال : آرایه ای بسازید که x=k*pi را برای k=1..10 تولید کند؟

جواب :

x=(1:10)*pi<<


ایجاد یک آرایه ستونی :

[x=[1;2;3;4<<

با گذاشتن سمی کالن ; بین اعداد می توان آرایه را به شکل ستونی درآورد.


ترانهاده کردن یک آرایه : یعنی می توان با عملگر تک کوتیشن ' یک آرایه سطری را به ستونی و یک آرایه ستونی را به سطری تبدیل کرد.

'x<<


نمایش دادن اندازه یا طول آرایه :

(length(x<<


برای دسترسی به اعضای یک آرایه تولید شده می توان از اندیس های آن استفاده کرد. به عنوان مثال برای مشاهده سومین عدد ذخیره شده در آرایه x می توان به شکل زیر عمل کرد :

(x(3<<


دسترسی به عناصر آرایه از اندیس i تا j با طول گام یک :

(x(i:j<<


مثال : عضو پنجم آرایه x را که قبلا ساخته شده بود ، به عدد 7 تغییر دهید ؟

جواب :

x(5)=7<<


برای حذف کردن عنصری از آرایه از دو کوروشه خالی به شکل زیر استفاده می شود. در مثال زیر می خواهیم عنصری را که در اندیس 3 یا سومین خانه آرایه است را پاک کنیم. بعد از حذف شدن عدد سایر اعداد به سمت چپ شیفت پیدا می کنند:

[]=(x(3<<


حذف سومین عنصر بدون شیفت اعداد:

x(3)=nan<<


ورودی اکثر توابع و دستورات MATLAB به جای یک عدد می تواند یک آرایه باشد. اگر x یک آرایه شامل عناصر 1 2 3 4 5 باشد در اینصورت دستور زیر به عنوان مثال روی تک تک عناصر اجرا می شود :

(sqrt(x<<


در صورتیکه نقطه یا دات . قبل از ضرب ، تقسیم و توان بیاید به این عملگر ها ، عملگر های مولفه ای گویند و آنها عناصر درون آرایه ها را مولفه به مولفه به هم ضرب ، تقسیم و به توان می رسانند. حال فرض x و y دو آرایه باشند در مثال زیر اعضای نظیر هم به هم ضرب می شوند توجه داشته باشید که آرایه ها باید هم بعد باشند :

x.*y<<


حال اگر قصد داریم ضرب داخلی و خارجی دو بردار را انجام دهیم به ترتیب به صورت زیر عمل می کنیم :

x*y<<

(cross(x,y<<


به راحتی می توان دو آرایه را با هم جمع و تفریق کرد :

x+y<<

x-y<<


تقسیم بازه [a,b] به n قسمت مساوی ، که شما به جای a , b , n اعداد مورد نظر خود را باید قرار دهید :

(x=linspace(a,b,n<<


افزودن بردار b به امتداد بردار a :

[x=[a,b<<


افزودن بردار b به امتداد بردار a در صورتیکه هر دو ستونی باشند :

[x=[a;b<<


اگر a , b ستونی باشند دو ستون را کنار هم قرار می دهد و تشکیل یک ماتریس می دهد :

[m=[a,b<<


ایجاد یک آرایه رشته ای :

's='matlab<<

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

 

Matrix Definition - تعریف ماتریس

MATLAB - متلب - Array & Vector & Matrix - بردارها و ماتریس ها

 


ایجاد ماتریس شبیه آرایه می باشد ولی با این تفاوت که برای جدا کردن سطر ها باید بین اعداد یک سطر سمی کالن ; گذاشت :

[m[1 2 3 ; 4 5 6 ; 7 8 9<<

m یک ماتریس 3*3 می باشد.


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

m(1,1)=10<<

m(1,2)=20<<

m(2,1)=30<<

m(2,2)=40<<

با این روش اندیس تک تک سطرها و ستون ها را مشخص کرده و عدد مربوطه را جایگذین می کنیم.


با استفاده از اندیس های سطر و ستون می توان به اعضای ماتریس دسترسی داشت. در مثال زیر به عضوی که در سطر 2 و ستون 1 ماتریس m قرار دارد دسترسی پیدا می کنیم :

(m(2,1<<


کلمه کلیدی nan به معنای تهی بودن و inf به معنی بینهایت می باشد. حال می خواهیم عنصری که در سطر 1 و ستون 1 ماتریس m می باشد را به تهی و عنصری که در سطر 2 و ستون 2 می باشد را بینهایت کنیم :

m(1,1)=nan<<

m(2,2)=inf<<


برای حذف کردن یک سطر یا ستون از ماتریس از دو کوروشه خالی به شکل زیر استفاده می شود. دقت داشته باشید که نمی توان یک عنصر بخصوصی را حذف کرد و فقط می توان آن عنصر را nan یا inf کرد در مثال زیر می خواهیم سطر اول ماتریس m را پاک کنیم :

[]=(:,m(1<<

گذاشتن کالن : بعد از کاما به این معنی است که می خواهیم همه ستون های سطر 1 حذف شوند. پس اگر همه ستون های سطر 1 حذف شوند یعنی خود سطر 1 حذف شده است.

در مثال زیر می خواهیم ستون اول ماتریس را حذف کنیم :

[]=(m(:,1<<

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


مثال : ستون 1 تا 5 را بصورت یک در میان ، از ماتریس m که یک ماتریس 5*5 میباشد حذف کنید ؟

جواب :

[]=(m(:,1:2:5<<


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

(sqrt(m<<


در صورتیکه نقطه یا دات . قبل از ضرب ، تقسیم و توان بیاید به این عملگر ها ، عملگر های مولفه ای گویند و آنها عناصر درون ماتریس ها را مولفه به مولفه به هم ضرب ، تقسیم و به توان می رسانند. حال فرض m و n دو ماتریس باشند در مثال زیر اعضای نظیر هم به هم ضرب می شوند توجه داشته باشید که ماتریس ها باید هم بعد باشند :

m.*n<<


و برای ضرب و تقسیم معمولی ماتریس ها به ترتیب زیر عمل می کنیم :

m*n<<

m/n<<


به راحتی می توان اعضای نظیر هم را با هم جمع و تفریق کرد :

m+n<<

m-n<<


مثال : عناصر درون ماتریس m را به عدد 2 ضرب کرده و 1 واحد کم کنید ؟

جواب :

m*2-1<<


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

'm<<


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

[m=[5:5:30 ; 30:5:55<<

یک ماتریس با 2 سطر و 6 ستون ساختیم.


اگر بردار b سطری باشد و A یک ماتریس که تعداد اعضای سطر های آن برابر با b باشد ، دستور زیر یک سطر جدید در زیر ماتریس ایجاد کرده و بردار b را به آنجا میافزاید :

[c=[A;b<<

برای اینکه بتوان بردار b را به اول ماتریس اضافه کرد در اینصورت در دستور بالا جای b , A را عوض می کنیم.


اگر بردار b ستونی باشد و A یک ماتریس که تعداد اعضای ستون های آن برابر با b باشد ، دستور زیر یک ستون جدید در سمت راست ماتریس ایجاد کرده و بردار b را به آنجا میافزاید :

[c=[A,b<<

برای اینکه بتوان بردار b را به سمت چپ ماتریس اضافه کرد در اینصورت در دستور بالا جای b , A را عوض می کنیم.

جعبه ابزار اصلی - قسمت دوم

MATLAB - متلب - Array & Vector & Matrix - بردارها و ماتریس ها

 


ماتریس و بردار های زیر را در نظر می گیریم ، ماتریس n تقریبا خالی می باشد :

[m=[1 2 nan;3 4 inf;7 8 9

[a=[4 5 6

[n=[0 0 1;0 2 0;3 0 0

[k=[9 8 7;6 5 4;3 2 1


دستور زیر درایه هایی را که در بردار یا ماتریس ، nan هستند با 1 و سایرین را با 0 نشان می دهد :

(isnan(m<<


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

(ischar(m<<


نشان می دهد که آیا بردار یا ماتریس تهی است یا نه :

(isempty(m<<


مکان هایی که دارای عدد اول هستند را با 1 و سایرین را با 0 نشان می دهد :

(isprime(k<<


جمع اعداد درون آرایه یا جمع ستون های ماتریس :

(sum(m<<


جمع سطر های ماتریس :

('sum(m<<


حاصلضرب اعداد درون آرایه یا حاصلضرب ستون های ماتریس :

(prod(m<<

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


عناصر قطر اصلی ماتریس :

(diag(m<<

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


ایجاد ماتریس جادویی n*n که جمع سطر و ستون و قطر یکی است :

(magic(n<<


ماتریس پاسکال خیام :

(pascal(n<<


ماتریس همانی :

(eye(n<<


ماتریس m*n که همه درایه های آن 1 می باشد :

(ones(m,n<<


ماتریس m*n که همه درایه های آن 0 می باشد :

(zeros(m,n<<


تولید یک ماتریس n*n از اعداد تصادفی با توزیع نرمال و واریانس واحد :

(randn(n<<


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

(std(a<<


در صورتیکه از عملگر های مقایسه ای برای یک آرایه یا ماتریس به شکل زیر استفاده کنیم ، در جواب ، آرایه یا ماتریسی می دهد که درایه هایش 1 و 0 بوده و مشخص کننده عمل مقایسه انجام شده روی درایه های آرایه یا ماتریس می باشد :

m>2<<

اینجا اعدادی را که بزرگتر از 2 هستند را با 1 و سایرین را با 0 مشخص می کند.

m~=0<<


دستور زیر مانند عملگر های مقایسه ای بالا 1 و 0 تولید نمی کند و دقیقا اندیس سطر و ستون (i,j) عددی را که در مقایسه قبول شده است را می دهد :

(i,j]=find(m>2]<<

اینجا اندیس i و j (سطر و ستون) اعضایی از ماتریس را که بزرگتر از 2 هستند را مشخص می کند.


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

(z=sparse(n<<


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

(full(z<<


معکوس ماتریس :

(inv(k<<


دستور زیر در جواب دو عدد ماتریس به نام های v و d می دهد که ستون های v بردار های ویژه ماتریس k است و قطر اصلی d مقادیر ویژه k می باشد :

(v,d]=eig(k]<<


چند جمله ای مشخصه ماتریس :

(p=poly(k<<


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

(r=roots(p<<


اگر r ریشه های یک چند جمله ای باشد ، خود چند جمله ای را می دهد :

(p=poly(r<<


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

(rank(k<<


دترمینان ماتریس :

(det(k<<


ایجاد یک ماتریس پله ای متشابه با k :

(rref(k<<


ایعاد یا سایز ماتریس که تعداد سطر و ستون را می دهد :

(r,c]=size(k]<<


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

کوچکترین عدد در ماتریس یا آرایه :

(min(k<<

بزرگترین عدد :

(max(a<<

مجموع اعداد در ستون های ماتریس یا آرایه :

(sum(k<<

میانگین اعداد :

(mean(a<<

میانه اعداد :

(median(k<<

جمع انباشتی اعداد :

(cumsum(a<<

ضرب انباشتی :

(cumprod(k<<

مرتب سازی اعضای ستون های ماتریس یا آرایه :

(sort(a<<


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

(all(k<<


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

(any(a<<


واژگون کردن سطر های ماتریس :

(flipud(k<<


واژگون کردن ستون های ماتریس :

(fliplr(k<<


چرخاندن ماتریس به اندازه 90 درجه در خلاف جهت عقربه های ساعت :

(rot90(k<<


بخش پایین مثلثی ماتریس را می دهد :

(tril(k<<


بخش بالا مثلثی ماتریس را می دهد :

(triu(k<<


تجزیه چولسکی ماتریس معین مثبت :

(chol(k<<


تعداد عناصر ماتریس :

(numel(k<<


مشخص کردن اینکه آیا دو بردار یا ماتریس مانند هم هستند یا نه که 0 یا 1 بر می گرداند :

(isequal(k,n<<


عدد وضعیت ماتریس :

(cond(k<<


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

(hess(k<<


L1 - نرم :

(norm(k,1<<


L2 - نرم یا نرم اقلیدسی :

(norm(k,2<<


∞L - نرم :

(norm(k,inf<<


Lp - نرم :

(norm(k,p<<


متعامد سازی :

(orth(k<<


تجزیه QR ماتریس :

(q,r]=qr(k]<<


مجموع عناصر قطر اصلی :

(trace(k<<


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

(cov(k<<


ماتریسی را می دهد که ستون هایش پایه ای برای فضای ستونی k باشد :

(colspace(k<<


ایجاد ماتریس هیلبرت n*n : ( اینجا n یک عدد است )

(hilb(n<<


در صورتیکه بردار یا ماتریس عضو inf یا nan نداشته باشد 1 بر می گرداند و در غیر اینصورت 0 :

(isfinite(m<<


فرم جردن ماتریس :

v : ستون هایش بردار های ویژه می باشند.

j : ماتریسی قطری است که اعداد قطر ، مقادیر ویژه اند و همان ماتریس قطری جردن می باشد.

(v,j]=jordan(k]<<





http://www.amirhk.com/matlab/array-vector-matrix/9-main-toolbox-part2.html

نویسندگان وبلاگ:
کدهای اضافی کاربر :