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

آموزش متلب mfile

آنچه که قبل از یادگیری HTML لازم است بدانید: برای شروع کار با HTML شما به چیزهایی نیاز دارید که در لیست زیر آمده است: ۱٫ شما به یک ویرایشگر متن نیاز دارید.

در ویندوز شما می توانید از برنامه Notepad استفاده کنید.

از هر نرم افزار ویرایش متن دیگری استفاده کنید اما این نکته را در نظر داشته باشید که نرم افزار WordPad که در ویندوز وجود دارد و نرم افزارهایی مانند Microsoft Office Word و امثال آن برای نوشتن کدهای HTML مناسب نیستند چون در هنگام ذخیره کردن متن این نرم افزارها کدهایی را به آن اضافه می کنند.
نرم افزار Notepad را می توانید از طریق منوی استارت در قسمت Accessories پیدا کنید یا از طریق فرمان Run با تایپ notepad در کادر Open و فشار دادن دکمه Enter.
2.

شما به یک مرورگر وب به انتخاب خود نیاز دارید.

می توانید از Microsoft Internet Explorer استفاده کنید که با ویندوز نصب می شود یا از Opera, Mozilla Firefox و نرم افزارهای مشابه که اغلب به صورت رایگان برای دانلود در اینترنت وجود دارند.
بهتر است صفحاتی را که می نویسید با چند مرورگر آزمایش کنید.

زیرا در HTML قسمتهایی وجود دارد که مختص به یک مرورگر خاص است و با سایر مرورگرها کار نمی کند.
۳٫ شما به جایی برای ذخیره کردن متن خود دارید که می تواند جایی روی هارد دیسک شما، یک فلاپی دیسک یا یک سرور باشد.

البته شما برای استفاده از HTML نیاز ندارید حتماً به اینترنت متصل باشید، شما می توانید با استفاده از یک مرورگر وب در کامپیوتر خود از HTML استفاده کنید.
برای ذخیره کردن فایلی که با Notepad نوشته اید کافی است از منوی File گزینه Save As را انتخاب کرده و مسیری را برای ذخیره فایل انتخاب کنید و در کادر File Name در پایین پنجره Save As نام فایل را با پسوند html بنویسید.

در آخر هم دکمه Save را کلیک کنید.
نویسنده: پ متلب - جمعه ۱۸ فروردین ،۱۳٩۱

MATLAB Function (*.m files) Editing, Executing and Displaying Help


MATLAB functions are just script files and must have the MATLAB extension "m", such as "circle.m".

  • Editing MATLAB Function Files: Modifying or creating or saving MATLAB script function files, whether on PCs/Macs or Unix/Linux workstations, are edited the same way you normally edit files on those platforms:
    1. PCs/Macs: To create a new function run you favorite Edit application, select a "New" file, type in your MATLAB commands for the function, and "Save As" file name [function].m when finished. If the function script file already exists, that start with "OPEN File" instead.
    2. Unix/Linux workstations: To create a new script function or to modify an existing one type in the command of your favorite editor like vi, emacs or other with the name [function].m as argument, type in your MATLAB commands for the function, and save when finished. Editing can also be done on the Unix/Linux MATLAB command line using the bang escape "!", for example

       

      >> !vi [function].m 
      but "!emacs" can also be used, yet beware of carpel tunnel syndrome.

    Hint: Square brackets are used here to denote general items for the user as to type in actual names when actually used in MATLAB, such as "[function]", but in MATLAB square brackets are also used for marking arrays that are being initialized on assignment.

    Hints : The percent sign "%" marks the beginning of a comment, so if a "%" appears in a line (except as a format specifier in a "fprintf" or "sprintf" argument, its other purpose), the rest of the line to the right is a comment, but the first set of lines marked at the beginning of the line before any MATLAB commands are Header lines that are listed when you use the MATLAB "help" command:

     

    >> help [function] 
    for the script file [function].m, whether user or MATLAB built-in function. Also, the header lines are also search for keywords by the MATLAB "lookfor" command, e.g.,

     

    >> lookfor [keyword] 

    Hints: The semicolon ";" at the end of a MATLAB command line suppressed MATLAB output for that command, but semicolon are also used for separating rows in array initialization forms.

  • Executing an Existing Function Files: In MATLAB, type the name of the function without the ".m" extension on the command line, for example for circle.m, type

     

    >> circle 
  • Displaying MATLAB Function Script File Content In MATLAB: On the MATLAB command line use the "type" command with the ".m" extension, for example,

     

    >> type circle.m 
  • Sample MATLAB Function Script File: The simple example "circle.m should plot a unit circle when executed:

     

    % Circle - Script file to draw unit circle % modified from "Getting Started with MATLAB" by Rudra Pratap 9/14/94 format compact % tightens loose format format long e % makes numerical output in double precision theta = linspace(0,2*pi,100); % create vector theta x = cos(theta); % generate x-coordinate y = sin(theta); % generate y-coordinate plot(x,y); % plot circle axis('equal'); % set equal scale on axes per pixel title('Circle of unit radius') % put title c=2*pi % prints out 2*pi value disp('end circle.m') % prints out literal string. % End Circle
    

Web Source: http://www.math.uic.edu/~hanson/MATLAB/MATLABfunctions.html

Email Comments or Questions to hanson@uic.edu

نویسنده: پ متلب - جمعه ۱۸ فروردین ،۱۳٩۱

آموزش Matlab فارسی و رایگان

در نرم افزار آموزش Matlab موجود در سایت www.learninweb.comبا مباحث زیر آشنا میشوید:

 

فصل اول : آشنایی با نرم افزار Matlab
اجرای برنامه
اجزای مختلف برنامه
تغییر محیط برنامه
بررسی منوها

فصل دوم : ماتریس ها، آرایه ها و توابع در Matlab
روش تعریف ماتریس
انجام عملیات بر روی ماتریسها
عملگرهای MATLAB
بررسی توابع MATLAB

فصل سوم : کار با فایلهای M
ایجاد فایل M
اجرای فایل M
ذخیره مقدار متغیر در فایل Mat
بررسی فایلهای Function
بررسی فایلهای script

فصل چهارم : کار با اعداد و ساختارها در Matlab
نحوه نمایش اعداد
تعریف ساختار
حذف و اضافه فیلد

فصل پنجم : رسم نمودارها در Matlab
مقدمه
رسم نمودار اعداد مختلط
بررسی خصوصیات دستور Text
افزودن راهنما به نمودار
نمایش چند نمودار یک پنجره
روش رسم نمودارهای قطبی

فصل ششم : رسم نمودارهای سه بعدی و گراف در Matlab
دستور Plot3
نمودار میله ای (Bar)
رسم نمودار دایره ای (Pie)
نمودارهای Histogram

فصل هفتم : کار با جعبه ابزار Symbolic Math در Matlab
مقدمه
مشتق
ژاکوپین
حد و انتگرال
مجموع
راهنمای جعبه ابزار سمبلیک
روش حل معادلات جبری
روش حل معادلات دیفرانسیل
تبدیل فوریه و معکوس آن
تبدیل لاپلاس و معکوس آن
تبدیل Z و معکوس آن
روش رسم نمودار

فصل هشتم : برنامه نویسی در فایلهای M در Matlab
مقدمه
عملگرها
ساختار For
ساختار While
ساختار If
ساختار Switch

و چندین نکته آموزشی دیگر در Matlab7 

http://www.learninweb.com/product_detail.php?uid=47

 
نویسنده: پ متلب - جمعه ۱۸ فروردین ،۱۳٩۱

Contents

Introduction

  1. Accessing MATLAB
  2. Entering matrices
  3. Matrix operations, array operations
  4. Statements, expressions, variables; saving a session
  5. Matrix building functions
  6. For, while, if --- and relations
  7. Scalar functions
  8. Vector functions
  9. Matrix functions
  10. Command line editing and recall
  11. Submatrices and colon notation
  12. M-files
  13. Text strings, error messages, input
  14. Managing M-files
  15. Comparing efficiency of algorithms: flops and etime
  16. Output format
  17. Hard copy
  18. Graphics
  19. Reference

 

1. Accessing MATLAB

On most systems, after logging in one can enter MATLAB with the system command matlab and exit MATLAB with the command exit or quit. On a PC, for example, if properly installed, one may enter MATLAB with the command:

C> matlab

and exit it with the command:

>> quit

On systems permitting multiple processes, such as a Unix system, you will find it convenient, for reasons discussed in section 14, to keep both MATLAB and your local editor active. If you are working on a workstation which runs processes in multiple windows, you will want to keep MATLAB active in one window and your local editor active in another. You should consult your instructor or your local computer center for details of the local installation.

2. Entering matrices

MATLAB works with essentially only one kind of object---a rectangular numerical matrix with possibly complex entries; all variables represent matrices. In some situations, 1-by-1 matrices are interpreted as scalars and matrices with only one row or one column are interpreted as vectors.

Matrices can be introduced into MATLAB in several different ways:

  • Entered by an explicit list of elements,
  • Generated by built-in statements and functions,
  • Created in M-files (see sections 12 and 14 below),
  • Loaded from external data files (see User's Guide).

For example, either of the statements

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

and

A = [
1 2 3
4 5 6
7 8 9 ]

creates the obvious 3-by-3 matrix and assigns it to a variable A. Try it. The elements within a row of a matrix may be separated by commas as well as a blank.

When listing a number in exponential form (e.g. 2.34e-9), blank spaces must be avoided. Listing entries of a large matrix is best done in an M-file, where errors can be easily edited away (see sections 12 and 14).

The built-in functions rand, magic, and hilb, for example, provide an easy way to create matrices with which to experiment. The command rand(n) will create an n x n matrix with randomly generated entries distributed uniformly between 0 and 1, while rand(m,n) will create an m x n one. magic(n) will create an integral n x n matrix which is a magic square (rows and columns have common sum); hilb(n) will create the n x n Hilbert matrix, the king of ill-conditioned matrices (m and n denote, of course, positive integers). Matrices can also be generated with a for-loop (see section 6 below).

Individual matrix and vector entries can be referenced with indices inside parentheses in the usual manner. For example, A(2,3) denotes the entry in the second row, third column of matrix A and x(3) denotes the third coordinate of vector x. Try it. A matrix or a vector will only accept positive integers as indices.

3. Matrix operations, array operations

The following matrix operations are available in MATLAB: 

+ addition
- subtraction
* multiplication
^ power
' transpose
\ left division
/ right division

These matrix operations apply, of course, to scalars (1-by-1 matrices) as well. If the sizes of the matrices are incompatible for the matrix operation, an error message will result, except in the case of scalar-matrix operations (for addition, subtraction, and division as well as for multiplication) in which case each entry of the matrix is operated on by the scalar.

The "matrix division" operations deserve special comment. If A is an invertible square matrix and b is a compatible column, resp. row, vector, then

x = A \ b is the solution of A * x = b and, resp.,
x = b / A is the solution of x * A = b.

In left division, if A is square, then it is factored using Gaussian elimination and these factors are used to solve A * x = b. If A is not square, it is factored using Householder orthogonalization with column pivoting and the factors are used to solve the under- or over-determined system in the least squares sense. Right division is defined in terms of left division by b / A = (A' \ b')'.

Array operations. The matrix operations of addition and subtraction already operate entry-wise but the other matrix operations given above do not---they are matrix operations. It is important to observe that these other operations, *, ^, \, and /, can be made to operate entry-wise by preceding them by a period. For example, either [1,2,3,4].*[1,2,3,4] or [1,2,3,4].\^2 will yield [1,4,9,16]. Try it. This is particularly useful when using Matlab graphics.

4. Statements, expressions, and variables; saving a session

MATLAB is an expressionlanguage; the expressions you type are interpreted and evaluated. MATLAB statements are usually of the form

variable = expression, or simply
expression

Expressions are usually composed from operators, functions, and variable names. Evaluation of the expression produces a matrix, which is then displayed on the screen and assigned to the variable for future use. If the variable name and = sign are omitted, a variable ans(for answer) is automatically created to which the result is assigned.

A statement is normally terminated with the carriage return. However, a statement can be continued to the next line with three or more periods followed by a carriage return. On the other hand, several statements can be placed on a single line if separated by commas or semicolons.

If the last character of a statement is a semicolon, the printing is suppressed, but the assignment is carried out. This is essential in suppressing unwanted printing of intermediate results.

MATLAB is case-sensitive in the names of commands, functions, and variables. For example, solveUT is not the same as solveut.

The command who will list the variables currently in the workspace. A variable can be cleared from the workspace with the command clear variablename. The command clear alone will clear all nonpermanent variables.

The permanent variable eps (epsilon) gives the machine precision---about 10^(-16) on most machines. It is useful in determining tolerences for convergence of iterative processes.

A runaway display or computation can be stopped on most machines without leaving MATLAB with CTRL-C (CTRL-BREAK on a PC).

Saving a session. When one logs out or exits MATLAB all variables are lost. However, invoking the command save before exiting causes all variables to be written to a non-human-readable diskfile named matlab.mat. When one later reenters MATLAB, the command load will restore the workspace to its former state.

5. Matrix building functions

Convenient matrix building functions are 

eye identity matrix
zeros matrix of zeros
ones matrix of ones
diag see below
triu upper triangular part of a matrix
tril lower triangular part of a matrix
rand randomly generated matrix
hilb Hilbert matrix
magic magic square
toeplitz see help toeplitz

For example, zeros(m,n) produces an m-by-n matrix of zeros and zeros(n) produces an n-by-n one; if A is a matrix, then zeros(A) produces a matrix of zeros of the same size as A.

If x is a vector, diag(x) is the diagonal matrix with x down the diagonal; if A is a square matrix, then diag(A) is a vector consisting of the diagonal of A. What is diag(diag(A))? Try it.

Matrices can be built from blocks. For example, if A is a 3-by-3 matrix, then

B = [A, zeros(3,2); zeros(2,3), eye(2)]

will build a certain 5-by-5 matrix. Try it.

6. For, while, if --- and relations

In their basic forms, these MATLAB flow control statements operate like those in most computer languages.

For. For example, for a given n, the statement

x = []; for i = 1:n, x=[x,i^2], end

or

x = [];
for i = 1:n
x = [x,i^2]
end

will produce a certain n-vector and the statement

x = []; for i = n:-1:1, x=[x,i^2], end

will produce the same vector in reverse order. Try them. Note that a matrix may be empty (such as x = []). The statements

for i = 1:m
for j = 1:n
H(i, j) = 1/(i+j-1);
end
end
H

will produce and print to the screen the m-by-n hilbert matrix. The semicolon on the inner statement suppresses printing of unwanted intermediate results while the last Hdisplays the final result.

While. The general form of a while loop is

while relation
statements
end

The statements will be repeatedly executed as long as the relation remains true. For example, for a given number a, the following will compute and display the smallest nonnegative integer n such that 2^n>= a:

n = 0;
while 2^n < a
n = n + 1;
end
n

If. The general form of a simple ifstatement is

if relation
statements
end

The statements will be executed only if the relation is true. Multiple branching is also possible, as is illustrated by

if n < 0
parity = 0;
elseif rem(n,2) == 0
parity = 2;
else
parity = 1;
end

In two-way branching the elseif portion would, of course, be omitted.

Relations. The relational operators in MATLAB are 

< less than
> greater than
<= less than or equal
>= greater than or equal
== equal
~= not equal.

Note that "=" is used in an assignment statement while "==" is used in a relation. Relations may be connected or quantified by the logical operators 

& and
| or
~ not.

When applied to scalars, a relation is actually the scalar 1 or 0 depending on whether the relation is true or false. Try 3 < 5, 3 > 5, 3 == 5, and 3 == 3. When applied to matrices of the same size, a relation is a matrix of 0's and 1's giving the value of the relation between corresponding entries. Try a = rand(5), b = triu(a), a == b.

A relation between matrices is interpreted by while and if to be true if each entry of the relation matrix is nonzero. Hence, if you wish to execute statement when matrices A and B are equal you could type

if A == B
statement
end

but if you wish to execute statement when A and Bare not equal, you would type

if any(any(A ~= B))
statement
end

or, more simply,

if A == B else
statement
end

Note that the seemingly obvious

if A ~= B, statement, end

will not give what is intended since statement would execute only if each of the corresponding entries of A and B differ. The functions any and all can be creatively used to reduce matrix relations to vectors or scalars. Two any's are required above since anyis a vector operator (see section 8).

The for statement permits any matrix to be used instead of 1:n. See the User's Guide for details of how this feature expands the power of the for statement.

7. Scalar functions

Certain MATLAB functions operate essentially on scalars, but operate element-wise when applied to a matrix. The most common such functions are 

sin asin exp abs round
cos acos log (natural log) sqrt floor
tan atan rem (remainder) sign ceil

8. Vector functions

Other MATLAB functions operate essentially on a vector (row or column), but act on an m-by-n matrix (m >= 2) in a column-by-column fashion to produce a row vector containing the results of their application to each column. Row-by-row action can be obtained by using the transpose; for example, mean(A')'. A few of these functions are 

max sum median any
min prod mean all
sort   std

For example, the maximum entry in a matrix A is given by max(max(A)) rather than max(A). Try it


ادامه مطلب ...
نویسنده: پ متلب - جمعه ۱۸ فروردین ،۱۳٩۱

ترسیم دوبعدی

 

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

 

این ابزار شامل نمودارهای دوبعدی و سه بعدی و انواع نمودارهای

 

فراوانی می باشد.

 

 

Plot   رسم دوبعدی

 

   یکی از ابزارهای رسم نمودار توابع دوبعدی این دستور می باشد

 

 که نحوه ترسی آن دقیقاً مانند ترسیم دستی نمودار که خـــودمان

 

انجام می دهیم بدینگونه که در بازه خاصی x را معرفی می کـــنیم

 

وy متناظر هر کدام را بدست آورده و در پایان براساس اعـــــــــــداد

 

محاسبه شده نقاط مربوطه پیدا شده و نــــقاط به هم وصـــــــــل

 

 می شود. طبیعتاً هر چقدر فاصله نقاط کمتر باشد دقت ترسیم

 

 بهتر می شود.

 

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

 

>>x=-pi:pi/4:pi;

>>y=sin(x);

>>plot(x,y)

   

 

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

 

 حال دقت ترسیم را افزایش می دهیم:

 

                                                                                  

>>x=-pi:pi/10:pi;{enter}

>>y=sin(x);

>>plot(x,y)

 

 

 

در دستورات بالا در خط ول یک بازه به تعداد مشخص تقســیم می

 

 کنیم(xها را معرفی می کنیم) پس از آن در خط دوم مقــــدار y را

 

برای هرکدام ازxها پیدا می کنیم و در پایان در خط سوم نقاط پیاده

 

 شده و به هم وصل می شود.

 

  حال اگر بخواهیم دو نمودار cos,sin را کنار هـــــم رسم کنـــــیم،

 

کافیست در دستورplot مقدار محاسبه شده بـــرای cos را نیز قرار

 

دهیم.

 

این کار بدینگونه است، هر ترسیمی را که افزایـــش می دهیم، در

 

 دستورplot دقیقاً مانند دستور ترسیم یک نمودار پارامترها را پشت

 

 سر دستور آن می افزاییم به گونه ای که هـــــر جفت پارامتر برای

 

 کدام یک از ترسیمات پشت سرهم قرار گیرد.

 

باز اگر بخواهیم ترسیم دیگری اضافه کنیم مثــــل روش بالا اضافه

 

می کنیم.

>>x=-pi:pi/10:pi;

>>y=sin(x);

>>z=cos(x);

>>plot(x,y,z)

 

 

 

لطفاً به آخرین سطر دستورات توجه فرمایید.

 

حال اگر بخواهیم ترسیمات را با رنگ و یا... خاصی انــــجام دهیم

 

بدینگونه پیش می رویم.

 

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

 

 که داخل کوتیشن در دسترplot نوشته می شود.

 

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

plot(x,y,'r')

 

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

 

 کاری ندارد.

plot(x,y,'^')

 

این دستور به رنگ کـــــــــاری ندارد و فقط نقاط را با مثلث نمایش

 

می دهد.

plot(x,y,':')

 

این دستور فقط ترسیم را به صورت خط چین انجام می دهد.

 

 

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

 

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

(:^x,y,'r)plot

 

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

 

 

حرف اول رنگ (قرمز)... حرف دوم علامت(مثلث) و حرف سوم نوع

 

خط(نقطه چین) را تعیین می کند.

 

حروفات رنگ درplot                             حروفات ترسیم

b آبی                                               -  خط صاف

g سبز                                              :  نقطه چین

r قرمز                                               .-  خط نقطه

c فیروزه ای                                        --  خط چین

m بنفش                                           (خالی) بدون ترسیم خط

y زرد

k مشکی

 

حروفات نمایش نقطه

 

.       نقطه

O      دایره

X      ضربدر

+      علامت اضافه

*      ستاره

       sمربع

d      لوزی

^     مثلث(به طرف بالا)

      vمثلث(به طرف پایین)

     >مثلث(به طرف چپ)

     Pستاره پنج راسی  

     h ستاره شش راسی

 

گفتیم که می توان همه این حروفات را باهم ترکیب کرد بدینگونه که

 

('ترسیم,نقطه,رنگ') حال ترسیم بالایی را با تنظیمات جدیدانــــجام

 

می دهیم.

 

>>x=-pi:pi/10:pi;

>>y=sin(x);

>>z=cos(x);

>>plot(x,y,'b:d',x,z,'rp-.')

 

 

 

در خط آخر فرمان مربوط به ترسیم و تنظیمات را می بینیـــــم که

 

 تنظیمات مربوط به هر کدام از ترسیم بلافاصله پس از پارامتــرها

 

 می آید.

 

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

 

 

>>plot(x,y,'b:d',x,z,'rp-.')

پس از تعیین پارامترها (x,y) بلافاصله تنظیمات آن آماده اســت که

 

'b:d' می باشد که رنگ آن b آبی و نوع ترسیم آن :نقطـــه چین و

 

نشان نقطه آن d لوزی است... و ترسیم دوم که پارامترهـــــای آن

 

(x,z) و تنظیمات آن با رنگ قرمزr قرمز و نوع خط .- خط نقـــــطه و

 

 نقطه p  ستاره پنج راسی است.

 

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

 

>>plot(x,y,'b:d',x,z,'rp-.')

 

پس از تعیین پارامترها (x,y) بلافاصله تنظیمات آن آماده اســـــت

 

که'b:d' می باشد که رنگ آن b آبی و نوع ترسیم آن :نقطه چیـن

 

 و نشان نقطه آن d لوزی است... و ترسیم دوم که پارامترهـــای

 

آن(x,z) و تنظیمات آن با رنگ قرمزr قرمز و نوع خط .- خط نقــطه و

 

نقطه p ستاره پنج راسی است.

 

تنظیمات صفحه رسم

 

در مواردی لازم است که برای نموداری که ترسیم نموده ایم نــام

 

و توضیحات خاصی ارائه کنیم. این توضیحات ممکن اســــــــت نام

 

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

 

چند نمونه از ترسیمات:

 

 

Xlabel    برچسب محور x  

 

این دستور محور x را نامگذاری می کند.

Xlabel('string')

 

در دستور بالا به جای string کلـــــمه و حروفات مربوطـــه گــذارده

 

 می شود.

 

 

ylabel  برچسب محور y  

 

این دستور محور y را نامگذاری می کند.

ylabel('string')

 

در دستور بالا به جای string کلمه و حروفات مربوطـــــه گـــــذارده

 

می شود.

 

Tiltle    نام ترسیم

 

این دستور ترسیم را نامگذاری می کند.

Title('string')

به جای string نام مربوطه قرار می گیرد.

 

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

 

 

Legend     معلوم کردن رسم ها

 

اگر چندین نمودار رسم کرده باشیم ممکن است نتوانیم تشخـــیص

 

دهیم که کدام ترسیم مربوط یخ کدام نمودار است... بوســــــــــیله

 

دستور legend می توانیم برحسب رنگ و نوع ترسیم نمــــودارها را

 

از هم تمیز دهیم.

Legend('string 1','string 2')

 

ترتیب نوشتن نام ها بدینگونه است که در دستور plot هرکـــــدام از

 

نمودارها ترسیم شده در اینجا نیز همانوگونه عمل می شود.

 

 

 

به مثال زیر توجه فرمایید:

 

x=-pi:pi/10:pi

y=sin(x)

                                                                                     z=cos(x)                                                                               

plot(x,y,'r>-',x,z,'bd__')

xlabel('x')

ylabel('sin&cos')

title('sin&cos functions')

legend('sin','cos')

text(0,0,'sin')

text(1.7.,0,'cos')

 

 

در دستورات بالا text استفاده شده که برای نوشتن جمـــله ای در

 

مکان خاصی (مختصات) بکار می رود.

Text(x,y,'string')

  

چند ترسیم در یک صفحه

 

گفتیم که می توان در دستور plot چندین ترسیم را یکـــجا انجـام

 

داد. ولی اگر نتوانیم بصورت یکجا ترسیم کنیم و یا نـــــخـــــواهیم

 

ترسیمات بر روی هم بیافتد چه کار کنین.

 

  در دستور plot قبل از ترسیم صفحه پـــــاک می شــود(می توان

 

گفت دستور clf اجرا می شود) ولی وقتی بخـــواهیم بــــــــر روی

 

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

 

قبلی پاک نشود.

 

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

 

Hold     نگه داشتن ترسیم

 

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

 

تا نمودارهای بعدی بر روی نمودار اولی بیافتد(در این نمودارها همه

 

رنگ ها و نوع خط یکسان خواهند بود زیرا به طور جداگانه ترسیم می

 

شوند و از رنگ و نوع خط اولیه استفاده می کنند.

 

این دستور به صورت روشن و خاموش استفاده می شود.

Hold on

 

Hold off

 تا زمانی که hold در حالت روشن است هیچ نموداری پــاک نخواهد

 

 شد و همه بر روی هم خواهد افتاد.

 

ولی زمانی است که نمی خواهیم نمودارها روی هم بیافتد.

 

بوسیله دستورsubplot صفحه ترسیم را به تعداد مشخص تقـسیــم

 

 می کنیم.

 

بدینگونه که صفحه ترسیم را تقسیم کرده و قسمـت موردنـــــظر را

 

معلوم کرده و نمودار مربوطه را رسم می کنــــــیم و ســــپس نام و

 

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

 

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 می سازیم.

   

Meshgrid    تشکیل شبکه

 

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

 

[x,y]=meshgrid(x)   ->=      [x,y]=meshgrid(x,x)

[x,y]=meshgrid(x,y,z)

 

اگر یک مثال کوچک برای این دستور بزنیم:

 

>>[x,y]=meshgrid(-2,2)

X=

-2  -1  0  1  2

-2  -1  0  1  2

-2  -1  0  1  2

-2  -1  0  1  2

-2  -1  0  1  2

Y=

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0   0   0  0  0    

1   1   1  1  1

2   2   2  2  2

 

می بینید که این دستور ماتریس 2*2 می سازد و اگر بیشتر دقت کنید

 

می بینید که هر کدام از سطر y و یا ستون x می تواند معرف یــک خط

 

باشد(یک سری خط موازی عمودی و افقی) که با تعریف z می توان به

 

سطح دست یافت.

 

 

 

>>z=x.^2+y.^2

Z=

8 5 4 5 8

5 2 1 2 5

4 1 0 1 4

5 2 1 2 5

8 5 4 5 8

 

کهz را براساس مقادیرx,y  بدست می آوریم((می دانیم کهx^2 یــــک

 

تابع دوبعدی کاسه ای است وy^2 نیز همچنین وقتی این دو در جهات

 

 باهم ترکیب شوند یک کاسه سه بعدی ساخته خواهد شد)).

 

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

>>mesh(x,y,z)

 

می بینید که دقت ترسیم خیلی پایین است و آن هم به این دلــیل

 

 است که تعداد تقسیمات کم بوده است.

 

 Mesh   رسم شبکه تشکیل شده

 

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

 

سطح نمایش داده شده توسط این دستور صرفاً یک شبکه است.

 

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

Mesh(x,y,z)

 

کهx,y,z با meshgrid تعیین شده اند.

 

مثال این دستور در  ذکر شده است. که رسم دقیق آن به صورت زیر

 

است.

>>[x,y]=meshgrid(-3:0.1:3)

>>z=x.^2+y.^2

>>mesh(x,y,z)

>>colorbar

>>title('mesh plotting for z=x^{2}+y^{2}')

 

نویسنده: پ متلب - جمعه ۱۸ فروردین ،۱۳٩۱

ترسیم توابع

 

 ترسیم توابع که در متلب به easy plotting معـــــروف است فقط با

 

معرفی تابع نمودار آن را رسم می کند.

 

در اینجا به چند نمونه از دستورات اشاره می شود.

 

 

 

Ezplot رسم توابع دوبعدی

 

 

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

 

>>ezplot('sin(x)')

 

 

 

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

 

Ezplot3  رسم سه بعدی

 

  در این دستور باید هر سه مولفه را تعریف نمود(البته باز براساس

 

تابع) به این مثال توجه فرمایید:

 

>>ezplot3('cos(t)',sin(t)'sqrt(t)',[0.6*pi])

 

 

 

Ezmesh    رسم شبکه برای تابع

 

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

 

>>ezmesh('(x^2+y^2'))

>>colorbar

>>title('easy mesh plotting')

 

 

Ezsurf   ترسیم سطح برای توابع

 

 دقیقاً مانند دستورات بالا ترسیم سطح را بصورت رنگ و سایه برای

 

سطح را انجام می دهد.

 

>>ezsurf(' (x^2+y^2'))

>>colorbar

>>title('easy surf plotting')

 

 

 

نمودارهای آماری

 

Bar      نمودار میله ای

 

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

 

>>a=rand(1,100);

>>bar(a)

 

 

 

Hist   نمودار فراوانی

 

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

 

>>a=rand(1,100);

>>hist(a)

 

 

 

Stairs      نمودار پله ای

>>a=rand(50,1);

>>stairs(a)

 

 

نویسنده: پ متلب - جمعه ۱۸ فروردین ،۱۳٩۱

تابع Function 

 

میتوان گفت بیشتر دستر ها وتوابعی که در متــــــــلب به کار

 

میگیریم دارای یکm-file هستند بدین معنی که برنامه ای برای

 

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

 

ولی همه این نوابع از سیستم خاصی کهfunction آنها را موظف

 

می کند پیروی می کنند.

 

پس باید برای ساختن یک تابع کمی متفاوت تر از برنامه معمولی

 

عمل کنیم.

 

در صورتی که می خواهید مثالی از این تابع ببینید ،میتوانید به

 

شاخه \MATLAB7\toolbox رفته و از داخل یکی از جـــــعبه

 

 ابزارها یک m-file را باز کنید.می بینید که هر کدام برنــامه ای

 

کامل است .

 

ولی چیزی که شاید توجه تان را جلب کند سطر اول همـــــه

 

برنامه هاست که با function شروع میشود .

 

Function  output= function  name (input)                      

 

 

( input,outputپارامتر ورودی وخروجی هستند function  name

 

 نام تابع است).

 

اگر برنامهای را بصورت تابع نوشته ایم میتــــــوانیم در هر جایی

 

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

 

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

 

شاید با عنوان کردن این موضوع این سوال برایتان پیـــش اید که

 

 چگونه برنامه نوشته شده را به تابع تبدیل کنیم؟  بــــاید بگوییم

 

تبدیل برنامه نوشته شده به تابع بجز اضافه وکم کـــــــردن  چند

 

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

 

 را به تابع تبدیل کنید چند دقیقه بیشتر طول نخواهد کــــــــشید

 

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

 

 انجام خواهید داد.

 

همه میدانیم که ورودی تابع را با خود تابع وارد میکـنیم و در حین

 

اجرای تابع هیچ مقداری وارد نمی کنیم. پس در برنامه نوشـــته

 

 شده برای تابع ،از دریافت هر گونه مقدار و ورودی در حین اجرا

 

باید بدور باشیم وهمه ورودی ها را در اول برنامه در دســــــــتور

 

 function تعریف نماییم.

 

هیچ تابعی پس اجرا جمله ویا علائم اخباری چاپ نمــی کند پس

 

 برای از چاپ ونوشته های راهنما و...بایــــد دوری کنیم وهـــمه

 

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

 

خط اول هر برنامه تابعی بدینگونه نوشته می شود:

 

                       

Function  output=  name (input)                                                           

                                  

در عبارت بالا :

 

Name،نام تابعی است که می سازیم که باید ایـــــــن نام با نام

 

 فامیل ذخیره شده یکی باشد وگرنه سیستم در هنگام استفاده

 

 کردن تابع خطا خواهد داد.

 

((تکرار می کنیم که حتماً تابع با نام فامیل ذخــیره شـــــــده اند

 

 یکی باشد)).

 

البته وقتی در سطر اول functionرا بکار ببریم سیــستم بصورت

 

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

 

Input  همان مقادیر ورودی است که در برنامه ها بیشتر باinput

 

دریافت می شود.

 

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

 

به ازای هر کدامیک پارامتر در داخل پرانتز قرار می دهــــیم.به این

 

  مثال توجه فرمایید:

 

((از اول یک تابع جمع سه عدد می نویسیم ونـــام آن را numadd 

 

می گذاریم))

 

(این دستورات به ترتیب در m-file نوشته میشوند)

 

اولی خط برنامه چنین خواهد بود:

 

Function  d= numadd(a,b,c)        

 

می بینید که در دســــتور function نام ورودی و خـــــروجی را

 

تعریف نمودیم ولی اگر مـــــــی خواســــتیم این دستورات را با

 

input بنویسیم باید فـــــقط ســــه بار دســــتور input استفاده

 

می کردیم.

 

حال سه عدد ورودی را با هم جمع کنیم و پاســــخ بـــرنامه را

 

نمایش دهیم.

                                                        

 

D=a+b+c;                                                                                   

 

 

یادتان باشد که تابع هایی را که میسازند در انتهای سطر ها ((;))

 

 قرار دهید تا نتیجه اجرای سطر نمایش داده نشود (البته برای بار

 

 اول خطا یابی طبیعتاً اینگونه نبست).

 

 

با اضافه کردن سطر دوم  برنامه تابع جمع سه عدد تمام شد آن

 

 را با فشار دادن کلیدsave در منوی file ذخیره می کـــــــنیم اگر

 

دقت کرده باشید می بینید که با فشار کــــلید save پنــــجره ای

 

برای دریافت نام ومسیر از شما می خواهد که مسیررا نباید تغییر

 

 داد والبته نام نمایش داده شده برای تابـــــع است که گفتیم باید

 

 یکی باشد پس باید بدون هیچ تغییری ذخیره کنیم.

 

اگر function دارای ورودی نباشد می توانیم ازm-file اجرا نماییم

 

(با فشار دادن f5).

 

 

>>numadd(1 ,2 ,3 )                                                                              

 

Ans=                                                                                          

6                                                                                              

که با اجرای برنامه پاسخ نمایش داده می شود.

 

اگر توضیحاتی  در مورد برنامه می خواهید بدهید بــــاید پس از

 

دستور function(خط اول )باید باشد .

 

                                                                            

Function d=numadd(a,b,c)                                                        

% this function is additional  of the three number                         

D=a+b+c                                                                                

                           

 

گفتیم چگونه m-file و  یا همان برنامه نوشته شــــــــده را به

 

function   تبدیل نماییم؟

 

به نظر میرسد تا حدی با نحوه انجام کار آشنا شـــــــده باشید.

 

ولی در چند جمله کوتاه می گوییم که:

 

همه ورودی ها (input…)  پاک شده وپارامتر مربوطه در ورودی

 

 تابع قرار داده شود.

 

همه خروجب ها وهر گونه چاپ و علائم  و نوشته ها (disp…)

 

  باید حذف گردد.

 

پس از اجرای برنامه تغییر داده شده وبدون خطا ،در پـــایان هر

 

 خط علامت ; گذارده شود.

 

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

 

این توابع برای تصمیم گیری  برای انجام کاری ویا انجام به دفعات

 

 بکار میرود.

 

این توابع به چند دسته تقسیم میشوند:

 

توابع شرطی

 

If این تا بع در صورت صــادق بودن شــــرط وارد شده دستورات

 

 معین شده را یکبار اجرا می کند.

 

whilel ایـــــن تابع تا وقتی که شرط وارد شده برقرار است

 

 دستورات وارد شده انجام خواهد شد وتعداد تکرار مهم نیست.

                                                          

Switch    این دستور تصمیم گیری در میان چندین موضـــــــوع

 

 همسان را بر عهده دارد تا حدی شبیه به دستور if  است.

 

For      بوسیله این دستور می توانیم قســــمتی از برنامه را به

 

 تعداد معلوم تکرار نماییم.

 

While    تکرار به دفعات نا متناهی را می توان انجام داد.

 

در پایان همه این دستورات ،دستور end اســـــتفاده میشود که

 

 نشان دهنده پایان چرخه است.

 

If……..end

 

گفتیم که این تابع برای اجرای قسمتی از برنامه  در صـــــــورت

 

صادق بودن شرط وارد شده به کار میرود.

 

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

 

 

                                                                     شرط تعیین شده  if

                                                                     دستورات وارد شده

                                                                               

 

 

End                                                                             

 

اگر شرط صدق کند دستورات داخل این عبارت اجرا میــــشود.

 

ولی اگر شرط صدق نکند کل عبارت if نادیده گرفــته میشود و

 

اجرای دستورات به بعد از خط end منتقل می شود.

 

میتوان چندین عبارت  if را داخل هم استفاده کرد.

 

به مثال زیر توجه فرمایید(در m-file نوشته شود):

 

A=input('please entered  2  and enter');                                      

If  a==2                                                                                    

Disp ('your entered number is 2');                                         

End                                                                                          

 

اجرای بر نامه:

 

 

Running the program…………….                                                  

 

Please enter  a number                                                               

   4                                                                                            

 

your entered number is not 2                                                       

else       در غیر این صورت

 

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

 

وارد شده صدق نکند دستورات وارد شده اجرا می شوند.

 

به مثال زیر توجه فرمایید(در m-file نوشته شود):

 

 

 

A=input('please enter number:');                                                           

If  a==2                                                                                             

Disp ('your entered number is 2');                                                    

Else                                                                                                   

   Disp ('your entered number is not 2');                                             

End           

 

اجرای بر نامه:

 

  

 

Running the program…………….                                                  

Please enter 2 and pess enter                                                     

2                                                                                             

 

your entered number is 2                                                          

                                                                                       

 

elseif      چند شرط همزمان

 

ممکن است در یک زمان چند شرط را هــمزمان وپشـــــت سر هم

 

 وارد کنیم این کار را بوسیله elseif انجام می دهیم.

 

به مثال زیر توجه فرمایید (در m-file نوشته می شود):

 

    

a=input(' Please enter  a number:')                                         

if a==2                                                                                

 Disp ('your entered number is 2');                                        

Elseif  a==3                                                                           

Disp ('your entered number is 3');                                      

Elseif  a==4                                                                          

Disp ('your entered number is 4');                                     

Else                                                                                    

Disp ('your entered number is not 2 3 4 ');                          

End                                            

نویسنده: پ متلب - پنجشنبه ۱٧ فروردین ،۱۳٩۱

1-1-عملیات ریاضی ساده
مثال: محاسبه یک عبارت:
    راه اول:
>> 4*25 + 6*22 + 2*99
    ans=
            430

1-2-عملیات ریاضی ساده
مثال: محاسبه یک عبارت:
    راه دوم:
 >>a=25;
 >>b=22; c=99;
 >>d=4*a+6*b+2*c
     d=
        430
 >>

1-3-عملگرهای ریاضی متلب:
\ / , * , - , + , ^
مثال:
>>5^2   
 ans=
        25
/ و \ هر دو عملگر تقسیم میباشند. / تقسیم از چپ و \  تقسیم از راست است. مثلا حاصل 56/8 و 8\56 یکسان است.
    ترتیب حق تقدم: ^ > / \ * > + -

1-4-فضای کاری متلب Work space

•    متغیرهایی که در محیط متلب ایجاد می شوند در بخشی از حافظه بنام محیط کاری متلب ذخیره می گردند. فضای کاری برنامه های اسکریپت متلب با فضای کاری متلب یکسان است. یعنی اگر متغیری در محیط متلب تعریف شده باشد در یک برنامه اسکریپت می توان از آن استفاده کرد و برعکس. اما برنامه های تابعی متلب دارای فضای کاری مختص به خود هستند و متغیرهای آنها در فضای کاری متلب وارد نمی شود.
•    در مورد انواع برنامه های متلب در فصلهای آتی توضیح داده خواهد شد


فضای کاری متلب Work space
نکاتی در مورد فضای کاری متلب:
زمان اعتبار متغیرها:
دستور who  و whos
ذخیره و بازیابی متغیرها: دستورات save و load


1-4-1-زمان اعتبار متغیرها
متغیرهایی که در فضای کاری تعریف می شوند تنها در دو حالت زیر از حافظه پاک خواهند شد:
خروج متلب
استفاده از دستور clear :
>> clear        تمامی متغیرها از حافظه پاک می شوند
>> clear a b c    تنها متغیرهای نامبرده شده از حافظه
پاک می شوند

1-4-2-دستورات who و whos
با استفاده از این دو دستور می توان اسامی(و مشخصات) متغیرهای موجود در فضای کاری را بدست آورد.
>> who
Your variables are:
    a b c
>> whos
 Name      Size                   Bytes  Class
  a         1x1                        8  double array
  b         1x1                        8  double array
  c         1x1                        8  double array
یادآوری: پنجره workspace  نیز مشخصات متغیرهای موجود در فضای کاری را مانند دستور whos  نشان می دهد.


1-4-3- ذخیره و بازیابی متغیرها: دستورات save و load:
در صورتیکه بخواهیم پس از خروج از محیط متلب همه یا بعضی از متغیرهای موجود در فضای کاری برای استفاده های بعدی ذخیره گردند از دستور save استفاده می کنیم. با دستور load می توان متغیرهای ذخیره شده را به فضای کاری بازگرداند.
مثال:
>>a=5; b=4; c=7;
>>save c:\myfile.mat a c;
>>clear  همه متغیرها پاک می شوند
>>a
??? Undefined function or variable 'a‘
>> load c:\myfile.mat
>>a
    a=
        5
>>b
??? Undefined function or variable 'a‘


1-4-3- ذخیره و بازیابی متغیرها: دستورات save و load:
فرم کلی کاربرد دستورات save و load بصورت زیر است:
save [filename] [variables]
Load [filename] [variables]
درصورتیکه اسم فایل نوشته نشود. فایل پیش فرض matlab.mat مورد استفاده قرار خواهد گرفت و درصورتیکه نام متغیرها نوشته نشود تمامی متغیرهای موجود در فضای کاری ذخیره و یا تمامی متغیرهای ذخیره شده در فایل بازیابی میشوند.


1-5-فرمت نمایش اعداد (دستور Format)
با استفاده از این دستور می توان نحوه نمایش اعداد در پنجره فرمان متلب را تغییر داد.
>>Format [option]
Option: short, long, short e, long e, short g, long g, hex, + , …
    دقت کنید که این دستور دقت محاسبات را تغییر نمی دهد و تنها بر نحوه نمایش اعداد تاثیر خواهد گذاشت.


1-4-3- ذخیره و بازیابی متغیرها: دستورات save و load:
فرم کلی کاربرد دستورات save و load بصورت زیر است:
save [filename] [variables]
Load [filename] [variables]
درصورتیکه اسم فایل نوشته نشود. فایل پیش فرض matlab.mat مورد استفاده قرار خواهد گرفت و درصورتیکه نام متغیرها نوشته نشود تمامی متغیرهای موجود در فضای کاری ذخیره و یا تمامی متغیرهای ذخیره شده در فایل بازیابی میشوند.


1-5-فرمت نمایش اعداد (دستور Format)
با استفاده از این دستور می توان نحوه نمایش اعداد در پنجره فرمان متلب را تغییر داد.
>>Format [option]
Option: short, long, short e, long e, short g, long g, hex, + , …
    دقت کنید که این دستور دقت محاسبات را تغییر نمی دهد و تنها بر نحوه نمایش اعداد تاثیر خواهد گذاشت


1-6- انواع متغیرها
بعضی از مهمترین انواع متغیر در متلب:
double  نقطه اعشار با دقت مضاعف (8 بایت):
struct    : نوع تعریف شده توسط کاربر
singleنقطه اعشار (4 بایت) :   
uint8    : عدد صحیح بی علامت 8 بیتی
uint16    :عدد صحیح بی علامت 16 بیتی
uint32  :      عدد صحیحی بی علامت 32 بیتی
uint64     : عدد صحیحی بی علامت 64 بیتی
int8     :  عدد صحیح 8 بیتی
int16     : عدد صحیح 16 بیتی
int32     : عدد صحیح 32 بیتی
int64     : عدد صحیح 64 بیتی
    برای دیدن لیست کامل انواع متلب در پنجره فرمان از دستور help datatypes استفاده کنید


1-6- انواع متغیرها
باید دقت کرد که  اگرچه متلب انواع مختلفی از متغیرها را پشتیبانی می کند اما نوع پیش فرض، نوع ”دقت مضاعف“ است. و برای تبدیل نوع یک متغیر باید دستور کلی زیر را بکار برد:
a=TypeName(a);
>> a=uint8(a); در اینجا نوع متغیر به صحیح بی علامت 8 بیتی تغییر می کند.
>> b = uint32(345); در اینجا یک متغیر از ابتدا از نوع صحیح بی علامت 32 بیتی تعریف شده است
    دقت: در هنگام تبدیل یا ایجاد یک متغیر باید دقت کنید که مقدار انتساب داده شده خارج از دامنه مقادیر آن نوع خاص نباشد. برای انواع صحیح می‌توانید از دستور زیر برای تعیین دامنه استفاده کنید:
>> intmin(‘int16’)
>> intmax(‘int16’)

استثناء: در مورد جعبه ابزار پردازش تصویر نوع پیش فرض نوع uint8 است


1-7- نامگذاری متغیرها
    اختلاف حروف کوچک و بزرگ
    با حرف الفبا باید شروع شود
    کاراکترهای مجاز: حروف الفبا، اعداد و _
    حداکثر طول نام: با استفاده از تابع namelengthmax در هر نسخه از MATLAB می‌تواند تعیین شود. در نسخه 2006، حداکثر 63 کاراکتر است.
    مراقب باشید متغیر شما با یک تابع درونی MATLAB یا تابعی که توسط خود شما نوشته شده است همنام نباشد. برای اطمینان از دستور which –all varName استفاده کنید
مثال:
>>This_Is_a_Variable

-8-متغیرهای ویژه1
متغیرهای زیر در محیط متلب بصورت پیش‌فرض وجود دارند.
ans        NaN        nargin
pi            i        nargout
eps        j

inf   

1-9-علائم نقطه‌گذاری و جملات توضیحی
    برای درج یک متن توضیحی در برنامه‌های متلب باید از کاراکتر % استفاده شود.
>> a=5; %”a” is a variable
    برای نوشتن ادامه یک جمله در سطر بعد باید از ... استفاده کرد:
>> b=a+a^2+…
        3*a^3;   

1-10- اعداد مختلط
    برای تعریف اعداد مختلط از متغیرهای ویژه i و j می‌توان استفاده کرد:
>>c=1-2i;        >>k=(-1)^(1/2);
>>c=1-2j;        >>c=1-2*k;
>>c=1-2*j;
    توابع کار با اعداد مختلط:
abs        angle    real        imag


-11- بعضی از توابع ریاضی در متلب1
abs        conj        log10
acos        exp        real
asin        fix        imag
acosh    round    rem(x,y)
asinh    gcd(x,y)    sign
atan        lcm(x,y)    sqrt
atanh    log


1-12-راهنمای متلب
متلب دارای دستورات راهنمای متفاوتی است که هم از طریق منوی start و هم از طریق اعلان متلب قابل دسترسند.
demo
help
lookfor


1-13-فایلهای متنی(Script) یا فایلهای m
بمنظور اجرای چند دستور بطور همزمان و بدون نیاز به تایپ مجدد، از فایلهای متنی استفاده می‌شود.
این فایلها باید دارای پسوند m باشند.


1-13-1- مراحل ایجاد فایلهای متنی
1.    باز کردن یک فایل جدید در ویرایشگر متلب:
 File>New>m-file
1.    تایپ کردن دستورات متلب در فایل مذکور
2.    ذخیره کردن فایل با نامی مشخص:
File>Save As…

1-13-1- مراحل ایجاد فایلهای متنی
1.    باز کردن یک فایل جدید در ویرایشگر متلب:
 File>New>m-file
1.    تایپ کردن دستورات متلب در فایل مذکور
2.    ذخیره کردن فایل با نامی مشخص:
File>Save As…


-13-2-روش اجرای یک فایل متنی1
برای اجرای یک فایل متنی کافی است نام آنرا در جلوی اعلان متلب تایپ کرده کلید Enter را بزنیم.
نکته: از این پس متن برنامه ها(کد نوشته شده در فایلهای m) با رنگ سبز نشان داده خواهد شد.
مثال:  برنامه sample1.m
% SAMPLE1: A Simple m-file
n=10;a=2;b=4;
c=n*a^3/b + 3*n*a^2/b^2+6*n*a/b^3
----------------------------------------------------------
>> sample1
    c=
        29.3750


-13-3- توابع و دستورات مفید در فایلهای m
1.    تابع disp(x): این تابع مقدار یک متغیر یا یک رشته متنی را نمایش می‌دهد.
مثال:
>> n=10;
>>disp(n)
    10
>> disp(‘This is a string’)
    This is a strin

-13-4- توابع و دستورات مفید در فایلهای m
2.    تابع x=input(s): برای گرفتن مقدار یک متغیر از ورودی.
مثال:
n=input(‘Please tell me “n” value: ‘)
--------------------------------------------------
Please tell me “n” value: 10
n=
    10

1-13-4- توابع و دستورات مفید در فایلهای m
3.    دستور pause: توقف موقت در حین اجرا.
    pause
    pause(n)  % n seconds
مثال:
%SAMPLE2: Enhanced Sample1
n=10;
a=input(‘ “a” value=  ‘);
b=input(‘ “b” value=  ‘);
c=n*a^3/b + 3*n*a^2/b^2 + 6*n*a/b^3;
disp(‘Please wait 5 seconds only!’);pause(5);
disp(‘Press any key to see answer.’); pause;
disp(‘ ”C” Value is= ‘); disp(c)


تکلیف 1-1: برنامه‌ای بنویسید که یک عدد را از کاربر بگیرد و آنرا در متغیری به نام x ذخیره کند. با استفاده از آن
، عبارت زیر را محاسبه کند و مقدار y را با پیغام مناسب نمایش دهد.
y=x^3 + 3*x^2 +6*x + 6;
    با تایپ نام برنامه در جلوی اعلان MATLAB، آنرا اجرا کنید.
     با استفاده از ویرایشگر MATLAB، برنامه خود را اجرا و trace کنید.

1-14- مدیریت فایل: کار کردن با فایلها و شاخه‌ها
بعضی از دستورات مفید:
    دستور cd: تغییر و یا نمایش شاخه جاری :
>>cd
    C:\Matlab\Work
>>cd C:\MyDir
>>cd
    C:\MyDir
    دستور dir: نمایش نام فایلها و زیرشاخه‌های دایرکتوری جاری
    دستور delete: حذف(پاک کردن) فایل:
>>delete sample1

نویسنده: پ متلب - پنجشنبه ۱٧ فروردین ،۱۳٩۱

تا به حال تنها از توابعی استفاده میکردیم که قبلا برای 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

نویسنده: پ متلب - پنجشنبه ۱٧ فروردین ،۱۳٩۱

نرم افزار متلب MATLAB نیز مانند زبان های برنامه نویسی دیگر دارای متغیراست و قانون هایی برای متغیرها دارد.در اینجا قوانین نرم افزار متلب MATLAB برای نامگذاری متغیرها را می توانید مشاهده کنید:

1)بین حروف متغیر نباید فضای خالی وجود داشته باشد,متغیر باید یک کلمه باشد.

2)نرم افزار متلب MATLAB نسبت به حروف بزرگ و کوچک اسامی متغیرها حساس می باشد.

3)اسامی متغیر ها حداکثر 31 کاراکتر می تواند باشد.

4)اسامی متغیر ها و M-File ها باید با یک حرف شروع شود.بعد از آن می توان از حروف,اعداد,یا کاراکتر زیر خط استفاده کرد.از علائم نقطه گذاری در نامگذاری متغیرها نمی توان استفاده نمود.زیرا اکثر آن ها در نرم افزار متلب MATLAB دارای معنی خاصی می باشد.

5)در نرم افزار متلب MATLAB از برخی کلمات نمی توان برای نامگذاری متغیرها استفاده کرد که این کلمات,کلمات کلیدی می باشند.برخی از این کلمات در ذیل آمده است,در صورت استفاده از این کلمات با پیام خطا مواجه می شوید:

else,try,global,catch,continue,persistent,break,switch,otherwise,case,elseif,for,end,while,function,return

نویسنده: پ متلب - پنجشنبه ۱٧ فروردین ،۱۳٩۱

مقدمه ای بر متلب MATLAB

متلب نام یکی از نرم‌افزارهای رایانه‌ای برای انجام محاسبات ریاضی است. واژه متلب هم به معنی محیط محاسبات رقمی و هم به معنی خود زبان برنامه‌نویسی مربوطه است از ترکیب دو واژهٔ MATrix و LABratuary ایجاد شده است. این نام حاکی از رویکرد ماتریس محور برنامه است، که در آن حتی اعداد عادی هم به عنوان ماتریس در نظر گرفته می‌شوند.

با نرم‌افزار متلب می‌توان ماتریس‌ها را به راحتی تغییر داد، توابع یا داده‌ها را ترسیم کرد، الگوریتم‌ها را اجرا کرد و همچنین صفحات رابط میان کاربر و رایانه ایجاد کرد.

متلب که از محصولات شرکت مث‌ورکس (The MathWorks) است، برای گروه‌های مختلف مهندسان رشته‌های مختلف از جمله مهندسی برق، مکانیک، کامپیوتر و ... کاربرد بسیاری دارد.

قدرت متلب

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

    جعبه‌ابزار مخابرات متلب
    جعبه‌ابزار کنترل متلب
    جعبه‌ابزار فازی متلب
    جعبه‌ابزار محاسبات متلب
    جعبه‌ابزار سیمولینک متلب
    جعبه‌ابزار تخمین متلب
    جعبه‌ابزار آمار متلب
    جعبه‌ابزار جمع‌آوری دادهٔ متلب
    جعبه‌ابزار شبکه عصبی متلب
    جعبه‌ابزار پردازش تصویر متلب
    جعبه‌ابزار پردازش صوت متلب
    جعبه‌ابزار احتمالات متلب
    جعبه‌ابزار کارگاه بلادرنگ متلب

 

MATLAB محیطی برای محاسبات عددی و زبان برنامه سازی می باشد که توسط MATH WORKS ساخته شده است ، MATLAB   امکان دستکاری و کارکردن ساده با ماتریس ، رسم نمودار توابع و دیتا ، اجرای الگوریتم ، ساخت واسط کاربر و واسط برنامه با سایر زبانهای برنامه نویسی را بوجود می آورد . اگر چه MATLAB مخصوص محاسبات عددی است اما toolbox ی با استفاده از موتور maple آنرا به سیستم کامپیوتری – جبری تبدیل می کند . این نرم افزار توسط یک میلیون نفر در دانشگاهها و صنعت مورد استفاده قرار می گیرد . هزینه این نرم افزار برای مصارف تجاری بدون tool box حدود 2000 دلار آمریکا و برای مصارف دانشگاهی با toolbox محدود حدود 100 دلار آمریکا است .

 
متلب  
بخش اول - ملزومات و پیش نیازهای آموزش MATLAB

این آموزش شما را به طور مرحله به مرحله با جنبه های مختلف MATLAB آشنا می کند . پس از کامل نمودن این دوره آموزشی شما به سادگی با استفاده از HELP MATLAB می توانید ویژگی های پیشرفته MATLAB را یاد بگیرد . و همچنین در استفاده از ویژگی های پیشرفته MATLAB راحت خواهید بود و قادر خواهید بود نکات بسیار کاربردی و پیشرفته تری که به رشته تحصیلی یا کارتان مربوط می شود را به خودتان آموزش بدهید .

شما باید دارای مهارت های ا ولیه استفاده از کامپیوتر باشید بعنوان مثال شما باید قادر باشید که برنامه ای را اجرا کنید ، آنرا ببندید و فایلهایتان را ذخیره کنید ، نوشته را کات کنید و در جای مورد نظر پیست کنید و ...

شما باید بدانید که از یک نرم افزار واژه پرداز چگونه استفاده کنید ، مانند نوت پد در ویندوز که شما می توانید از آن برای نوشتن برنامه های MATLAB استفاده کنید .همچنین MATLAB نرم افزار واژه پرداز مخصوص خود را دارد که شما می توانید از آن استفاده کنید (‌که در این آموزش به شما نشان خواهیم داد )

شما باید دانش اولیه ای در مورد جبر و مثلثات داشته باشید مانند آنچه که در دبیرستان پوشش داده شده همچنین اطلاعاتی در مورد جبر خطی ( مانند ماتریس ها ، بردارها و معکوس آنها و ... ) دانستن این موارد موقع شروع آموزش MATLAB بسیار سودمند است اما اصول جبر خطی مورد نیاز در این آموزش شرح داده خواهد شد

ما در این آموزش با یکدیگر تعامل خواهیم داشت و آموزش همراه کار و تمرین خواهد بود . در حالیکه شما صفحه تمرین را مطالعه می کنید باید نرم افزار MATLAB را در پنجره جداگانه ای اجرا کنید و تمرینات را حل کنید .

حالا شما آماده اید که آموزش MATLAB را شروع کنید .

امیدوارم اوقات خوشی با MATLAB داشته باشید . حین آموزش خواهش می کنم تا جایی که امکان دارد تمرین حل کنید چون بهترین راه یادگیری MATLAB استفاده از آن است .
 
 
بخش دوم - آموزش بسیار مقدماتی MATLAB
 
 
MATLAB برنامه ای است که هنگام مواجه شدن با مسائل ریاضیاتی بسیار سودمند خواهد بود مخصوصا در زمینه تکنیک و مهندسی .

شما می توانید از ویژگی built-in MATLAB برای حل بسیاری از مسائل بدون انجام زحمت خاصی ، بهره ببرید از معادلات دو معادله دو مجهول ساده مانند

X + 2Y = 24
12X - 5Y = 10

گرفته تا معادلات بسیار پیچیده مانند فاکتور گیری چند منظوره ، تطابقت منحنی با اطلاعات داده شده ، انجام محاسبات با استفاده از ماتریس ، انجام مسائل مربوط به پردازش سیگنال مانند تبدیلات فوریه ، و ساخت و گسترش شبکه های عصبی .

یک جنبه بسیار قدرتمند و سودمند MATLAB این است که برای رسم بسیاری از انواع منحنی ها مفید واقع می شود و شما را قادر می کند تا توابع پیچیده ماتریسی را رسم کنید و در کل یک آزمایشگاه دیتا است . بعنوان مثال سه شکل زیر با استفاده از توابع چاپ ( plotting ) ساخته شده اند .

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

اگر شما قبلا پیش زمینه قویتری از ریاضات و برنامه سازی کامپیوتری داشته باشید شما سریعا یاد می گیرید که از MATLAB چگونه برای اهداف طراحی و یا زمینه کاری خودتان استفاده کنید .
 

بخش سوم : اجرای نرم افزار MATLAB  

شما به سادگی می توانید با دابل کلیک روی ایکون MATLAB این نرم افزار را اجرا کنید یا اینکه با استفاده از منوی start ویندوز این نرم افزار را فراخوانی کنید . پنجره اصلی MATLAB ، دسکتاپ MATLAB نامیده می شود ، که شبیه پنجره زیر است .

شما هنگام اجرای برنامه متوجه خواهید شد که در خط فرمان متن زیر نوشته شده است :

To get started, select "MATLAB Help" from the Help menu.

علامت>>   command prompt ( گوش به فرمان ) نامیده می شود ،که مانند یک چشمک زن است و منتظر فرمان شماست . بعد از اینکه شما متنی را در خط فرمان تایپ کردید MATLAB فرمان شما را اجرا می کند و نتیجه را نشان می دهد و منتظر فرمان بعدی شما می ماند بدین ترتیب شما می توانید دستوراتی را که می خواهید وارد کنید . ( MATLAB فرمان را خط به خط اجرا می کند )

درس بعدی در مورد دستورات خاص MATLAB است ، اما الان برای اینکه فقط MATLAB را شروع کرده باشید دستور ساده زیر را وارد کنید . دستور dateرا تایپ کنید و اینتر را بزندی . MATLAB نتیجه را چیزی شبیه متن زیر نمایش می دهد .

>>date

ans =
11-Jun-1998

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

دستور ساده دیگری که شما الان می توانید امتحان کنید دستور clc است (clear command window ) اگر شما در صفحه فرمان MATLAB بخواهید همه نوشته ها و دستورات را پاک کنید و چشمک زن به ابتدای صفحه برود می توانید در خط فرمان clc را تایپ کنید و اینتر بزنید . همین حالا به صفحه MATLAB بروید و این دو دستور را اجرا کنید . ساده بود . نه ؟
برای خارج شدن از MATLAB می توانید وارد منوی فایل شوید و گزینه exit matlab را انتخاب کنید یا در خط فرمان دستور quit را تایپ کنید و اینتر بزنید .و یا اینکه به سادگی پنجره را ببندید.  

 
 

 

 
 
 
 
بخش چهارم : اجرای دموها
 

 

 
 

شما قبلاً MATLAB را اجرا کرده اید و دسکتاپ MATLAB را روی دستکتاپ ویندوز باز کرده اید . اگر این کار را انجام نداده اید به بخش قبل مراجعه کنید .

حالا کمی روی Demo ها بحث می کنیم . در واقع Demo زیادی در MATLAB وجود دارد و همه آنها با تایپ کردن دستور Demo در خط فرمان نشان داده می شوند .

ما واقعا انتظار نداریم شما جزئیات MATLAB را با استفاده از این Demo یاد بگیرد اما با استفاده از این Demo ها نسبت به کاراهایی که می توانید با استفاده از MATLAB انجام دهید دید بهتری خواهید یافت . حتی در این Demo چند بازی هم وجود دارد و بعضی از آنها هم کاملا گرافیکی هستند و شما می توانید با استفاده ازاین Demo ها از MATLAB لذت ببرید . MATLAB ابزاری قدرتمند برای حل بسیاری از مسائل است و شما باید این قدرت را بعد از آشنایی با دموها درک کنید .
خوب برای شروع درخط فرمان Demo را تایپ کنید و اینتر بزنید . با این کار صفحه Demo MATLAB بالا می آید و منتظر می ماند تا شما دموی مورد نظرتان را انتخاب واجرا کنید . پنجره Demo MATLAB مشابه صفحه زیر است

 

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

برای دیدن لیست دموهای مختلف روی علامت + کنار گزینه matlab کلیک کنید با اینکار شما می توانید دموهایی در مورد ماتریس ها ،‌اعداد ، اجسام گرافیکی و ... را مشاهده کنید . در لیست هر یک از دموها ، دموهای متعددی در آن مورد وجود دارد .

پنجره سمت راست شما چکیده ای در مورد دموی انتخابی به شما نشان می دهد . بعنوان مثال اگر شما gallery را بعنوان دسته مورد نظر خودتان انتخاب کنید  text box سمت راست چیکیده ای از این دسته دموها را به شما نشان می دهد .

شما می توانید دموها ی مختلفی را با توجه به کلاس انتخابی تان ببینید . در کلاس gallery دموهایی به نامهای Knot, Quiver, Klein IIو ... وجود دارد اگر شما یکی از این دموها را انتخاب کنید اطلاعاتی با توجه به دمو در سمت راست نمایش داده می شود . و دو گزینه وجود دارد.

1-      اجرای دمو

2-      دیدن کدهای دمو

بعنوان مثال این کار را انجام دهید . کلاس gallery را در صفحه MATLAB خود انتخاب کنید سپس دموی spherical surface harmonicحال شما باید پنجره زیر را ببینید

 

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

حالا کمی وقت صرف کنید و سایر دموها را انتخاب و اجرا کنید تا محدوده توانایی و امکانات MATLAB را بدرستی درک کنید .

قبل از شروع شاید بخواهید دستور intro demo را امتحان کنید . این مثال دیگری است که مقدمه ابتدایی از توانایی های MATLAB را به شما نشان می دهد . برای اجرای intro کلاس matlab از دموها را انتخاب کنید و سپس matrices بعد basic matrix operation یا اینکه دستور play show intro را تایپ کنید پنچره دیگری بالا می آید و شما می توانید با استفاده از دکمه هایی که در این پنجره وجود دارد جزئیات این دمو را مشاهده کنید .

 

 
 بخش پنجم : استفاده از help

متلب دارای سیستم help گسترده ای است ، که شامل جزئیات و اطلاعات help در مورد کلیه دستورها و توابع متلب می شود . این سیستم help برای افرادی که مبتدی هستند بسیار مناسب خواهد بود ، اما حتی بعد از اینکه شما به یک متخصص متلب بدل شدید ، از این سیستم برای یادگیری سایر توابع متلب که تا به حال از آنها استفاده نکرده اید استفاده خواهید کرد . این درس به شما می آموزد که چگونه از این سیستم استفاده کنید

دسترسی به help از طریق خط فرمان :

سه تابع اصلی وجود دارد که شما می توانید از آنها برای کسب اطلاعات در مورد توابع دیگر استفاده کنید : help ، helpwin ( اختصاری help window  ) و doc ( اختصاری documentation  ) . تابع help و helpwin اطلاعات مشابهی به شما می دهند ، اما با پنجره های متفاوت ، دستور doc یک صفحه html با یک سری اطلاعات بیشتر را نمایش می دهد .

قسمت پایین نمایش help در مورد تابع date را به شما نشان می دهد که این نمایش با استفاده از دستوارات متفاوت انجام شده .

help date

DATE Current date as date string. S = DATE returns a string containing the date in dd-mmm-yyyy format.

See also NOW, CLOCK, DATENUM

توجه : خروجی help معمولاً توابعی که به موضوع مربوط هستند را نیز نشان می دهد . در این مثال ، help علاوه بر موضوع اصلی به شما می گوید : See also NOW, CLOCK, DATENUM. حالا شما می توانید در مورد همین توابع نیز از help  استفاه کنید

helpwin date

توجه : محتوای اطلاعات دستور help و helpwin یکسان است ولی بهتر است از helpwin استفاده کنید چون :

1-      متن در صفحه های مجزا نشان داده می شود

2-      شما در قسمت see also می توانید روی تابع یا توابعی که در همین قسمت لیست شده کلیک کنید تا اطلاعاتی در مورد آنها کسب کنید تا اینکه مجبور باشید آنرا در خط فرمان تایپ کنید تا اطلاعاتی در مورد آن بدست آورید .

3-      لینک موضوعات پیش فرض ، کلیه دسته بندی ها را لیست می کند و شما می توانید تابع مربوطه با دسته بندی مربوطه را ببینید . بعنوان مثال ، اگر شما بخواهید بدانید خروجی دستور پلات x  بر حسب y چیست می توانید روی لینک matlab\graph2d topic کلیک کنید .

doc date

توجه : خروجی دستور doc بسیار کامل است و فقط یه قسمت از اطلاعات خواسته شده در مورد موضوع مورد نظر نیست بلکه مثال های کاملی ارائه می کند که می توانند مورد مطالعه قرار گیرند یا اجرا شوند .

سعی کنید برای توابع مقابل از دستورات مختلف اجرای help  استفاده کنید : magic, fft, and surf

استفاده از جستجوگر help متلب

منبع دیگر help در متلب ، جستجوگر help  متلب است . شما می توانید جستجوگر help  متلب را با تایپ دستور helpbrowser در خط فرمان متلب فراخوانی کنید ، روی دکمه ؟ کلیک کنید یا با انتخاب Start->MATLAB-> از desktopاین جستجوگر را فرخوانی کنید .

جستجوگر help دو قسمت عمده دارد ، help navigator و صفحه نمایش . صفحه نمایش ، همانگونه که از نامش پیداست ، اطلاعاتی در مورد موضوع انتخاب شده را نشان می دهد . help navigator در قسمت سمت چپ جستجوگر قرارگرفته ، و برای هدایت کردن از طریق اطلاعات online در مورد موضوع انتخاب شده کاربرد دارد . این قسمت در برگیرنده موارد زیر است :

    فیلتر فراورده
    نوار محتویات
    نوار شاخص
    نوار دمو
    نوار جستجو
    نوار favorit

این بخش منبع گسترده ای برای شما خواهد بود اگر بدنبال یادگیری نکات بیشتری در مورد موضوع داده شده باشید . نوار سرچ در مورد موضوع مورد نظر از میان کلیه اطلاعات موجود جستجو می کند ، و لغات کلیدی که آنها را سرچ کرده اید را بصورت highlight مشخص می کند تا خواندن اطلاعات مورد نظر راحتتر باشد .

حالا با استفاده از امکانات سرج در مورد help از جستجوگر خودش استفاده کنید

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

در ساده ترین حالت ، متلب می تواند بعنوان یک ماشین حساب جیبی باشد . بعنوان مثال دراینجا شما چند محاسبه ساده با استفاده از متلب مانند یک ماشین حساب انجام می دهید .

4 + 10
ans = 14
5 *10 + 6
ans = 56
(6 + 6) / 3
ans = 4
9^2
ans = 81

شما می توانید ببینید که متلب کلیه اپراتورهای اصلی ریاضیاتی را شامل + ، - ، * ، / ، ^ و ... را ساپرت می کند . و شما می توانید عملگر های را با قرار دادن آنها در داخل پرانتز بصورت دسته و گروه در آورید . با این وجود عبارت ans دقیقا چیست ؟ ans اختصاری answer یا همان پاسخ است ، و در متلب این عبارت بعوان نام پیش فرض متغیر ها در نظر گرفته شده . و شما می توانید به متغیری که فعلا اسمی برای ان انتخاب نشده فقط با تایپ عبارت ans دست پیدا کنید .

4 + >>5

ans = 9

 >>ans

ans = 9

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

>>ans + 10

ans = 19

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

متغیر ans به خودی خود سودمند نیست ، اما قدرت حقیقی ان در این است که شما می توانید متغیر خودتان را تعریف و استفاده کنید . بعنوان مثال :

>>a = 10

a = 10

 >>b = 20

b = 20

 >>c = 30

c = 30

 >>a

a = 10

 >>the_average = (a + b + c) / 3

the_average = 20

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

>>a = 5

a = 5

 >>b = 6

b = 6

 whos

Name
    
Size
    
Bytes
    
Class
a
    
1x1
    
8
    
double array
b
    
1x1
    
8
    
double array

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

برای پاک کردن متغیر هایی که قبلا وارد کرده ایدو در حافظه ذخیره شده اند چه کاری باید انجام داد ؟ پاسخ این سوال دقیقا پاسخ به این است که دستور clear چه کاری انجام می دهد . clear را در خط فرمان تایپ کنید ، خواهید دید که کلیه متغیر ها و مقادیری را که قبلا ذخیره شده اند را پاک می کند . مثال فوق را ادامه می دهیم .

whos

Name    Size      Bytes     Class

a          1x1       8          double array

b          1x1       8          double array

Grand total is 2 elements using 16 bytes

 clear

 whos

جلوگیری از نمایش نتایج بااستفاده از «؛»

اگر بعد از دستور سمیکولون تایپ شود باعث می شود که نتیجه نشان داده نشود . اگر شما عبارتی تایپ کنید ( مثلا b=4+5 ) و در انتهای آن سمیکولون بگذارید ، سپس متلب عبارت را محاسبه می کند ولی نتایج را در حافظه بصورت داخلی ( بدون نمایش ) ذخیره می کند . بعنوان مثال :

>>a = 10;

>>b = 20;

>>c = 30;

>>d = 40;

>>the_average = (a + b + c + d) / 4

the_average =

25

the_average;

>>b

b =

20

>>e = 50

e =

50

the_blank_average = (a + b + c + d + e) / 5;

>>the_blank_average

the_blank_average =

30

ممکن است اینطور به نظر برسد که استفاده از سمیکولون زیاد هم مهم نیست ، اما در حقیقت سمیکولون همیشه دم دست است و همیشه استفاده می شود . نتیجه نهایی عملیاتی که در متلب انجام داده اید برایتان مهم است ، که با ترکیب بسیاری از داده ها و نتایج موقت و متغیر های میانی  محاسبه می شود . و با افزودن سمیکولون به انتهای دستوری که مقدار آن موقت یا نتیجه بصورت نتیجه میانی است باعث می شود که نتیجه آنها نشان داده نشود . بعنوان مثال ، در مثال بالا سمیکولون بعداز متغیر ها a,b,c,d تایپ شده است ولی فقط نتیجه نهایی که میانگین این چهار متغیر است مهم می باشد و می بینیم که سمیکولون بعد از عبارت the_average تایپ نشده است و نتیجه این دستور نشان داده می شود .
 

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

آموزش سیمولینک متلب _ matlab simulink


Click this bar to view the full image.

سلام دوستان در این تاپیک قصد دارم آموزش سیمولینک متلب رو که توسط یکی از دوستان ارائه شده قرار بدم . امیدوارم مفید واقع بشه . همونطور که میدونید نرم افزار matlab واسه یک رشته خاص طراحی نشده پس همه میتونن از این آموزش استفاده کنند .

SIMULINK
سیمولینک یکی از متعلقات MATLAB می باشد که امکان ایجاد سریع و دقیق مدل کامپیوتری سیستمهای دینامیکی را با استفاده از نمودار بلوکی برای مهندسین فراهم می سازد. سیستمهای غیر خطی پیچیده را می توان توسط آن بسادگی مدل نمود. تحلیل و طراحی سیستمهای کنترل توسط آن براحتی امکانپذیر است.

Click this bar to view the full image.

نحوه کارکردن با Simulink رو به شما آموزش بدم پس اگه تا حالا با Simulink کار نکردید و یا مشکلاتی در کارکردن با اون دارید میتونید با من همراه باشید .

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

برای شروع کار با سیمولیک ابتدا از مسیر File >> New >> Model یک مدل جدید ایجاد کنید. این مدل رو در شکل زیر مشاهده میکنید.

Click this bar to view the full image.


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


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

برای اولین مثال میخواهیم از یک پالس، مشتق و انتگرال گرفته و روی یک اسکوپ به همراه سیگنال اصلی نمایش بدیم بلوکهایی رو که احتیاج داریم عبارتند از: مولد پالس، انتگرالگیر، مشتقگیر، تسهیم کننده و بلوکی بسیار معروف به نام اسکوپ.

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

Simulink >> Sources >> Pulse Generator

Simulink >> Continuous >> Integrator

Simulink >> Continuous >> Derivative

Simulink >> Signal Routing >> Mux

Simulink >> Sinks >> Scope


نحوه آوردن بلوکها هم بسیار سادس شما میتونید روی بلوک مورد نظر کلیک چپ کرده و بدون رها کردن آن، موس رو به درون مدل مربوطه ببرید و در جائیکه میخواهید بلوک رو قرار دهید، موس رو رها کنید(Drag and Drop) و یا اینکه روی بلوک مورد نظر کلیک راست کرده و گزینه Add to untitled رو انتخاب کنید بهصورت زیر:


در واقع untitled نام پیش فرض مدل شماست که میتونید اون رو تغییر بدهید. پس از اینکه تمامی بلوکها رو به مدل خودتون اضافه کردید بلوکها رو بهصورت زیر دربیارید:

Click this bar to view the full image.


برای مرتب کردن بلوکها، هم با موس میتونید جای اونها رو عوض کنید هم با کیبورد به این صورت که بلوک موردنظر رو انتخاب میکنید و با کلیدهای جهتی بر روی کیبورد، جای بلوک رو تغییر میدید. برای بزرگ کردن اندازه بلوکها از کلید R و برای کوچک کردن آنها از کلید V استفاده کنید.

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

Click this bar to view the full image.


خروجی این بلوک یک پالس با اندازه 1 و دوره تناوب 1.5 ثانیه و بدون تـاْخیر و با پهنای پالس معادل 50 درصد دامنه هست.

(Duty Cycle =50%)

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

در تنظیمات بلوکهای انتگرالگیر و مشتقگیر و اسکوپ تغییری ایجاد نکنید.

حال باید بلوکها رو به یکدیگر متصل کنیم برای اینکار ماوس رو به سمت خروجی مولد پالس برده و زمانی که ماوس به شکل + در اومد کلیک چپ رو فشار داده و بدون ول کردن آن به سمت ورودی دومی تسهیم کننده حرکت کنید و زمانی که اشارهگر ماوس بصورت یک بعلاوه دوخط درآمد آن را ول کنید تا اتصال ایجاد شود اگر میخواهید از یک سیگنال انشعابی بگیرید از کلیک راست ماوس باید استفاده کنید مثلا در مورد اتصال ورودی انتگرالگیر باید ماوس را به سمت سیگنال خروجی مولد پالس برده و با فشردن کلیک راست به سمت ورودی انتگرالگیر حرکت کنید و زمانی که اشارهگر ماوس بصورت یک بعلاوه دوخط درآمد آن را ول کنید تا اتصال ایجاد شود باقی اتصالات را دقیقا به همینصورت و مطابق شکل زیر انجام دهید:

Click this bar to view the full image.


حالا مدل شما آماده شده و میتونید اون رو اجرا کنید البته قبل از اجرا کردن باید تنظیمات شبیهسازی(زمان اجرا، گام حرکت، نوع حلگر و ...) رو انجام بدید که فعلا برای این مثال نیازی نیست پس مدلتون رو با فشاردادن دگمه استارت، ران کنید سپس به روی اسکوپ دوبار کلیک کنید شما قاعدتا باید شکل موجهای زیر رو ببینید:

(یادتان باشد که حتما روی دگمه Autoscale کلیک کنید تا شکل موجها را کامل ببینید)

Click this bar to view the full image.


آوردن قطعات از کتابخانه، اتصال قطعات به یکدیگر و در نهایت شبیهسازی مدل مورد نظر بیان شد. اکنون در قسمت دوم با ذکر چند مثال کاربردی، آموزش Simulink رو ادامه میدهیم. در این قسمت فرض برآن است که دوستان یا قسمت اول آموزش را خواندهاند و یا اینکه اطلاعات اولیه را دارند پس از ذکر جزئیات صرفه میکنیم.

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


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

Simulink >> Sources >> Clock

Simulink >> Sources >> Constant

Simulink >> Math Operations >> Sum

Simulink >> Math Operations >> Gain

Simulink >> Math Operations >> Math Function

Simulink >> Sinks >> XY Graph


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

Click this bar to view the full image.


حالا تنظیمات زیر را انجام دهید:

روی بلوک Constant دوبار کلیک نموده و مقدار آن را 3 قرار دهید

روی بلوک Gain دوبار کلیک نموده و مقدار آن را 2 قرار دهید

روی بلوک Gain1 دوبار کلیک نموده و مقدار آن را 3 قرار دهید

روی بلوک Math Function دوبار کلیک نموده و در پنجره تنظیمات باز شده نوع تابع را square انتخاب کنید

روی بلوک Math Function1 دوبار کلیک نموده و در پنجره تنظیمات باز شده نوع تابع را pow انتخاب کنید

روی بلوک Sum دوبار کلیک نموده و در قسمت List of signs علامتهای -+-+| را وارد کنید

روی بلوک XY Graph دوبار کلیک نموده و حد پائین x را 5- و حد بالای آن را 5 و حد پائین y را 150- و حد بالای آن را 150 قرار دهید

اکنون بقیه بلوکها را مانند شکل زیر به یکدیگر وصل کنید:

Click this bar to view the full image.


این کلاکی که میبینید در واقع همان زمان شبیهسازی شماست که اینجا نقش متغییر x را بازی میکند و از این جهت است که به اولین ورودی بلوک XY Graph(محور افقی صفحه مختصات) وصل شده است خروجی جمع کننده نیز برابر با متغییر y است که به دومین ورودی بلوک XY Graph(محور عمودی صفحه مختصات) وصل شده است نقش باقی بلوکها را اگر به صورت معادله توجه کنید خواهید فهمید.

احتمالا میدانید که زمان شبیهسازی سیمولینک از صفر تا ده ثانیه(بطور پیش فرض) میباشد پس اگر ما بخواهیم تابع را در بازه [5 5-] رسم کنیم، باید بازه زمانی شبیهسازی را تغییر دهیم. برای این منظور از مسیر ...Simulation >> Configuration Parameters وارد تنظیمات مدل خود میشوید حالا مانند شکل زیر، زمان شروع و پایان شبیهسازی را وارد کنید:

Click this bar to view the full image.


اکنون مدل شما آماده شده و میتوانید آن را Run کنید پس از اجراکردن بطور خودکار نمودار نمایش داده میشود:

Click this bar to view the full image.


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


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

Simulink >> Sources >> Constant

Simulink >> Sinks >> Display

Simulink >> Math Operations >> Sum

Simulink >> Math Operations >> Gain

Simulink >> Math Operations >> Math Function

Simulink >> Math Operations >> Algebraic Constraint

Simulink >> Math Operations >> Trigonometric Function

Simulink >> Math Operations >> Product

Simulink >> Math Operations >> Abs


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

Click this bar to view the full image.


تنظیمات بلوکها:

روی بلوک Constant1 دوبار کلیک نموده و مقدار آن را 3 قرار دهید

روی بلوک Constant2 دوبار کلیک نموده و مقدار آن را 3 قرار دهید

روی بلوک Gain دوبار کلیک نموده و مقدار آن را 5 قرار دهید

روی بلوک Gain1 دوبار کلیک نموده و مقدار آن را 2 قرار دهید

روی بلوک Math Function1 دوبار کلیک نموده و در پنجره تنظیمات باز شده نوع تابع را pow انتخاب کنید

روی بلوک Trigonometric Function دوبار کلیک نموده و در پنجره تنظیمات باز شده نوع تابع را cos انتخاب کنید

روی بلوک Sum (توجه کنید که نام بلوک Sum بطور پیش فرض مخفی است و شما میتوانید روی بلوک راست کلیک کرده و از مسیر Format >> Show Name نام بلوک را آشکار کنید) دوبار کلیک نموده و در قسمت List of signs علامت های --+--| را وارد کنید و در قسمت Icon shape نوع نمایش را rectangular برگزینید

روی بلوک Sum1 دوبار کلیک نموده و در قسمت List of signs علامتهای -+| را وارد کنید

حالا مانند شکل زیر بلوکها را به یکدیگر متصل کرده و Run کنید:

Click this bar to view the full image.


توجه کنید که ورودی بلوک Algebraic Constraint تابع و خروجی آن مقداری است که به ازای آن تابع ورودی صفر خواهد شد و به همین دلیل است که از خروجی این بلوک برای تغذیه آرگومانهای تابع ورودی استفاده شده است.

برای مثال آخر در قسمت دوم آموزش میخواهیم دستگاه معادلات زیر را حل کنیم:


بلوکهای مورد نیاز:

Simulink >> Sources >> Constant

Simulink >> Sinks >> Display

Simulink >> Math Operations >> Sum

Simulink >> Math Operations >> Gain

Simulink >> Math Operations >> Algebraic Constraint


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

Click this bar to view the full image.


نکته: بلوکها را میتوانید به وسیله فشردن کلیدهای Ctrl+R بچرخانید.



تنظیمات بلوکها:

روی بلوک Constant دوبار کلیک نموده و مقدار آن را 3 قرار دهید

روی بلوک Constant1 دوبار کلیک نموده و مقدار آن را 2 قرار دهید

روی بلوک Gain دوبار کلیک نموده و مقدار آن را 2 قرار دهید

روی بلوک Gain1 دوبار کلیک نموده و مقدار آن را 3 قرار دهید

روی بلوک Gain2 دوبار کلیک نموده و مقدار آن را 7 قرار دهید

روی بلوک Gain3 دوبار کلیک نموده و مقدار آن را 5 قرار دهید

روی بلوک Gain4 دوبار کلیک نموده و مقدار آن را 3 قرار دهید

روی بلوک Gain5 دوبار کلیک نموده و مقدار آن را 4 قرار دهید

روی بلوک Gain6 دوبار کلیک نموده و مقدار آن را 4 قرار دهید

روی بلوک Sum دوبار کلیک نموده و در قسمت List of signs علامت های ++-+| را وارد کنید

روی بلوک Sum1 دوبار کلیک نموده و در قسمت List of signs علامت های ++--| را وارد کنید

روی بلوک Sum2 دوبار کلیک نموده و در قسمت List of signs علامت های ++--| را وارد کنید

اگر میخواهید خروجی را با دقت بالاتری ببینید، روی بلوکهای Display دوبار کلیک کرده و فرمت نمایش آنها را long انتخاب کنید

حالا میتوانید مدلتان را Run کرده و جواب دستگاه معادلات مربوطه را مشاهده کنید:

Click this bar to view the full image.
مثالی از اعداد مختلط شروع می‌کنیم می‌خواهیم سیستمی طراحی کنیم که دو عدد مختلط را گرفته و چهار عمل اصلی ریاضی(جمع، تفریق، ‌ضرب، تقسیم) را روی آن دو انجام دهد و همچنین قسمت حقیقی، قسمت موهومی،‌ اندازه، فاز و مزدوج یکی از آن دو عدد را محاسبه کند توجه داشته باشید که هدف از این مثال یادگیری کار با اعداد مختلط و نحوه ایجاد زیر سیستم است.

طبق معمول ابتدا یک پنجره جدید باز کرده و بلوک‌های مورد نیاز را از مسیرهای زیر وارد می‌کنید:

Simulink >> Sources >> Constant

Simulink >> Sinks >> Display

Simulink >> Math Operations >> Sum

Simulink >> Math Operations >> Gain

Simulink >> Math Operations >> Product

Simulink >> Math Operations >> Divide

Simulink >> Math Operations >> Complex to Real-Imag

Simulink >> Math Operations >> Real-Imag to Complex

Simulink >> Math Operations >> Complex to Magnitude-Angle

بلوک‌ها را مانند شکل زیر مرتب کنید:

Click this bar to view the full image.

تنظیمات بلوک‌ها:

روی بلوک Constant دوبار کلیک نموده و مقدار آن را 2+3i و نام آن را z قرار دهید

روی بلوک Constant1 دوبار کلیک نموده و مقدار آن را 3-6i و نام آن را z1 قرار دهید

روی بلوک Gain دوبار کلیک نموده و مقدار آن را 1- قرار دهید

روی بلوک Sum1 دوبار کلیک نموده و در قسمت List of signs علامت‌های -+| را وارد کنید

روی بلوک‌های Display کلیک راست نموده و از مسیر Format >> Hide Name نام بلوک‌ها را پنهان کنید

حالا مانند شکل بلوک‌ها را به یکدیگر متصل کنید:

Click this bar to view the full image.

سپس تمامی بلوک‌ها به‌جزء بلوک‌های Constant و Display را انتخاب و کلیک راست کنید و از منوی باز شده Create Subsystem را انتخاب کنید حالا مدلتان احتمالا کمی بهم‌ریخته شده است کمی آن را مرتب کنید و بلوک Subsystem را از دو طرف بکشید تا بزرگتر شود برخی از بلوک‌های Display نیز احتیاج به بزرگترشدن دارند که این را بعد از شبیه‌سازی خواهید فهمید.

نکته: شما می‌توانید با دوبار کلیک کردن در هرجایی از مدلتان، متنی دلخواه وارد کنید مثلا کنار هر کدام از بلوک‌های Display بنویسید که چه عددی را قرار است نشان دهند ضمنا می‌توانید با دوبار کلیک کردن به روی هر سیگنالی، آن را نام‌گذاری کنید.

اکنون سیستم شما آماده شده و می‌توانید آن را Run کنید:

Click this bar to view the full image.

در این مثال با نحوه‌ی ایجاد زیرسیستم آشنا شدید شما می‌توانید زیر سیستم‌های مختلفی در یک مدل(حتی زیرسیستم‌های تودرتو) ایجاد کنید زیرسیستم‌ها را معمولا برای مدل‌های پیچیده و شلوغ به‌کار می‌برند و با دوبار کلیک کردن به‌روی هر کدام از آنها، محتویات آن مشاهده خواهد شد.

در مثال بعدی می‌خواهیم پاسخ پله و پاسخ ضربه یک سیستم کنترلی را مشاهده کنیم تابع تبدیل سیستم به شرح زیر است:


این سیستم درجه 3 است و اگر پاسخ پله آن را رسم کنیم خواهیم دید که پاسخ زیرمیرا(سینوسی میراشونده) می‌باشد ضمنا می خواهیم خروجی را در دو حالت(پاسخ پله و ضربه) به فضای کاری MATLAB انتقال دهیم.

بلوک‌های مورد نیاز:

Simulink >> Sources >> Step

Simulink >> Sinks >> Scope

Simulink >> Sinks >> To Workspace

Simulink >> Continuous >> Derivative

Simulink >> Continuous >> Transfer Fcn

بلوک‌ها را مانند شکل زیر مرتب کنید:

Click this bar to view the full image.

تنظیمات بلوک‌ها:

روی بلوک Step دوبار کلیک نموده و مقدار Step time را 0 قرار دهید

روی بلوک Transfer Fcn دوبار کلیک نموده و مقدار Denominator coefficients را [1 1 3 2] قرار دهید

روی بلوک Scope دوبار کلیک نموده و سپس به منوی Parameters رفته و تعداد محورها را برابر 2 قرار دهید

روی بلوک To Workspace دوبار کلیک نموده و در قسمت Variable name عبارت s را وارد کرده و در قسمت Save format حالت Array را انتخاب کنید

روی بلوک To Workspace1 دوبار کلیک نموده و در قسمت Variable name عبارت h را وارد کرده و در قسمت Save format حالت Array را انتخاب کنید

تنظیمات مدل:

با فشردن کلید Ctrl+E به صفحه تنظیمات رفته و مانند شکل زیر عمل کنید:

Click this bar to view the full image.

اتصالات را به صورت زیر انجام دهید:

Click this bar to view the full image.

حالا Run کنید:

Click this bar to view the full image.

یادتان باشد که حتما روی دگمه Autoscale کلیک کنید تا شکل موج‌ها را کامل ببینید.

در مثال بعد می‌خواهیم با نحوه‌ی ماسک کردن آشنا شویم برای این منظور سیستمی طراحی می‌کنیم که با گرفتن پارامترهای یک مدار RLCموازی، شکل موج جریان سلف و ولتاژ خازن را نشان داده و همچنین فرکانس تشدید، ضریب کیفیت و پهنای‌باند مدار را محاسبه و نمایش دهد. مدلی مانند آنچه که در شکل زیر مشاهده می‌کنید، ایجاد کنید:

Click this bar to view the full image.

نکته: رنک بلوک‌ها را می‌توانید با راست کلیک کردن به روی آن‌ها و از مسیر Background Color و رنگ پس‌زمینه را با راست کلیک کردن به روی صفحه مدل و از مسیر Screen Color تغییر دهید.

تمامی بلوک‌ها قبلا گفته شده که در کجا قرار دارند بجزء بلوک Reciprocal Sqrt که آن‌هم در کتابخانه Math Operations قرار دارد.

توجه: بلوک‌های به رنگ قرمز، Gain و بلوک‌های به رنگ صورتی، Constant هستند.

تنظیمات بلوک‌ها:

روی بلوک R دوبار کلیک نموده و مقدار آن را R قرار دهید

روی بلوک‌های L دوبار کلیک نموده و مقدار آن‌ها را L قرار دهید

روی بلوک C دوبار کلیک نموده و مقدار آن را C قرار دهید

روی بلوک L/R دوبار کلیک نموده و مقدار آن را L/R قرار دهید

روی بلوک LC\1 دوبار کلیک نموده و مقدار آن را LC\1 قرار دهید

بلوک Sum هم مشخص است که چه تنظیماتی دارد

روی بلوک Product دوبار کلیک نموده و تعداد ورودی‌های آن را 3 قرار دهید

روی بلوک Step دوبار کلیک نموده و مقدار Step time را D و مقدار Final value را A قرار دهید

روی بلوک Scope و بلوک‌های Display کلیک راست نموده و از مسیر Format >> Hide Name نام بلوک‌ها را پنهان کنید

روی بلوک Scope دوبار کلیک نموده و سپس به منوی Parameters رفته و تعداد محورها را برابر 2 قرار دهید

حالا تمامی بلوک‌ها را بجزء بلوک Scope و بلوک‌های Display انتخاب و کلیک راست کنید و از منوی باز شده Create Subsystem را انتخاب کنید پس اندکی مرتب کردن مدل، روی بلوک Subsystem کلیک راست کرده و گزینه ...Mask Subsystem را انتخاب کنید حالا همان‌طور که می‌بینید پنجره Mask Editor به نمایش درآمده است.

تنظیمات Mask Editor:

ابتدا به تب Icon & Ports بروید و Command را در حالت image قرار داده و در قسمت Icon Drawing commands کد زیر را وارد کنید:

(('image(imread('RLC.jpg

«RLC.jpg» عکسی است که من می‌خواهم پس‌زمینه‌ی مدل قرار بدم توجه کنید که این عکس باید در مسیر متلب باشد تا آپلود شود بعد از وارد کردن کد، Apply کرده و به تب Parameters بروید و مانند شکل زیر عمل کنید:

Click this bar to view the full image.

Apply کرده و به تب Documentation بروید و مانند شکل زیر عمل کنید:

Click this bar to view the full image.

حالا دیگر OK کنید.

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

مانند شکل زیر عمل کنید:

Click this bar to view the full image.

سپس Run کنید:

Click this bar to view the full image.

برای دیدن شکل موج‌ها به روی اسکوپ دوبار کلیک کرده و دگمه Autoscale را بفشارید:

Click this bar to view the full image.
ابتدا با نحوه‌ی درون‌یابی و برون‌یابی(Interpolation-Extrapolation) در محیط Simulink آشنا می‌شویم. فرض کنید در آزمایشگاه، سیستمی(سیستمی الکتریکی، مکانیکی و یا هر سیستم دیگری) با یک ورودی را مورد آزمایش قرار داده‌اید و با دادن ورودی‌های مختلف، خروجی‌های متناظر را بدست آورده‌اید بصورت زیر:

X = [1 , 1.5 , 1.8 , 2.2 , 2.7 , 3.3 , 3.9]

y = [ 2.434 , 2.667 , 2.738 , 2.956 , 2.904 , 2.819 , 2.708]

حال می‌خواهید منحنی تغییرات این سیستم را به ازای بازه‌ای پیوسته از ورودی، با کمک درون‌یابی و برون‌یابی بدست آورید. بصورت زیر عمل کنید:

بلوک‌های مورد نیاز:

Simulink >> Sources >> Clock

Simulink >> Lookup Tables >> Lookup Table

Simulink >> Sinks >> Scope

تنظیمات بلوک‌ها:

روی بلوک Lookup Table دوبار کلیک کرده و در قسمت Vector of input values بردار x و در قسمت Table data بردار y را قرار داده و OK کنید. حال باید نمودار داده‌ها را روی بلوک مشاهده کنید

تنظیمات مدل:

با فشردن کلید Ctrl+E به صفحه تنظیمات مدل رفته و مانند شکل زیر عمل کنید:

Click this bar to view the full image.

در نحوه‌ی تنظیمات، احتمالا متوجه شده‌اید که می‌خواهیم منحنی را در بازه [5 0] رسم کنیم و برای افزایش تعداد نقاط منحنی، از حداکثر گام 0.01 استفاده کرده‌ایم.

حالا مانند شکل بلوک‌ها را به یکدیگر متصل کرده و Run کنید:

Click this bar to view the full image.

خروجی به صورت زیر است:

Click this bar to view the full image.

اگر سیستم شما دو ورودی داشته باشد، از بلوک (Lookup Table (2-D و در صورت داشتن بیش از دو ورودی، می‌توانید از بلوکی به‌نام (Lookup Table (n-D استفاده کنید. همچنین برای ویرایش نمودن، تغییر نوع و رسم نمودار داده‌ها، می‌توانید با کلیک کردن به روی Edit در پنجره‌ی تنظیمات این بلوک‌ها، به پنجره‌ی Lookup Table Editor وارد شوید.

در بخش بعدی می‌خواهیم تعداد پیک‌های مثبت و منفی یک موج سینوسی را شمارش کرده و نمایش دهیم. البته شاید این مثال، اصلا کاربردی نباشد ولی نکات موجود در آن و نیز بلوک‌های معرفی شده، قطعا در مثال‌های کاربردی، به کار می‌آید.

بلوک‌های مورد نیاز:

Simulink >> Sources >> Clock

Simulink >> Sources >> Constant

Simulink >> Sources >> Sine Wave

Simulink >> Math Operations >> Gain

Simulink >> Math Operations >> Product

Simulink >> Continuous >> Derivative

Simulink >> Math Operations >> Math Function

Simulink >> Signal Routing >> Mux

Simulink >> Signal Attributes >> Data Type Conversion

Simulink >> Logic and Bit Operations >> Relational Operator

Simulink >> Logic and Bit Operations >> Logical Operator

Signal Processing Blockset >> Signal Management >> Switches and Counters >> Counter

Simulink >> Sinks >> Display

Simulink >> Sinks >> Scope

بصورت زیر بلوک‌ها را مرتب کنید:

Click this bar to view the full image.

تنظیمات بلوک‌ها:

روی بلوک Gain دوبار کلیک نموده و مقدار آن را 0.5- قرار دهید

روی بلوک Sine Wave دوبار کلیک نموده و مقدار فرکانس آن را 20*pi قرار دهید

روی بلوک Constant دوبار کلیک نموده و مقدار آن را 0 قرار دهید

روی بلوک Constant1 دوبار کلیک نموده و مقدار آن را 0 قرار دهید

روی بلوک Relational Operator دوبار کلیک نموده و در قسمت Relational operator عملگر < را انتخاب کنید

روی بلوک Relational Operator1 دوبار کلیک نموده و در قسمت Relational operator عملگر < را انتخاب کنید

روی بلوک Relational Operator2 دوبار کلیک نموده و در قسمت Relational operator عملگر > را انتخاب کنید

روی بلوک Relational Operator3 دوبار کلیک نموده و در قسمت Relational operator عملگر > را انتخاب کنید

روی بلوک Logical Operator دوبار کلیک نموده و در قسمت Icon shape نوع نمایش را distinctive انتخاب کنید

روی بلوک Logical Operator1 دوبار کلیک نموده و در قسمت Icon shape نوع نمایش را distinctive انتخاب کنید

روی بلوک Data Type Conversion دوبار کلیک نموده و در قسمت Output data type نوع داده‌ی خروجی را double انتخاب کنید

روی بلوک Data Type Conversion1 دوبار کلیک نموده و در قسمت Output data type نوع داده‌ی خروجی را double انتخاب کنید

روی بلوک Counter دوبار کلیک نموده و در قسمت Maximum count عدد 1e100 و در قسمت Output حالت Count و Reset input را غیرفعال کنید

روی بلوک Counter1 دوبار کلیک نموده و در قسمت Maximum count عدد 1e100 و در قسمت Output حالت Count و Reset input را غیرفعال کنید


تنظیمات مدل:

با فشردن کلید Ctrl+E به صفحه تنظیمات مدل رفته و مانند شکل زیر عمل کنید:

Click this bar to view the full image.

سپس بلوک‌ها را مانند شکل زیر به یکدیگر متصل کرده و Run کنید:

Click this bar to view the full image.

در شکل زیر همان‌طور که مشاهده می‌کنید نمودار زرد رنگ، تابع ورودی و نمودار صورتی رنگ، آشکارساز پیک مثبت می‌باشد.

Click this bar to view the full image.


Click this bar to view the full image.

توضیح مدل:

در طراحی این مدل، از این نکته استفاده شده است که مشتق تابع سینوسی در پیک آن برابر صفر است. در نتیجه می‌توان بوسیله‌ی عملگرهای رابطه‌ای و منطقی، یک آشکارساز پیک طراحی کرده و سپس بوسیله‌ی یک شمارنده، تعداد پیک‌ها را شمارش کرد.

توجه: در صورتی که بخواهید فرکانس موج ورودی را تا حد زیادی(مثلا 1GHz) افزایش دهید، حتما باید حداکثر گام حرکت را کاهش دهید که در غیر این صورت جواب نادرست خواهید گرفت.(چرا؟)

در مثال بعد می‌خواهیم یک مبدل آنالوگ به دیجیتال(ADC) بسیار ساده طراحی کنیم. همان‌طور که احتمالا می‌دانید،‌ یکی از پارامترهای مهم در یک ADC ، تعداد بیت‌های آن است که در واقع مشخص کننده‌ی قدرت تفکیک‌پذیری آن می‌باشد. بطور مثال یک ADC هشت بیت،‌ می‌تواند 256 حالت مختلف را ایجاد کند. حال فرض کنید که ما می‌خواهیم یک مبدل چهار بیت طراحی کنیم(این مبدل 16 حالت مختلف را ایجاد می‌کند).

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

Simulink >> Sinks >> Scope

Simulink >> Sinks >> Display

Simulink >> Math Operations >> Sum

Simulink >> Logic and Bit Operations >> Relational Operator

Simulink >> Logic and Bit Operations >> Logical Operator

Simulink >> Sources >> Ground

Simulink >> Sources >> Constant

Simulink >> Sources >> Signal Generator

Simulink >> Signal Routing >> Switch

ابتدا باید سیگنال ورودی را به 16 قسمت مساوی تقسیم کنیم در نتیجه به بعضی از پارامترهای سیگنال ورودی احتیاج داریم(البته شاید بتوان به روش‌هایی این پارامترها را محاسبه کرد ولی در این مثال هدف چیز دیگری است). مثلا فرض کنید که دامنه پیک تا پیک و همچنین مینیمم سیگنال را داریم حالا باید از مقدار مینیمم شروع کرده و به‌نسبت A/15 به مقدار مینیمم اضافه کرده تا به مقدار ماکزیمم سیگنال برسیم این مقادیر را بصورت پارامتری، درون 16 عدد بلوک Constant قرار می‌دهیم سپس سیگنال ورودی را به 17 قسمت مساوی تقسیم می‌کنیم تا بتوانیم از عملگرهای مقایسه‌ای استفاده کنیم(برای تشخیص لحظه‌ای دامنه سیگنال ورودی) پس از آن از مقدار مینیمم شروع کرده و به‌نسبت A/16 به مقدار مینیمم اضافه کرده تا به مقدار ماکزیمم سیگنال برسیم این مقادیر را بصورت پارامتری، درون 17 عدد بلوک Constant قرار می‌دهیم.

تنظیمات تمام بلوک‌های سوئیچ را بصورت زیر قرار می‌دهیم:

Click this bar to view the full image.

حال بصورت زیر عمل می‌کنیم:

Click this bar to view the full image.

زمانی که خروجی بلوک عملگر رابطه‌ای، 1 باشد(دامنه سیگنال از مقدار P+A/16 کمتر باشد) بلوک سوئیچ، عدد P (مقدار اولیه) و در غیر این صورت این بلوک مقدار صفر را عبور می‌دهد.

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

Click this bar to view the full image.

در این شکل همان‌طور که ملاحظه می‌شود، زمانی که دامنه سیگنال ورودی از مقدار P+(2*A)/16 کوچکتر و بزرگتر و یا مساوی مقدار P+A/16 باشد، خروجی بلوک AND یک شده و بلوک سوئیچ مقدار P+A/15 را از خود عبور می‌دهد و در دیگر حالات زمین در مسیر خروجی قرار می‌گیرد.

سپس به‌همین ترتیب ادامه می‌دهیم تا نهایتا به مدل زیر می‌رسیم:

Click this bar to view the full image.

نکته: می‌توان یک سیگنال‌ژنراتور و یک زمین به‌ کار برد و برای استفاده در مکان‌های دیگر از آن‌ها انشعاب گرفت(درواقع هیچ‌گونه اثر بارگذاری روی یکدیگر ندارند)

حال خروجی 16 بلوک سوئیچ را به یک جمع‌کننده با 16 ورودی می‌دهیم تا سیگنال دیجیتال شده را به ما تحویل دهد. سپس خروجی جمع‌کننده را به یک بلوک اسکوپ داده و نهایتا از کل سیستم، یک زیرسیستم تهیه کرده و آن‌را ماسک می‌کنیم و تنظیمات ماسک را بصورت زیر قرار می‌دهیم:

Click this bar to view the full image.

مدل نهایی با اندکی تغییرات اضافی بصورت زیر است:

Click this bar to view the full image.

حال مدل را به‌ازای یک ورودی سینوسی با فرکانس 1KHz و دامنه 1 و مقدار dc برابر 0 شبیه‌سازی می‌کنیم(مقدار مینیمم سیگنال 1- و دامنه پیک تا پیک آن برابر 2 است):

خروجی بصورت زیر است:

Click this bar to view the full image.


Click this bar to view the full image.
برگرفته از http://kanakh.com
نویسنده: پ متلب - چهارشنبه ۱٦ فروردین ،۱۳٩۱

رابط متلب

Desktop

به طور پیش فرض رابط متلب دارای 4 قسمت است. Command window در سمت راست و current directory و workspace در سمت چپ بالا که با تب از هم جدا شده اند. در سمت چپ پایین command history قرار دارد. همچنین در سمت چپ پایین دکمه start قرار دارد که مانند محیط ویندوز از طریق آن می توانید به shortcut های متلب دسترسی داشته باشید. از طریق مسیر desktop > desktop layout می توانید شکل های مختلف چینش پنجره ها را امتحان کنید. همچنین می توانید به طور دستی پنجره ها را مرتب کنید.
Command window جایی است که در آن دستورات را تایپ می کنید تا متلب بتواند نتایج را محاسبه , ارزیابی و یا به صورت نمودار رسم کند.
دستوراتی که در command window اجرا می کنیم در command history بایگانی می شود. از مزایای این بخش می توان به دو مورد اشاره کرد. 1- یک دید کلی از دستوراتی که قبلا اجرا کرده اید بدست می آورید. 2- زمان اجرای دستورات را نیز ذخیره می کند.
می توانید در آن روی هر دستور کلیک راست کرده , گزینه کپی را انتخاب , در command window قرار داده و اجرا کنید. یا با دبل کلیک روی دستور آن را اجرا کنید. به طور نمونه برای اجرای دستوری به ماتریسی نیاز دارید که از طریق محاسبات قبلی بدست آمده و اکنون از حافظه پاک شده است. می توانید آن دستور را سریعا از طریق command history اجرا کنید تا داده مورد نیاز در workspace ذخیره شود. البته نباید فراموش کرد که هنگام اتمام کار متغییر ها باید ذخیره شوند.
در مورد workspace در فصل 2 توضیحاتی داده شد که توصیه می شود آنرا مرور کنید. تنها نکته ای که گفته نشد این است که می توانید با دبل کلیک کردن بر روی متغیر های تعریف شده , تک تک مولفه های آنها را ویرایش کنید. همچنین اگر بر روی متغیر ها کلیک راست کنید می توانید هر متغیر را به شکل های مختلف رسم کنید. از این طریق می توانید با توابع گرافیکی بیشتری آشنا شوید. سرگرمی جالبی است البته در مورد این توابع در فصل های بعد به طور کامل بحث می شود.
فایل های جدیدی که در متلب ساخته می شوند در current directory ذخیره می شوند.
ممکن است بخواهیم آدرس curret drectoy را تغییر دهیم یا فایلی را از آدرسی دیگر اجرا کنیم. برای ایجاد یک current directry جدید چند روش وجود دارد. می توانید از تطریق پنجره current directory مانند پنجره های محیط ویندوز عمل کنید. می توانید در قسمت toolbar در قسمت curret directory روی دکمه "..." کلیک کنید و آدرس دهید. همچنین می توانید دستور مربوطه را در command window تایپ کنید که ضرورتی به گفتن دستور نیست. Current directory جایی است که می توانید فایل ها را هم اجرا و هم تغییر دهید. ولی فرضا اگر بخواهیم فایلی را فقط اجرا کنیم باید آدرس آن را add کنیم.
برای add کردن یک directory ازدستور زیر استفاده کنید.من در درایو c پوشه ای با نام matlab درست کردم و آدرس آن را add کردم.

کد:
>> addpath C:\matlab


فقط نباید در اسامی پوشه های تو در تو فاصله وجود داشته باشد.
می توانید با اجرای دستور editpath , مسیر هایی که متلب سرچ می کند بیابیم. در پنجره باز شده می توانیم پنجره های دلخواه خود را ذخیره یا بعضی از مسیر ها را حذف کنیم. فقط نباید مسیرهای پیشفرض متلب را حذف کنیم. زیرا باعث ایجاد مشکل در اجرای توابع پیش فرض خواهد شد. البته یکی از راه های افزایش سرعت متلب حذف کردن toolbox هایی است که نیاز ندارید.

بکارگیری command window

در فصل های 1 و 2 درباره چگونگی وارد کردن دستورات در command window متلب شرح دادیم.اگر بخواهیم پاسخ عبارت ریاضی sin(0.1)/0.1 و sin(0.01)/0.01 و sin(0.001)/0.001 را بدست آوریم دستورات زیر را تایپ کنید.

کد:
>> x = [0.1, 0.01, 0.001];
>> y = sin(x)./x


که بعد از اتمام محاسبات خواهید دید که دقت نتایج مورد انتظار شما نیست. نتیجه بالا تا پنج رقم اعشار را نشان می دهد نه پانزده رقم. برای مشاهده نتایج با 15 رقم اعشار ابتدای دستورات بالا باید تایپ کنیم format long. اگر دستورتان دارای خطا بود به جای تایپ دوباره دستور می توانید از command history دستور را دوباره وارد کنید و تغییرات لازم را انجام دهید. همچنین برای سرعت بیشتر , کلید های up و down دستورات اجرا شده قبلی را نشان می دهند که می توانید آنها را اصلاح کنید.

M-file

برای مسائل پیچیده ابزار های command window و command history ناکافی هستند. راه حل بهتر آن است که یک M-file ایجاد کنیم. دو نوع M-file وجود دارد. Script M-file و function M-file که در ادامه به نحوه استفاده از هر دو نوع M-file توضیح خواهیم داد.
M-file ها فایل های text معمولی حاوی دستورات متلب هستند.می توانید با استفاده از نرم افزار های کار با متن مانند word و wordpad و notepad و ... M-file ها را ایجاد و یا ویرایش کنید. همین طور می توانید از ادیتور خود متلب برای این کار استفاده کنید که امکانات بیشتری در اختیارتان قرار می دهد.برای ایجاد یک M-file می توانید در command window تایپ کنید edit یا این که از طریق file < new < M-file آنرا ایجاد کنید.

Script M-file

اکنون نحوه ایجاد یک script M-file برای حل مسئله ریاضی ای که قبلا توضیح داده شد را نشان می دهیم.
ابتدا دستور زیر را در M-file تایپ کنید و آن را با نام task1.m در current directory خود ذخیره کنید.

کد:
format long
x = [0.1, 0.01, 0.001];
y = sin(x)./x


برای اجرای این فایل باید در command window تایپ کنید task1. اگر با استفاده از نرم افزاری غیر از متلب M-file را ایجاد کردید یادتان باشد که فرمت فایل را m. قرار دهید. اگر M-file را در پنجره ای غیر از command window ذخیره کردید و در هنگام اجرا اخطار گرفتید به توضیحات مربوط به current directory در صفحات قبل مراجعه کنید. در ورژن های جدید متلب از همان پنجره ادیتور می توانید دستورات را اجرا کنید. در پنجره toolbars یک دکمه سبز رنگ مثلثی وجود دارد که در صورت کلیک کردن بر روی آن ابتدا برای save کردن آدرس می خواهد و سپس آن را اجرا می کند. در نتیجه خروجی در command window چاپ می شود. حالا می توانید M-file خود را ویرایش کنید. برای مثال اگر بخواهید y را به ازای x=0.0001 بدست آورید تغییرات زیر نیاز است.

کد:
format long
x = [0.1, 0.01, 0.001, 0.0001];
y = sin(x)./x


سپس با نوشتن task1 دوباره آن را اجرا کنید. به این نکته توجه کنید که task1 دقیقا مانند یک دستور است و از این پس متلب اعداد را به صورت format long نشان خواهد داد. که برای تغییر آن باید دوباره تایپ کنید format short تا به حالت اول برگردد.

Echo کردن دستورات

همانطور که می بینید , دستورات M-file در command window چاپ نمی شود. برای چاپ شدن دستورات و خروجی به طور همزمان از echo استفاده کنید

کد:
echo on
format long
x = [0.1, 0.01, 0.001];
y = sin(x)./x
echo off


اضافه کردن comment

در متلب می توانیم توضیحاتی را بین دستورات قرار دهیم. این دستورات می توانند محاسبات را توضیح دهند و حتی نتیجه را تفسیر کنند. هر خطی در script M-file که با علامت " % " شروع شود یک comment است و متلب با آن به عنوان دستور رفتار نمی کند. در زیر فایل task1.m را با اضافه کردن comment ویرایش کرده ایم.

کد:
echo on
% Turn on 15 digit display
format long
x = [0.1, 0.01, 0.001];
y = sin(x)./x
% These values illustrate the fact that the limit of
% sin(x)/x as x approaches 0 is 1.
echo off


زمانی که می خواهید به script M-file یک comment اضافه کنید به یاد داشته باشید که در ابتدای سطر علامت % را قرار دهید. اگر دستورات را echo کنید در command window توضیحات نیز ظاهر می شوند.

ساختار script M-file

برای آنکه نتایج script M-file ها قابل باز تولید باشد و نتایج همه جا یکسان باشد و متغیر های تعریف شده قبلی روی نتیجه تاثیر نگذارند و پنجره های گرافیکی قبلی در نتیجه فعلی تاثیر نگذارند نکات زیر را در نظر بگیرید.
می توانید در ابتدای script تایپ کنید clear all تا مطمئن شوید که متغیر های تعریف شده قبلی روی نتایج بی تاثیرند. همچنین می توانیم دستور close all را در ابتدای script M-file هایی قرار دهیم که نمودار تولید می کنند. این دستور تمام پنجره های گرافیکی قبلی را می بندد. در زیر مثالمان را با توضیحات کامل و واضح ویرایش کرده ایم.

کد:
% Remove old variable definitions
clear all
% Remove old graphics windows
close all
% Display the command lines in the command window
echo on
% Turn on 15 digit display
format long
% Define the vector of values of the independent variable
x = [0.1, 0.01, 0.001];
% Compute the desired values
y = sin(x)./x
% These values illustrate the fact that the limit of
% sin(x)/x as x approaches 0 is equal to 1.
echo off


گاهی اوقات چه در command window و چه در M-file دستور به حدی طولانی است که در یک سطر جا نمی شود. در اینجا می توانیم در انتهای خط با یک فاصله از دستورات خط تایپ کنیم "..." و در ادامه Enter بزنیم. حال می توانید ادامه خط را در خط پایین بنویسید. با این کار در خط بعدی علامت << نمی آید.

Function M-file

گاهی اوقات نیاز داریم که فرایندی را برای تعداد زیادی ورودی به یک پارامتر یا متغیر تکرار کنیم. همان طور که در فصل دو گفتیم , می توانیم به یک تابع پیش فرض متلب چندین ورودی دهیم و خروجی بگیریم. همچنین گفته شد که می توان با استفاده از دستور inline تابع مورد نظر خود را ساخت. استفاده از M-file در بسیاری از مواقع برای ساخت توابع راحت تر از استفاده از inline است. اجازه بدهید که به مثال بالا برگردیم. در تابعی که در زیر می سازیم sin(x)/x را با چند مقدار از (x=10^ (-b برای مقادیر مختلف ماتریس b محاسبه می کنیم. دستورات زیر را در M-file با نام sinelimit در current directory خود save کنید که این مسئله را حل می کند. توجه کنید که نام آن را فقط باید sinelimit بگذارید

کد:
function y = sinelimit(c)
% SINELIMIT computes sin(x)/x for x = 10^(-b),
% where b = 1, ..., c.
format long
b = 1:c;
x = 10.^(-b);
y = (sin(x)./x)';


function M-file مانند یک script M-file یک فایل متنی ساده است. اولین خط این فایل حاوی عبارت تابع است که فایل را به عنوان function M-file مشخص می کند. خط اول نام function و آرگومان های ورودی و خروجی را مشخص می کند. در این مثال نام تابع sinelimit است. به این نکته بسیار توجه کنید که نام function باید با نام M-file یکی باشد. وگرنه جواب نمی دهد. تابع sinelimit یک ورودی به نام c دارد. b یک ماتریس سطری از 1 تا c است. وقتی c را مشخص می کنیم ماتریس b محاسبه می شود و مولفه های این ماتریس نقش x را در sin(x)/x بازی می کنند و خروجی را نظیر به نظیر مولفه های ماتریس b بیرون می دهد. علامت پریم بردار خروجی را ستونی می کند.
همان طور که قبلا اشاره شد , قرار گرفتن سمی کالن در انتهای دستور موجب عدم نمایش آن در command window می شود. ولی به دلیل M-file بودن آن , اجرایش به طور خودکار مقدار متغیر خروجی را نشان می دهد. نکته عجیب این است که در صورت نگذاشتن سمی کالن خروجی دو بار چاپ می شود.
همچنین به این نکته توجه کنید که متغیر های بکار برده شده در function مثل x و b و y در sinelimit متغیر های محلی هستند.یعنی با این که این متغیر ها در M-file تعریف می شوند, هیچ ربطی به متغیر های همنام خود در workspace متلب ندارد. و متلب مقادیر آنها را بعد از محاسبه نگه نمی دارد. در فصل 4 توضیحات مفصل تری در این رابطه داده می شود.
در زیر مثالی از نحوه استفاده از تابع sinelimit آورده شده است.

کد:
>> sinelimit(5)


Loop یا حلقه

یک حلقه یا یک loop مشخص می کند که دستور یا مجموعه ای از دستورات باید چندین بار تکرار شوند. در اینجا مثال ساده ای از محاسبه و نمایش عدد !10 ( 1×2×3×4×5×6×7×8×9×10 ) آورده شده است.

کد:
f = 1;
for n = 2:10
f = f*n;
end
f


یک loop با عبارت for آغاز و با عبارت end پایان می یابد. عملیات بین این دو عبارت 9 بار تکرار می شود. قرار دادن سمی کالن در بخش میانی برای جلوگیری از چاپ f در عملیات میان حلقه ای است. اگر سمی کالن نگذاریم به ترتیب مقادیر !2 و !3 و ... چاپ می شود. اگر این دستورات را در command window تایپ کنید بعد از عبارت for در خط بعد علامت << را نخواهیم دید. اما بعد از گذاشتن end دوباره << ظاهر می شود. اگر این دستور را در یک script M-file می نویسید و می خواهید آن را echo کنید باید echo off را قبل از end قرار دهید. در غیر این صورت دستورات بین for و end به تعداد مولفه های بردار n چاپ می شود.

ارائه نتایج

گاهی اوقات ممکن است بخواهید نتایج script M-file را به دیگران نشان دهید. بدین منظور می توانید از یک M-book استفاده کنید که در فصل 6 توضیح داده شده است.یا می توانید نتایج خود را در نرم افزار های دیگری مانند word اجرا کنید و یا این که نتایج را به فرمت html تبدیل کنید که در فصل 10 بحث شده است.
اگر تعداد نتایج خروجی زیاد باشد می توانید در M-file خود بعد از هر خروجی دستور pause را وارد کنید.pause باید بعد از توضیحات مهم , نمودار ها و نقاط بحرانی script که نتایج عددی می دهد بکار برده شود. در این صورت بیننده نتایج این امکان را می یابد که نتایج را ببیند و بفهمد. وقتی که متلب به دستور pause می رسد محاسبه را متوقف می کند و منتظر زدن کلید می ماند. کلید را کمی نگه دارید!

فایلهای diary ( یاد آور)

در اینجا راه سریعی را برای ذخیره ی متن M-file در یک فایل text نشاان می دهیم تا در آینده بتوانید دستورات را بفهمید.

کد:
delete task1.txt
diary task1.txt
% Display the command lines in the command window
echo on
% Remove old variable definitions
clear all
% Remove old graphics windows
close all
% Turn on 15 digit display
format long
% Define the vector of values of the independent variable
x = [0.1, 0.01, 0.001];
% Compute the desired values
y = sin(x)./x
% These values illustrate the fact that the limit of
% sin(x)/x as x approaches 0 is equal to 1.
echo off
diary off


با این کار همزمان با اجرای برنامه بک کپی از دستورات آن گرفته می شود. دستور diary باعث می شود که همه دستورات به جز خود دستور diary در یک فایل متنی ذخیره شود.
با استفاده از delete در ابتدای M-file مطمئن می شوید که فایل دیگری با آن نام در پوشه وجود ندارد. اگر delete را قرار ندهید و فایلی با آن نام در پوشه موجود باشد متن دستورات در انتهای آن فایل ذخیره خواهد شد.

رسم نمودار

همان طور که در فصل 1 و 2 ذکر شد نمودار ها در پنجره های مجزایی نمایش داده می شوند.
در زیرمثالی از رسم نمودار ارائه می دهیم.
در این مثال می خواهیم نمودار توابع (sin(x و (sin(2x و (sin(3x را در یک صفحه رسم کنیم. در زیر برای حل این مسئله یک script M-file ارائه شده است.

کد:
echo on
% Define the x values.
x = 2*pi*(0:0.01:1);
% Remove old graphics, and get ready for several new ones.
close all; axes; hold on
% Run a loop to plot three sine curves.
for c = 1:3
plot(x, sin(c*x))
echo off
end
echo on
hold off
% Put a title on the figure.
title('Several Sine Curves')
pause



[تصویر: 5.jpg]



بیایید دستورات بالا را بررسی کنیم. ابتدا مقادیر محور x را تعریف کردیم. دستور close all همه پنجره های گرافیکی باز شده از قبل را می بندد. دستور axes یک پنجره گرافیکی تازه و خالی ایجاد می کند. و دستور hold on به متلب اجازه می دهد که چندمنحنی را روی یک صفحه رسم کند. خطوط بین for و end یک حلقه for می سازد. دستور plot مهمترین قسمت این حلقه است که منحنی های سینوسی را رسم می کند. اگر دقت کنید یک بار در ابتدا echo on گذاشتیم و سپس قبل از end دستور echo off را وارد کردیم. دلیل این کار این بود که حلقه for فقط یک بار در command window چاپ شود. سپس بعد از اتمام حلقه دوباره echo on کردیم. دستور hold off به متلب فرمان می دهد که دستورات گرافیکی بعدی را در صفحه جدیدی رسم کند. در انتها بعد از گذاشتن عنوان برای نمودار , دستور pause را وارد می کنیم تا این که بیننده بتواند قبل از نمایش تصویر , دستورات را ببیند و بفهمد.

چاپ کردن دستورات به صورت ریاضی

اگر یک فرمول ریاضی پیچیده را به صورت دستور بنویسیم , به زحمت می توان از روی آن فهمید که فرمول واقعا چه کار می کند. برای چاپ فرمول به صورت ریاضی در command window از تابع pretty استفاده می کنیم. به مثال زیر توجه کنید.

کد:
syms Rrp Xlrp Xm s Rth Xth Vth
Isabs=(((((Rrp./s).^2)+((Xlrp+Xm)^2)).^(0.5))./(((Rth+(Rrp./s).^2)+((Xth+Xlrp)^2)).^(0.5)))*(Vth/Xm)
pretty(Isabs)


که در نتیجه این فرمول را به صورت زیر در command window چاپ می کند.

[تصویر: 6.jpg]


دستور input

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

کد:
var = input('Input var here: ')


سپس متلب در command window چاپ می کند :

کد:
Input var here:
http://www.iranled.com/
نویسنده: پ متلب - چهارشنبه ۱٦ فروردین ،۱۳٩۱

عملیات محاسباتی

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

کد:
>> 3^2 - (5 + 4)/2 + 6*3


اگر در سمت چپ عبارت بالا متغیری تعریف نکنیم , متلب آنرا در متغیری به نام ans قرار می دهد.

کد:
>> ans^2 + sqrt(ans)


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

کد:
>> u = cos(10)


توابع مثلثاتی با رادیان کار می کنند.
و مثالی دیگر

کد:
>> v = sin(10)


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

کد:
>> u^2 + v^2


متلب به صورت پیش فرض با format short کار می کند. برای تغییر فرمت و افزایش دقت خروجی عبارت زیر را تایپ کنید.

کد:
>> format long


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

کد:
>> 1/3


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

کد:
>> format short


مسائل جبری

برای اینکه بتوانیم با متغیر ها به صورت سمبلیک رفتار کنیم , باید ابتدا متغیر را سمبلیک کنیم.

کد:
>> syms x y
>> (x - y)*(x - y)^2

و نتیجه حاصله را بسط می دهیم.

کد:
>> expand(ans)


و دوباره آنرا فاکتور گیری می کنیم.

کد:
>> factor(ans)


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

کد:
>> simplify((x^3 - y^3)/(x - y))


متلب تابع دیگری دارد که یک عبارت ریاضی را به همه شکل های ممکن ساده می کند.

کد:
>> simple((x^3 - y^3)/(x - y))


عبارات پارامتری و محاسبات دقیق

در متلب عدد پی با pi نشان داده می شود. جواب عبارت زیر را ببینید.

کد:
>> cos(pi/2)


جواب باید صفر شود. ولی به دلیل دقیق نبودن عدد پی کمی با صفر فاصله دارد. تابع sym این عدد را به عددی سمبلیک و دقیقا برابر pi/2 تبدیل می کند.

کد:
>> cos(sym('pi/2'))


به این نکته دقت کنید که عبارت syms x معادل عبارت ('x=sym('x است. با این تفاوت که sym تاثیر موقت دارد ولی syms تاثیر دائم دارد.
به نحوه جمع کردن دو عدد 1/2 و 1/3 به صورت سمبلیک توجه کنید.

کد:
>> sym('1/2') + sym('1/3')


حالا ببینید چگونه می توان عدد رادیکال 2 را تا 50 رقم اعشار بدست آورد.

کد:
>> vpa('sqrt(2)', 50)


تابع vpa برای گرفتن دقت بیشتر بکار می رود. برای مثال نتیجه عبارتهای (vpa(3^45 و ('vpa('3^45 را با هم مقایسه کنید. در کاربرد های تجربی بین این دو مقدار فرقی وجود ندارد ولی بعضی مواقع به عدد دقیق نیاز است که باید عبارت دوم را بکار برد.

مدیریت متغیر ها

در متلب سه طبقه متفاوت داده وجود دارد. عدد و رشته و اعداد سمبلیک. با استفاده از دستور whos می توان خلاصه ای از اسامی و متغیر هایی که تا به حال تعریف شده مشاهده کنیم.

کد:
>> whos


تا حالا 5 متغیر تعریف کردیم. X و y به دلیل به کار بردن syms سمبلیک هستند. متغیر ans هم به دلیل این که جمع دو متغیر سمبلیک است سمبلیک شده است. متغیر های u و v هم اسکالر هستند. در قسمت سایز هم از سمت چپ به ترتیب تعداد سطر ها و ستون های ماتریس را نشان می دهد.
بنویسید u=pi و 'v='pi و ('w=sym('pi و سپس دستور whos را وارد کنید تا تفاوت این داده ها را ببینید.
برای مشاهده مقدار هر متغیر نام آن را در پنجره command window بنویسید و Enter بزنید.
شما باید تشخیص دهید که هر تابع به چه نوع ورودی ای نیاز دارد. وگرنه دادن ورودی نا مناسب به آن منجر به پیام eror می شود.
برای پاک کردن همه متغیر ها از حافظه دستور clear یا clear all را وارد کنید. شما همچنین می توانید بنویسید clear x y برای این که بتوانید فقط متغیر های x و y را پاک کنید. شما معمولا باید قبل از شروع محاسبات جدید متغیر های قبلی را پاک کنید.
توجه کنید که اطلاعات مشاهده شده از طریق دستور whos در پنجره workspace هم قابل مشاهده است.
می توانیم متغیر هایی که تا به حال در حافظه موقت ذخیره شده است را ذخیره کنیم. برای این کار در قسمت workspace روی گزینه save کلیک کنید و برای ذخیره آن آدرس دهید تا با فرمت mat. ذخیره شود. بعد از بسته شدن نرم افزار متلب , هر وقت خواستید دوباره آموزش را ادامه دهید , نرم افزار را باز کنید و در قسمت workspace به بخش import data بروید و فایل ذخیره شده را انتخاب و گزینه finish را بزنید.

خطا در ورودی

یکی از رایج ترین خطا ها در ورودی که منجر به دریافت پیام eror می شود , خطای ضرب است. به مثال زیر توجه کنید.

کد:
>> 3u^2


در نتیجه متلب eror می دهد. خطا به دلیل فقدان اپراتور ضرب * است.
یکی دیگر از خطا های معمول به پرانتز مربوط می شود که معمولا پرانتز باز می شود و بسته نمی شود.
عدم تشخیص نوع ورودی مورد نیاز هم یکی خطاهای رایج در متلب است. در ادامه توضیحات بیشتری ارائه می شود.

متغیر ها و نام گذاری آنها

به مثال زیر توجه کنید.

کد:
>> x = 7
>> syms y
>> z = x^2 - 2*x*y + y

همان طور که می بینید به x عدد دادیم و y را سمبلیک کردیم. برای محاسبه z , متلب به جای متغیر x مقدار 7 قرار می دهد.

کد:
>> clear x; syms x y
>> z = x^2 - 2*x*y + y

در اینجا متغیر قبلی x را حذف کردیم و دوباره x را سمبلیک کردیم.

کد:
>> 5*y*z

همان طور که دیدید به جای z مقدار حاصل از دستورات قبلی را قرار داد.

حل معادلات

می توانیم عبارات شامل متغیر ها را با استفاده از دستورات solve و fzero حل کنیم. به مثال زیر توجه کنید.

کد:
>> solve('x^2 - 2*x - 4 = 0')

این دستور ریشه های معادله درجه دوم مورد نظر را بدست می دهد. جواب به صورت سمبلیک است. برای مشاهده اسکالر باید دستور (double(ans یا برای رقم های بیشتر دستور (vpa(ans را وارد کنید.
دستور solve همچنین می تواند چند جمله ای های درجه بالاتر را هم حل کند. همچنین می تواند معادلاتی با بیش از یک متغیر را حل کند. اگر تعداد معادلات کمتر از تعداد متغیر ها باشد باید مشخص کنیم کدام متغیر ها باید حل شوند. دستور زیر y را بر حسب متغیر x بدست می دهد.

کد:
>> solve('2*x - log(y) = 1', 'y')

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

کد:
>> [x, y] = solve('x^2 - y = 2', 'y - 2*x = 5')

این سیستم معادلات , دو جواب دارد. جواب اول x با جواب اول y همزمان رخ می دهند. جواب دوم هم به همین صورت.
می توانیم جواب اول x و y را با استفاده از دستورات زیر بگیریم.

کد:
>> x(1)
>> y(1)

در دستور بالا ابتدا ans به x اختصاص می یابد و سپس به y. جواب دوم می تواند با دستورات (x(2 و (y(2 بدست آید.
توجه کنید که اگر در سمت چپ دستور solve بردار تعریف نکنیم متلب نتیجه را نمایش تخواهد داد.
برای مثال

کد:
>> sol = solve('x^2 - y = 2', 'y - 2*x = 5')

در اینجا برای بدست آوردن بردار x تایپ کنید x=sol.x و همچنین برای y تایپ کنید y=sol.y . برای گرفتن مقادیر اول تایپ کنید (sol.x(1 .
در بعضی معادلات جواب نمی تواند سمبلیک باشد. به همین دلیل متلب جواب اسکالر می دهد.برای مثال

کد:
>> solve('sin(x)=2-x')

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

کد:
>> solve('exp(-x) = sin(x)')

جواب ,یک عدد مختلط است. حرف i در انتهای عدد دوم نمایانگر رادیکال (1-) است. با وجودی که این یک جواب معتبر برای این معادله است , این معادله جواب های حقیقی هم دارد.
نمودار برخورد (sin(x و (exp(-x در شکل زیر نشان داده شده است. نحوه رسم این نمودار در ادامه توضیح داده می شود.

[تصویر: 1.JPG]

هر کدام از نقاط برخورد یکی از جواب های معادله است.
با تابع fzero می توان جواب های معادله را بصورت عددی بدست آورد. در واقع جواب معادله بالا , صفر های معادله (exp(-x)-sin(x است. دستور زیر این عبارت را بصورت تابعی بر حسب x تبدیل می کند.

کد:
>> inline('exp(-x) - sin(x)')

در مورد دستور inline به طور کامل توضیح داده خواهد شد. دستور fzero برای اجرا در اولین آرگومان به تابع نیاز دارد.
در دستور fzero در اولین آرگومان یک تابع وجود دارد و در دومین آرگومان عددی که نزدیک یکی از ریشه های معادله است. در نتیجه برای بدست آوردن ریشه های دقیق ابتدا باید مکان تقریبی ریشه ها را بدست آوریم. این کار را می توان از طریق ترسیم معادله انجام داد. در معادله بالا برای بدست آوردن جواب معادله در نزدیکی 0.5 دستور زیر را بنویسید.

کد:
>> fzero(inline('exp(-x) - sin(x)'), 0.5)

برای یافتن ریشه بعدی , باید جواب را در نزدیکی عدد 3 جست و جو کنید.


بردار ها

یک بردار دنباله ای از اعداد است. در متلب می توانیم برداری به طول دلخواه با نوشتن مجموعه ای از اعداد با فاصله در داخل براکت ایجاد کنیم. برای مثال

کد:
>> Z = [2,4,6,8]


و

کد:
>> Y = [4 -3 5 -2 8 1]


فرض کنید که می خواهید برداری از اعداد صحیح 1 تا 9 ایجاد کنیم. در زیر روش این کار بدون تایپ اعداد را نشان می دهد.

کد:
>> X = 1:9


در دستور بالا مقدار استپ 1 بود. حالا اگر بخواهیم به فرض استپ را 2 قرار دهیم باید یک آرگومان جدید به آن اضافه کنیم.

کد:
>> X = 0:2:10


نمو همچنین میتواند کسری و یا منفی باشد. برای مثال 0:0.1:2 و ( 0 : منفی 1 : 10 ) .
آرایه های بردار X میتواند به صورت (X(1 و (X(2 و ... از بردار استخراج شود. برای مثال

کد:
>> X(3)


برای تغییر بردار X از یک بردار سطری به یک بردار ستونی , بعد از X علامت پریم (') قرار دهید.

کد:
>> X'


می توانیم روی مولفه های بردار عملیات ریاضی انجام دهیم. برای مثال همه ی آرایه های بردار X را به توان 2 می رسانیم.

کد:
>> X.^2


نقطه بکار برده شده در دستور بالا خیلی اهمیت دارد. این دستور کاری می کند که اعداد بردار X درایه به درایه و جدا گانه مربع شوند. اگر تایپ می کردیم X^2 به متلب دستور می داد که از ضرب ماتریسی استفاده کند و بردار X را در خودش ضرب می کرد و در این مورد پیام eror می داد. (در ادامه در مورد ماتریس ها بطور کامل بحث می شود. )
به طریق مشابه برای ضرب و تقسیم درایه به درایه باید به ترتیب تایپ کنید *. و /. . فقط به یاد داشته باشید که طول بردار ها باید مساوی باشد. برای مثال برای ضرب کردن مولفه های بردار X با مولفه های نظیر از بردار Y تایپ کنید.

کد:
>> X.*Y


بیشتر دستورات در متلب به صورت مولفه به مولفه به ورودی اعمال می شوند. برای مثال در عملیات جمع و تفریق نقطه نمی گذاریم. مثلا می توانیم تایپ کنیم (exp(X تا نمایی همه اعداد بردار X را بدست آوریم.

ماتریس ها

ماتریس یک آرایه مستطیلی از اعداد است . بردار های سطری و ستونی که در بالا روی آنها بحث شد نمونه ای از ماتریس بودند.ماتریس 3×4 زیر را ملاحظه کنید.

[تصویر: 5.JPG]


این ماتریس می تواند در متلب با دستور زیر وارد شود.

کد:
>> A = [1, 2, 3, 4; 5, 6, 7, 8; 9, 10, 11, 12]


توجه کنید که مولفه های هر سطر با کاما و سطر ها توسط سمی کالن از هم جدا شده اند.
اگر بین مولفه های هر سطر کاما نگذاریم هم فرقی نمی کند. ولی فاصله نباید فراموش شود.
اگر دو ماتریس A و B دارای سایز برابر باشند , جمع مولفه با مولفه آنها با نوشتن A+B بدست می آید. همچنین می توان یک عدد اسکالر را به تک تک مولفه های یک ماتریس اضافه کرد. به طریق مشابه A-B تفاضل دو ماتریس A و B را به دست می دهد. همچنین A-c یک عدد اسکالر را از همه مولفه های ماتریس A کم می کند.
اگر A قابلیت ضرب ماتریسی در B را داشته باشد ( یعنی اگر A ماتریسی n×m و B ماتریسی m×l باشد .) سپس حاصل ضرب ماتریسی A*B یک ماتریس n×l خواهد بود. یاد آوری می کنم که مولفه ماتریس A*B در i مین سطر و j مین ستون برابر است با مجموع حاصل ضرب مولفه های سطر i ام از A در ستون j ام از B . به عبارتی دیگر

[تصویر: 6.JPG]


ضرب عدد اسکالر c در بردار A به صورت c*A نوشته می شود و دستور 'A ماتریس ترانهاده مزدوج A را به دست می دهد.
ضرب ماتریس 3×4 A در بردار 'Z که 4×1 است می تواند مثال خوبی باشد.

کد:
>> A*Z'


که حاصل دستور بالا , یک ماتریس ستونی 3×1 است.
متلب دستورات دیگری نیز در این زمینه دارد که در فصل های بعدی به آن اشاره خواهد شد.

متوقف کردن خروجی

تایپ علامت سمی کالن ( ; ) در انتهای خط ورودی , مانع چاپ خروجی خواهد شد. زمانی که بخواهیم بردار یا ماتریس بزرگی تعریف کنیم از سمی کالن استفاده می کنیم. برای مثال بردار (x = -1:0.1:2) چاپ نشود بهتر است. همچنین در هر جایی که نیازی به چاپ شدن خروجی نباشد می توانیم از سمی کالن استفاده کنیم.

توابع

در متلب هم می توانید از توابع پیش فرض و هم از توابع ساخت خودتان استفاده کنید.

توابع پیش فرض
متلب تعداد زیادی تابع غیر قابل تغییر دارد. از جمله آنها توابع sqrt و sin و cos و tan و log و exp و atan (برای arctan) همچنین تعدادی تابع ریاضی خاص مثل gamma و erf و besselj. متلب همچنین تعداد زیادی ثابت پیش فرض دارد. از جمله pi (عدد پی) و i (رادیکال منفی یک) و inf (∞). در زیر چند مثال می زنیم

کد:
>> log(exp(3))


تابع log لگاریتم طبیعی می گیرد و در ریاضیات با نماد " ln " نشان داده می شود.

کد:
>> sin(2*pi/3)


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

کد:
>> sin(sym('2*pi/3'))


توابع تعریف شده توسط کاربر
در این بخش نشان می دهیم که چگونه می توان از تابع inline برای تعریف یک تابع استفاده کرد.
به نحوه تعریف تابع چند جمله ای (f(x توجه کنید

کد:
>> f = inline('x^2 + x + 1', 'x')


آرگومان دوم بکار برده شده در inline , متغیر مستقل را مشخص می کند. می توانیم این قسمت را حذف کنیم. متلب از طریق قوانین متغیر مستقل حدس می زند که چه باید باشد. در ادامه در این مورد بیشتر بحث خواهد شد.
وقتی که تابع را تعریف کردیم , میتوانیم به ازای ورودی های مختلف از آن خروجی بگیریم.

کد:
>> f(4)


تابع تعریف شده در بالا فقط می تواند به عدد اسکالر اعمال شود. برای این که بتواند برای بردار هم به کار رود از تابع vectorize متلب استفاده می کنیم.
تابع زیر تابع برداری شده معادله f است.

کد:
>> f1 = inline(vectorize('x^2 + x + 1'), 'x')


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

کد:
>> f1(1:5)


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

کد:
>> g = inline('u^2 + v^2', 'u', 'v')


گرافیک

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

رسم نمودار با استفاده از ezplot

ساده ترین راه رسم یک تابع تک متغیره استفاده از ezplot است. برای رسم معادله "x2+x+1" در بازه 2- تا 2 داریم

کد:
>> ezplot('x^2 + x + 1', [-2 2])


نمودار در پنجره جدیدی به نام " Figure 1" نشان داده می شود.
قابل ذکر است که ezplot هم آرگومان رشته ای (مانند بالا) و هم عبارت سمبلیک را قبول می کند.
نمودار گرفته شده در مثال قبل را از طریق دستور زیر نیز می توان مشاهده کرد.

کد:
>> syms x
>> ezplot(x^2 + x + 1, [-2 2])


[تصویر: 2.JPG]

نمودار ها می توانند گمراه کننده باشند اگر به محور ها توجه نکنیم.
برای مثال نمودار "x2+x+3" نیز دقیقا مانند نمودار بالا است با این تفاوت که اعداد روی محور فرق می کند.

تغییر دادن نمودار

به چند طریق می توانیم نمودار ها را تغییر دهیم. برای تغییر عنوان بالای نمودار قبلی در زیر دستورات قبلی تایپ کنید

کد:
>> title 'A Parabola'


و اجرا کنید. در نتیجه عبارت بالای نمودار تغییر می کند.
می توانیم روی محور افقی نمودار توسط اضافه کردن دستور xlabel به دستورات قبلی برچسب ایجاد کنیم. برای این کار باید جلوی xlabel اسم دل خواه خود را قرار دهیم. برای محور عمودی نیز از دستور ylabel استفاده کنید. به این نکته توجه کنید که عبارت مقابل title حتما باید با علامت آپوستروف بسته شود ولی برای گذاشتن برچسب محور ها نیازی نیست.
همچنین می توانیم محدوده محور ها را به دلخواه تنظیم کنیم. مثلا در مثال فوق می توانیم محدوده نمایش روی محور عمودی را از 1 تا 4 محدود کنیم.

کد:
>> axis([-2 2 1 4])


دو عدد اول محدوده محور افقی را مشخص می کنند. در دستور بالا محدوده هر دو محور باید مشخص شود.
در فصل پنجم توضیحات بیشتری در این زمینه داده می شود.

رسم نمودار با استفاده از plot
دستور plot به داده های برداری عددی اعمال می شود. ساده ترین ترکیب این تابع (plot(X,Y است که در آن X و Y بردار هایی با طول یکسان هستند. برای مثال

کد:
>> X = [1 2 3];
>> Y = [4 6 5];
>> plot(X, Y)

این دستور نقطه (1,4) را با یک خط به نقطه (2,6) وصل می کند و به همین صورت برای نقطه بعدی.

[تصویر: 3.JPG]

برای ترسیم نمودار "X2+X+1" در بازه -2 تا 2 ابتدا باید برداری از مقادیر X تعریف کنیم . تعداد نقاط تعریف شده باید به حدی باشد که نمودار شکسته شکسته نباشد. برای مثال زیر از استپ 0.1 استفاده می کنیم.

کد:
>> X = -2:0.1:2;
>> plot(X, X.^2 + X + 1)


[تصویر: 4.JPG]

توجه کنید که برای جلو گیری از چاپ شدن 41 مولفه بردار X از سمی کالن استفاده کردیم.
همچنین توجه کنید که دستور زیر همان نتیجه را خواهد داشت. زیرا قبلا تابع f1 را تعریف کرده ایم.

کد:
>> plot(X, f1(X))

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

رسم منحنی های چندگانه

وقتی یک نمودار جدید را رسم می کنیم , متلب نمودار قدیمی را پاک می کند و به جای آن نمودار جدید را قرار می دهد. اگر بخواهیم دو یا تعداد بیشتری نمودار را روی هم رسم کنیم از دستور hold on استفاده می کنیم. این عبارت به متلب فرمان می دهد که نمودار قبلی را نگه دارد و نمودار های جدیدی که رسم می شود بر روی همان نمودار قدیمی رسم کند. این حالت تا وقتی که دستور hold off را وارد کنیم ادامه می یابد. در اینجا مثالی از به کار گیری تابع ezplot می آوریم.

کد:
>> ezplot('exp(-x)', [0 10])
>> hold on
>> ezplot('sin(x)', [0 10])
>> hold off
>> title 'exp(-x) and sin(x)'

نتیجه قبلا در همین بخش نمایش داده شده بود. دستورات hold on و hold off با همه دستورات گرافیکی دیگر نیز به کار می رود.
با دستور plot می توان مستقیما چند نمودار را روی هم رسم کرد.

کد:
>> X = 0:0.1:10;
>> plot(X, exp(-X), X, sin(X))

فقط با این تفاوت که رنگ نمودار ها را متفاوت انتخاب می کند.

http://www.iranled.com/

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

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]<<





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


 

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

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

 

دستور 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 و در زیر رویه نمایش می دهد .

 

 

 

 

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

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

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

surfc(x,y,z)

 

 

 

 

 

 

دستور mesh :

 

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

 

 

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

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

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

mesh(x,y,z)

 

 

 

 

 

رسم کلاه مشهور مکزیکی :

 

>> [x,y]=meshgrid(-8.2:0.5:8.2);

>> r=sqrt(x.^2+y.^2);

>> z=sin(r)./r;

>> mesh(z)

دستور subplot :

 

در یک پنجره figure می توانیم بیش یک مجموعه از محورهای مختصات را رسم کنید .

دستور subplot(m,n,p) پنجره figure جاری را به m*n ناحیه تبدیل کند و ناحیه p را

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

پایین شماره گذاری می شوند .

 

مثال :

 

نمودارهای sin(x) ، cos(x) ، sinh(x) و  cosh(x)را توسط زیر نمودار ها رسم

کنیـد ؟

 

 

x=-5:0.1:5;

y=sin(x);

z=cos(x);

y1=sinh(x);

z1=cosh(x);

subplot(2,2,1)

plot(x,y)

subplot(2,2,2)

plot(x,z)

subplot(2,2,3)

plot(x,y1)

subplot(2,2,4)

plot(x,z1)

 

 

 

 

دستور area :

 

از این تابع برای ساخت نموداری که از تعدادی نواحی رو هم انباشته شده تشکیل می شود ، استفاده

کنید .دستور area(x,y) با دستور plot(x,y) برابر می باشد که در آن x,y هر دو بردار می باشند .

با این تفاوت که فضای زیر نمودار رنگ می شود .در دستور area(x,y) ، y ماتریس و x هم ماتریس

 یا برداری می باشد که تعداد سطرهای آن با تعداد سطر های y برابر می باشد .اگر x نوشته نشود ،

دستور area از مقدار پیش فرض x=1:size(y,1) استفاده می کند .

 

مثال :

 

z=cos(x);

z=-pi:pi/5:pi;

area([sin(z);cos(z)])

 

 

 

 

دستور fill :

 

برای رنگ کردن یک چند ضلعی می توانید از این تابع استفاده کنید .دستور fill(x,y,’c’)

یک چند ضلعی را که بر حسب بردار های ستونی x و y و رنگ c مشخص می شود رنگ

می کند .

 

مثال :

 

به عنوان یک مثال ساده مثلثی با رنگ سبز را رسم می نماییم :

 

>> x=[1 2 3];

>> y=[1 5 4];

>> fill(x,y,'g')

 

 

 

 

دستور pie :

 

با استفاده از تابع pie(a,b) می توانید نمودارهای استاندارد کیکی رسم کنید که در آن a

برداری از مقادیر و b یک بردار منطقی اختیاری می باشد که قاچ یا قاچهایی را که می بایست

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

>> a=[0.5 1 1.6 1.2 0.8 2.1];

>> pie(a,a==max(a))

 

نمودارهای قطبی :

 

دستور polar :

 

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

 

Polar(theta,r)

 

که در آن  theta آرایه ای از زاویه ها بر حسب رادیان بوده و r آرایه ای از فواصل می باشد .

 

 

مثال :

 

تا بعr=1+cos(theta)  را رسم کنید :

 

>> theta=0:pi/20:2*pi;

>> r=1+cos(theta);

>> polar(theta,r)

 

 

 

 

دستور bar :

 

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

 

 

>> x=-2.9:0.2:2.9;

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

>> bar(x,y)

 

 

 

 

دستور bar3 :

 

نمودار میله ای سه بعدی را رسم می کند :

 

 

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

>> x=-2.9:0.2:2.9;

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

>> bar3(x,y)

 

 

 

 

دستورstairs :

 

یک نمودار stairs با هر پله بر روی نقطه ((x,y ترسیم می کند:

 

 

>> x=-2.9:0.2:2.9;

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

stairs(x,y)

 

 

 

 

دستور compass :

 

این تابع یک نمودار قطبی با یک فلش کشیده شده از مبدا به مکان ((x,y تولید می کند .

مختصات نقاطی که قرار است ترسیم شوند در مختصات کارتزین هستند نه قطبی .

 

>> z=eig(randn(20));

>> compass(z)

 

 

http://matlabseven.blogfa.com 

 

 

 

 

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

MATLABایجاد ماتریس در

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

: MATLABایجاد یک ماتریس در

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

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

>> A=[1 2 3]

 

A =

 

     1     2     3

 

 

>> B=[5 12 14;12 9 65;171 65 36]

 

B =

 

     5    12    14

    12     9    65

   171    65    36

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

 

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

>> A=[4 5 6]

 

A =

 

     4     5     6

 

>> A'

 

ans =

 

     4

     5

     6

جمع ماتیس ها:

 

جمع دو ماتریس با درایه های برابر به راحتی با علامت جمع قابل استفاده است :

 

>> A=[1 2 3];

>> B=[4 5 6];

>> C=A+B

 

C =

 

     5     7     9

ضرب ماتریس ها:

ضرب در ماتریس ها به راحتی جمع آنهاست ولی حتما از ضرب پذیری آنها اطمینان داشته باشید:

 

>> A=[1 2 3];

>> B=[5;6;3];

>> C=A*B

 

C =

 

    26

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

 

>> A=[1 2 3;4 5 6;7 8 9];

>> B=[3 2 1;6 5 4;9 8 7];

>> C=A.*B

 

C =

 

     3     4     3

    24    25    24

    63    64    63

 

 آشنا می کنم:MATLABدر ادمه شما را با چند ماتریس پیش ساخته در

ماتریس صفر:

 می توان ماتریس با تمام درایه های صفر ایجاد کرد.zeros(n)با استفاده از تابع

به مثال توجه کنید :

>> A=zeros(3)

 

A =

 

     0     0     0

     0     0     0

     0     0     0

 

>> B=zeros(2,3)

 

B =

 

     0     0     0

     0     0     0

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

 ماتریس همانی ایجاد کنید:eye(n)با استفاده از تابع 

>> A=eye(3)

 

A =

 

     1     0     0

     0     1     0

     0     0     1

 

>> A=eye(2,3)

 

A =

 

     1     0     0

     0     1     0

ما تریس یک:

 

 ماتریس با تمام اعضای یک ایجاد کنید:ones(n)با استفاده از تابع   

 

>> A=ones(3)

 

A =

 

     1     1     1

     1     1     1

     1     1     1

 

>> B=ones(2,3)

 

B =

 

     1     1     1

     1     1     1

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

>> A=[1 2 3;4 5 6; 7 8 9]

 

A =

 

     1     2     3

     4     5     6

     7     8     9

 

>> B=A(2,3)

 

B =

 

     6

 

>> C=A(1,1)

 

C =

 

     1

می توان هر عضو ماتریس را به راحتی تغییر داد برای مثال در ماتریس بالا سطر دوم و ستون اول را به 10 تغییر می دهیم.

>> A(2,1)=10

 

A =

 

     1     2     3

    10     5     6

     7     8     9

 

ایجاد بردار:

 

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

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

 

>> i=1:2:10

 

i =

 

     1     3     5     7     9

اگر گام حرکت را مشخص نکنید به صورت پیش فرض مقدار یک را خواهد داشت:

 

>> j=-3:3

 

j =

 

    -3    -2    -1     0     1     2     3

 

در اینجا نیز ترانهاده را می توان به راحتی ایجاد کرد:

 

>> u=(1:3)'

 

u =

 

     1

     2

     3

انتخاب سطر ها و ستون ها:

 

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

 

انتخاب ستون:

>> s=[10 15 26;54 36 65;98 32 98]

 

s =

 

    10    15    26

    54    36    65

    98    32    98

 

>> s(:,1)

 

ans =

 

    10

    54

    98

انتخاب سطر:

 

 

>> s(1,:)

 

ans =

 

    10    15    26

 

انتخاب سطر و ستون خاص:

 

>> s(1:2,2:3)

 

ans =

 

    15    26

    36    65

:sumتا بع

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

 

 داریم:sبرای ماتریس

>> sum(s)

 

ans =

 

   162    83   189

 

:repmatتابع

 

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

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

 

>> B=[1 2 3 4]

 

B =

 

     1     2     3     4

 

>> BB=repmat(B,3,2)

 

BB =

 

     1     2     3     4     1     2     3     4

     1     2     3     4     1     2     3     4

     1     2     3     4     1     2     3     4

حذف عناصر از ماتریس

 

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

 

مثال:

>> a=1:2:10

 

a =

 

     1     3     5     7     9

 

>> a(3)=[]

 

a =

 

     1     3     7     9

 

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

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

 

a =

 

     1     2     3

     4     5     6

     7     8     9

 

>> a(2,2)=[]

???  Indexed empty matrix assignment is not allowed.

 

تغییر شکل ماتریس ها:

 

:reshapeدستور

 

 می توان ماتریس دیگری ایجاد کنیم که تعداد سطر و ستون آن را مشخص کرده ایم:reshapeبا دستور

 

 

>> a=[1 2 3;4 5 6;7 8 9;10 11 12]

 

a =

 

     1     2     3

     4     5     6

     7     8     9

    10    11    12

 

>> b=reshape(a,2,6)

 

b =

 

     1     7     2     8     3     9

     4    10     5    11     6    12

 

>> b=reshape(a,1,12)

 

b =

 

     1     4     7    10     2     5     8    11     3     6     9    12

 

و یا داریم

 

>> w=1:6;

>> z=reshape(w,2,3)

 

z =

 

     1     3     5

     2     4     6

 

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

 

:magic(n)تابع

 

  n(n^2+1)ی  ایجاد می کند بطوری که مجموع سطر ها و ستون های ماتریس مساوی و برابر n  ماتریس مرتبه 

است:

 

>> magic(3)

 

ans =

 

     8     1     6

     3     5     7

     4     9     2

:pascal(n)تابع

 

جدول پاسکال راتولید می کند:

 

 

>> pascal(4)

 

ans =

 

     1     1     1     1

     1     2     3     4

     1     3     6    10

     1     4    10    20

:hilb(n)تابع

 

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

>> hilb(4)

 

ans =

 

    1.0000    0.5000    0.3333    0.2500

    0.5000    0.3333    0.2500    0.2000

    0.3333    0.2500    0.2000    0.1667

    0.2500    0.2000    0.1667    0.1429

 

ماتریس بالا و پایین مثلثی:

 

:trilتابع

 

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

 

>> a=[1 2 3;4 5 6;7 8 9;10 11 12]

 

a =

 

     1     2     3

     4     5     6

     7     8     9

    10    11    12

 

>> tril(a)

 

ans =

 

     1     0     0

     4     5     0

     7     8     9

    10    11    12

:triuتا بع

 

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

 

 

>> triu(a)

 

ans =

 

     1     2     3

     0     5     6

     0     0     9

     0     0     0

:rand(n)تابع

 

برای ایجاد مقادیر تصادفی بین صفر و یک بکار می رود:

>> rand(3)

 

ans =

 

    0.9501    0.4860    0.4565

    0.2311    0.8913    0.0185

    0.6068    0.7621    0.8214

 

>> rand(2,3)

 

ans =

 

    0.4447    0.7919    0.7382

    0.6154    0.9218    0.1763

 

 

برگرفته از http://matlabseven.blogfa.com

 

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

ساده تریتن نوع استفاده از این دستور نوشتن figure در خط فرمان است که یک پنجره با مقادی پیش فرض
ایجاد می کند.
منظور از مقادیر پیش فرض، اندازه، مکان و دیگر ویژهگی های پنچره می باشد.
حال کافی است با استفاده از دستوری مثل plot نمودار دلخواه را بر روی پنجره بکشیم.
مثال 1)
 figure
 plot([1 3])
وقتی یک ماتریس به عنوان آرگمان تابع plot استفاده می شود.ستونهای ماتریس را بر حسب اندیس آنرسم می کند.
در مورد بردارها تفاوتی بین سطری یا ستونی بودن آن نیست.
با کمی دقت در بالای پنجره مثال قبل سمت چپ می توانید عبارت figure 1 را ببنید.
(ممکن است به جای 1 عددی دیگری باشد).عدد 1 نشان دهنده دستگیره(handel)نامیده می شود.
در هنگام ایجاد پنجره مطلب یه آن یک عدد اختصاص می دهد.با استفاده از دستگیره می توان
در میان انبوهی از پنجره ها با پنجره مورد نظر کارکرد.
h=figure
با استفاده از این نوع دستور مقدار دستگیره به متغیر h اختصاص پیدا می کند.
مثال 2)
h1=figure;
h2=figure;
figure(h1)
plot([1 2],[3 4])
figure(h2)
plot([1 2;3 4])
figure(n) کهnیک عدد صحیح باعث می شود که
الف) اگر پنچره ای با شمارهn وجود داشته باشد عنوان پنجره فعال روی پنجره های دیگر قرار قرار بگیرد
  ب)  پنجره ای با این شماره ایجاد شود.

نویسنده: پ متلب - سه‌شنبه ۱٥ فروردین ،۱۳٩۱

حتما تا حالا نمودارهایی رو دیده اید که دارای دو محور y می باشند که هر محور y هم رنج داده های متفاوتی از محور دیگه داره. مثلا یه محور بازه بین 0 تا 1000 رو نشون میده که مثلا مربوط به متغیر ارتفاع هستش و یه محور دیگه بازه بین 0.1 تا 0.3 رو نشون می ده که مربوط به تغییرات چگالی هستش.

خب معلومه که چون بازه این دو محور خیلی خیلی با هم اختلاف دارند اگه هر دو تای ارتفاع و چگالی رو تو یه نمودار بکشیم مطمئنا تغییرات چگالی به طور واضح دیده نخواهد شد. برای این کار باید از نمودارهایی با دو محور استفاده کنیم. شاید یکی از مهمترین این نمودارها تو مهندسی نمودار فشار - دما  تو محاسبات حرارت و یا ترمودینامیک باشه.

برای فهم بیشتر ابتدا دستورات زیر رو توی command window اجرا کنید:

>>x = 0:0.01:20;

>>y1 = 200*exp(-0.05*x).*sin(x);

>>y2 = 0.8*exp(-0.5*x).*sin(10*x);

حالا می خواهیم هر دو نمودار y1 و y2 رو نسبت به x بکشیم. دستور زیر را اجرا کنید:

>>plot(x,y1,'b',x,y2,'g')
همانطور که میبینید (شکل 1) از اونجا که بازه تغییرات y1 خیلی بزرگتر از y2 هستش اصلا تغییرات y2 در این شکل دیده نمیشه و برای مثال شما نمیتونید همچین شکلی رو توی پایان نامه یا مقاله قرار دهید.
پس بهتر است که از یک نمودار با دو محور y استفاده کنیم که در یک محور نمودار y1 و در دیگری y2 را رسم کنیم. دستور نمودارهای دو محوره در متلب plotyy می باشد. دستور زیر را اجرا نمائید:

>> plotyy(x,y1,x,y2)

همانطور که دیده می شود (شکل 2) نموداری با دو محور y برای ما رسم می شود که در محور سمت چپ نمودار اولی یعنی y1 بر حسب x و در محور سمت راست نمودار دومی یعنی y2 بر حسب x رسم شده است. در این عکس می توان تغییرات y2 را به وضوح مشاهده نمود.

در رابطه به نمودار های دو محوره چندین بحث وجود دارد که باید به آنها اشاره کنیم:

1- چگونه یک محور و یا هر دو محور y و یا محور x را لگاریتمی کنیم؟

جواب: همانطور که می دانیم در نمودارهای دو بعدی نوع محورها می توانند خطی و یا لگاریتمی باشند. برای توضیحات بیشتر می توانید به «ایجاد نمودارهای دوبعدی با محورهای لگاریتمی در متلب» در همین وبلاگ مراجعه کنید.

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

به جای دستور plotyy(x,y1,x,y2) که نوشتیم می توانستیم یکی از دستورات زیر را اجرا کنیم:

plotyy(x,y1,x,y2) = plotyy(x,y1,x,y2,'plot') = plotyy(x,y1,x,y2,@plot)

عبارت 'plot' در دستور دوم و یا @plot در دستور سوم به این معنی است که هر دو محور y دارای نوع خطی می باشند. چون هر دو محور y دارای نوع خطی می باشند نوشتن یک عبارت 'plot'  و یا @plot  برای هر دو به کار می رود. همانطور که دیدیم ننوشتن هیچ عبارتی هم به صورت default نوع محور را خطی می کند.

اما اگرکه مثلا بخواهیم محور y مربوط به نمودار y1 خطی و نمودار y2 لگاریتمی باشد باید به صورت زیر بنویسیم:

>> plotyy(x,y1,x,y2,'plot','semilogy')

واضح است که به جای عبارت 'semilogy' می توان @semilogy و به جای 'plot' می توان @plot را نوشت.

دیگر حالتها را می توان به صورت زیر نوشت:

الف- هر دو محور y لگاریتمی و محور x خطی :                                                               >>plotyy(x,y1,x,y2,'semilogy')

ب- هر دو محور y لگاریتمی و محور x لگاریتمی :                                                                 ‌>>plotyy(x,y1,x,y2,'loglog')

عبارت plotyy(x,y1,x,y2,'loglog','plot') دارای خطای منطقی می باشد علت آن هم این است که از آنجا که ما یک محور x داریم این محور نمی تواند در آن واحد هم خطی باشد و هم لگاریتمی که در این عبارت محور x برای y1 لگاریتمی و برای y2 خطی می باشد. پس باید حواسمان را جمع کنیم.!

2- رنگ نمودارها و محورها را چگونه تغییر دهیم و یا چگونه ضخامت خط را تغییر داده و یا marker بر نمودار بگذاریم و یا اینکه چگونه برچسب برای محورها قرار دهیم؟

برچسب گذاری برای محور x و محور y سمت چپ با همان دستورات xlabel و ylabel انجام می پذیرد:

>>xlabel('x')

>>ylabel('y_1')

می توان با دستور title هم یک عنوان به نمودار داد و یا با دستور legend می توان برای نمودار راهنما قرار داد:

>>title('Type of Graph - -> plotyy')

>>legend('y_1','y_2')

اما مشکل قرار دادن برچسب بر روی محور y سمت راست می باشد.

برای قرار دادن بر چسب بر روی محور y سمت راست نیاز است که دستورات set و get را توضیح دهیم که چون هنوز پست مربوط به این دستورات را برایتان قرار نداده ام مجبورم فقط خود دستورات را بنویسم. اگرکه در فهم آن مشکلی داشتید می توانید منتظر بمانید تا من در پست های آینده این دستورات مهم را توضیح دهم.

برای گذاشتن برچسب بر روی محور y سمت راست و یا تغییر دادن رنگ نمودارهای آبی و سبز و یا تغییر رنگ محورها باید ابتدا دستور plotyy را به شکل زیر بنویسیم:

>>[AX P1 P2]=plotyy(x,y1,x,y2);

با این کار سه متغیر به نامهای AX و P1 و P2 در workspace ساخته می شوند که متغیر AX یک بردار با دو مولفه می باشد. مولفه AX(1) نشان دهنده محور y سمت چپ و مولفه AX(2) نشان دهنده محور y سمت راست می باشد.

متغیر P1 نشان دهنده نمودار اولی یعنی y1 بر حسب x و متغیر P2 نشان دهنده نمودار دومی یعنی y2 بر حسب x می باشد. پس برای نمونه اگر که می خواهیم رنگ نمودار y1 بر حسب x که در اینجا آبی هست را تغییر دهیم باید خاصیت رنگ متغیر P1 را تغییر دهیم و یا اگر می خواهیم برای نمودار y2 بر حسب x از marker استفاده کنیم باید برای متغیر P2 از marker استفاده کنیم.

مثلا اگر قرار است رنگ محور سمت چپ را عوض کنیم باید در واقع رنگ AX(1) را عوض کنیم و یا مثلا اگر قرار است برای محور سمت راست برچسب بگذاریم باید خاصیت ylabel را برای AX(2) عوض کنیم.

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

>>set(P1,'color','r')

>>set(P2,'color',[0.5 0 1])

با دستور اول رنگ نمودار y1 قرمز می شود. می توان به جای 'r' از دیگر حروف استفاده کرد. برای مطالعه بیشتر به بخش «نمودار های دو بعدی در متلب» همین وبلاگ مراجعه نمائید.

دستور دوم نوع دیگری از ترکیب رنگها می باشد. متلب با خاصیت RGB سروکار دارد. سه عددی که در دستور بعدی به کار رفته است به ترتیب عدد اول سهم رنگ قرمز (R) و عدد دوم سهم رنگ سبز (G) و عدد سوم سهم رنگ آبی (B) را نشان می دهد. که این اعداد باید بین صفر و یک باشند. مثلا اگر هر سه را یک قرار دهیم رنگ حاصله سفید و اگر هر سه را صفر قرار دهیم رنگ حاصله مشکی خواهد بود. برای مثال  به جای عبارت set(P1,'color','r') از عبارت set(P1,'color',[1 0 0]) نیز می توان استفاده کرد.

مثلا می خواهیم نوع خط نمودار y2 را به خط چین تغییر دهیم و یا نوع خط نمودار y1 را نقطه چین کنیم و مثلا ضخامت خط نمودار y1 را 3 قرار دهیم:

>>set(P2,'linestyle','--')

>>set(P1,'linestyle',':','Linewidth',2)

و یا اینکه برای نمودار y2 از marker دایره استفاده کنیم:

>>set(P2,'marker','o')

تغییر رنگ خود محورها:

همانطور که در شکل 2 مشاهده می کنید به صورت پیش فرض رنگ محور سمت چپ آبی و محور سمت راست سبز می باشد. اگر که بخواهید خاصیت رنگ این محورها را تغییر دهید همانطور که گفته شد باید خاصیت رنگ AX(1) برای محور سمت چپ و خاصیت رنگ AX(2) برای محور سمت راست را تغییر دهیم. هر محور خاصیتی به نام ycolor دارد که ما با دستور set می توانیم یک رنگی رو به اون set کنیم:

>>set(AX(1),'ycolor','k')

>>set(AX(2),'ycolor','m')

با دستور اول رنگ محور سمت چپ مشکی شده و با دستور دوم رنگ محور سمت راست بنفش می شود. می توانید از ترکیب رنگهای RGB هم استفاده نمائید مانند:

>>set(AX(1),'ycolor',[1 1 1])

با این دستور رنگ محور سمت چپ سفید می شود.

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

>>set(AX,'ycolor','r')

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

 

گذاشتن بر چسب برای محور y سمت راست:

همانطور که اشاره کردیم با دستور ylabel می توانیم برای محور سمت چپ برچسب بگذاریم اما برای محور سمت راست باید از دستور دیگری استفاده نمائیم. هر محوری خاصیتی به نام string دارد که در واقع برچسبی است که بر آن محور قرار میگیرد. پس به زبان ساده ما باید string محور سمت راست را تغییر دهیم. اما علاوه بر این مطلب باید بدانیم که این string مربوط می شه به خاصیت ylabel اون محور. به طور ساده اگه بخوام بگم باید بگیم ما می خواهیم خاصیت ylabel مربوط به محور AX(2) رو تغییر بدهیم، یعنی چی که تغییر بدهیم؟ یعنی اینکه خاصیت string اون رو به هر چیزی که ما می خواهیم تغییر دهیم. این مطالبی رو که گفتم به زبان متلب باید به صورت زیر بنویسیم:

>>set(get(AX(2),'ylabel'),'string','y_2')

به کمک دستور get(AX(2),'ylabel') به متلب می فهمونیم که چه چیزی رو تو حافظه بگیره و ما با این دستور می گیم که خاصیت ylabe از محور سمت راست رو بگیر. خوب متلب میگه گرفتم، حالا با دستور set میگیم string اون رو به y_2 تغییر بده. به جای y_2 هر چیزی که بنویسید به عنوان برچسب محور سمت راست قرار داده خواهد شد.

واضح است که به جای دستور ylabel('y_1') می توان از دستور زیر استفاده کرد:

>>set(get(AX(1),'ylabel'),'string','y_1')

که به نظر کار بیهوده ای می رسد چراکه دستور ylabel('y_1') خیلی کوتاه تر و فهم آن ساده تر می باشد!

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

>>set(AX,'xcolor','g')

با این دستور رنگ محور x سبز می شود. با دستور زیر هم میتونید رنگ محور x بالا رو تغییر بدید:

>> set(gca,'xcolor','k')

با این دستور رنگ محور بالایی مشکی خواهد شد. (gca مخفف get current axis می باشد.)

شکل 3 شکل نهایی این دستورات خواهد بود.

شکل های 1 و2 و 3 و همچنین m فایل مربوط به این پست را در آدرس زیر به صورت یه فایل rar قرار داده ام که می تونید دانلود کنید. پسورد فایل rar هم هستش: www.elmoya.mihanblog.com

https://rapidshare.com/files/459251068/Plotyy_files.rar


نویسنده: پ متلب - سه‌شنبه ۱٥ فروردین ،۱۳٩۱

حتما تا حالا نمودارهایی رو دیده اید که دارای دو محور y می باشند که هر محور y هم رنج داده های متفاوتی از محور دیگه داره. مثلا یه محور بازه بین 0 تا 1000 رو نشون میده که مثلا مربوط به متغیر ارتفاع هستش و یه محور دیگه بازه بین 0.1 تا 0.3 رو نشون می ده که مربوط به تغییرات چگالی هستش.

خب معلومه که چون بازه این دو محور خیلی خیلی با هم اختلاف دارند اگه هر دو تای ارتفاع و چگالی رو تو یه نمودار بکشیم مطمئنا تغییرات چگالی به طور واضح دیده نخواهد شد. برای این کار باید از نمودارهایی با دو محور استفاده کنیم. شاید یکی از مهمترین این نمودارها تو مهندسی نمودار فشار - دما  تو محاسبات حرارت و یا ترمودینامیک باشه.

برای فهم بیشتر ابتدا دستورات زیر رو توی command window اجرا کنید:

>>x = 0:0.01:20;

>>y1 = 200*exp(-0.05*x).*sin(x);

>>y2 = 0.8*exp(-0.5*x).*sin(10*x);

حالا می خواهیم هر دو نمودار y1 و y2 رو نسبت به x بکشیم. دستور زیر را اجرا کنید:

>>plot(x,y1,'b',x,y2,'g')
همانطور که میبینید (شکل 1) از اونجا که بازه تغییرات y1 خیلی بزرگتر از y2 هستش اصلا تغییرات y2 در این شکل دیده نمیشه و برای مثال شما نمیتونید همچین شکلی رو توی پایان نامه یا مقاله قرار دهید.
پس بهتر است که از یک نمودار با دو محور y استفاده کنیم که در یک محور نمودار y1 و در دیگری y2 را رسم کنیم. دستور نمودارهای دو محوره در متلب plotyy می باشد. دستور زیر را اجرا نمائید:

>> plotyy(x,y1,x,y2)

همانطور که دیده می شود (شکل 2) نموداری با دو محور y برای ما رسم می شود که در محور سمت چپ نمودار اولی یعنی y1 بر حسب x و در محور سمت راست نمودار دومی یعنی y2 بر حسب x رسم شده است. در این عکس می توان تغییرات y2 را به وضوح مشاهده نمود.

در رابطه به نمودار های دو محوره چندین بحث وجود دارد که باید به آنها اشاره کنیم:

1- چگونه یک محور و یا هر دو محور y و یا محور x را لگاریتمی کنیم؟

جواب: همانطور که می دانیم در نمودارهای دو بعدی نوع محورها می توانند خطی و یا لگاریتمی باشند. برای توضیحات بیشتر می توانید به «ایجاد نمودارهای دوبعدی با محورهای لگاریتمی در متلب» در همین وبلاگ مراجعه کنید.

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

به جای دستور plotyy(x,y1,x,y2) که نوشتیم می توانستیم یکی از دستورات زیر را اجرا کنیم:

plotyy(x,y1,x,y2) = plotyy(x,y1,x,y2,'plot') = plotyy(x,y1,x,y2,@plot)

عبارت 'plot' در دستور دوم و یا @plot در دستور سوم به این معنی است که هر دو محور y دارای نوع خطی می باشند. چون هر دو محور y دارای نوع خطی می باشند نوشتن یک عبارت 'plot'  و یا @plot  برای هر دو به کار می رود. همانطور که دیدیم ننوشتن هیچ عبارتی هم به صورت default نوع محور را خطی می کند.

اما اگرکه مثلا بخواهیم محور y مربوط به نمودار y1 خطی و نمودار y2 لگاریتمی باشد باید به صورت زیر بنویسیم:

>> plotyy(x,y1,x,y2,'plot','semilogy')

واضح است که به جای عبارت 'semilogy' می توان @semilogy و به جای 'plot' می توان @plot را نوشت.

دیگر حالتها را می توان به صورت زیر نوشت:

الف- هر دو محور y لگاریتمی و محور x خطی :                                                               >>plotyy(x,y1,x,y2,'semilogy')

ب- هر دو محور y لگاریتمی و محور x لگاریتمی :                                                                 ‌>>plotyy(x,y1,x,y2,'loglog')

عبارت plotyy(x,y1,x,y2,'loglog','plot') دارای خطای منطقی می باشد علت آن هم این است که از آنجا که ما یک محور x داریم این محور نمی تواند در آن واحد هم خطی باشد و هم لگاریتمی که در این عبارت محور x برای y1 لگاریتمی و برای y2 خطی می باشد. پس باید حواسمان را جمع کنیم.!

2- رنگ نمودارها و محورها را چگونه تغییر دهیم و یا چگونه ضخامت خط را تغییر داده و یا marker بر نمودار بگذاریم و یا اینکه چگونه برچسب برای محورها قرار دهیم؟

برچسب گذاری برای محور x و محور y سمت چپ با همان دستورات xlabel و ylabel انجام می پذیرد:

>>xlabel('x')

>>ylabel('y_1')

می توان با دستور title هم یک عنوان به نمودار داد و یا با دستور legend می توان برای نمودار راهنما قرار داد:

>>title('Type of Graph - -> plotyy')

>>legend('y_1','y_2')

اما مشکل قرار دادن برچسب بر روی محور y سمت راست می باشد.

برای قرار دادن بر چسب بر روی محور y سمت راست نیاز است که دستورات set و get را توضیح دهیم که چون هنوز پست مربوط به این دستورات را برایتان قرار نداده ام مجبورم فقط خود دستورات را بنویسم. اگرکه در فهم آن مشکلی داشتید می توانید منتظر بمانید تا من در پست های آینده این دستورات مهم را توضیح دهم.

برای گذاشتن برچسب بر روی محور y سمت راست و یا تغییر دادن رنگ نمودارهای آبی و سبز و یا تغییر رنگ محورها باید ابتدا دستور plotyy را به شکل زیر بنویسیم:

>>[AX P1 P2]=plotyy(x,y1,x,y2);

با این کار سه متغیر به نامهای AX و P1 و P2 در workspace ساخته می شوند که متغیر AX یک بردار با دو مولفه می باشد. مولفه AX(1) نشان دهنده محور y سمت چپ و مولفه AX(2) نشان دهنده محور y سمت راست می باشد.

متغیر P1 نشان دهنده نمودار اولی یعنی y1 بر حسب x و متغیر P2 نشان دهنده نمودار دومی یعنی y2 بر حسب x می باشد. پس برای نمونه اگر که می خواهیم رنگ نمودار y1 بر حسب x که در اینجا آبی هست را تغییر دهیم باید خاصیت رنگ متغیر P1 را تغییر دهیم و یا اگر می خواهیم برای نمودار y2 بر حسب x از marker استفاده کنیم باید برای متغیر P2 از marker استفاده کنیم.

مثلا اگر قرار است رنگ محور سمت چپ را عوض کنیم باید در واقع رنگ AX(1) را عوض کنیم و یا مثلا اگر قرار است برای محور سمت راست برچسب بگذاریم باید خاصیت ylabel را برای AX(2) عوض کنیم.

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

>>set(P1,'color','r')

>>set(P2,'color',[0.5 0 1])

با دستور اول رنگ نمودار y1 قرمز می شود. می توان به جای 'r' از دیگر حروف استفاده کرد. برای مطالعه بیشتر به بخش «نمودار های دو بعدی در متلب» همین وبلاگ مراجعه نمائید.

دستور دوم نوع دیگری از ترکیب رنگها می باشد. متلب با خاصیت RGB سروکار دارد. سه عددی که در دستور بعدی به کار رفته است به ترتیب عدد اول سهم رنگ قرمز (R) و عدد دوم سهم رنگ سبز (G) و عدد سوم سهم رنگ آبی (B) را نشان می دهد. که این اعداد باید بین صفر و یک باشند. مثلا اگر هر سه را یک قرار دهیم رنگ حاصله سفید و اگر هر سه را صفر قرار دهیم رنگ حاصله مشکی خواهد بود. برای مثال  به جای عبارت set(P1,'color','r') از عبارت set(P1,'color',[1 0 0]) نیز می توان استفاده کرد.

مثلا می خواهیم نوع خط نمودار y2 را به خط چین تغییر دهیم و یا نوع خط نمودار y1 را نقطه چین کنیم و مثلا ضخامت خط نمودار y1 را 3 قرار دهیم:

>>set(P2,'linestyle','--')

>>set(P1,'linestyle',':','Linewidth',2)

و یا اینکه برای نمودار y2 از marker دایره استفاده کنیم:

>>set(P2,'marker','o')

تغییر رنگ خود محورها:

همانطور که در شکل 2 مشاهده می کنید به صورت پیش فرض رنگ محور سمت چپ آبی و محور سمت راست سبز می باشد. اگر که بخواهید خاصیت رنگ این محورها را تغییر دهید همانطور که گفته شد باید خاصیت رنگ AX(1) برای محور سمت چپ و خاصیت رنگ AX(2) برای محور سمت راست را تغییر دهیم. هر محور خاصیتی به نام ycolor دارد که ما با دستور set می توانیم یک رنگی رو به اون set کنیم:

>>set(AX(1),'ycolor','k')

>>set(AX(2),'ycolor','m')

با دستور اول رنگ محور سمت چپ مشکی شده و با دستور دوم رنگ محور سمت راست بنفش می شود. می توانید از ترکیب رنگهای RGB هم استفاده نمائید مانند:

>>set(AX(1),'ycolor',[1 1 1])

با این دستور رنگ محور سمت چپ سفید می شود.

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

>>set(AX,'ycolor','r')

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

 

گذاشتن بر چسب برای محور y سمت راست:

همانطور که اشاره کردیم با دستور ylabel می توانیم برای محور سمت چپ برچسب بگذاریم اما برای محور سمت راست باید از دستور دیگری استفاده نمائیم. هر محوری خاصیتی به نام string دارد که در واقع برچسبی است که بر آن محور قرار میگیرد. پس به زبان ساده ما باید string محور سمت راست را تغییر دهیم. اما علاوه بر این مطلب باید بدانیم که این string مربوط می شه به خاصیت ylabel اون محور. به طور ساده اگه بخوام بگم باید بگیم ما می خواهیم خاصیت ylabel مربوط به محور AX(2) رو تغییر بدهیم، یعنی چی که تغییر بدهیم؟ یعنی اینکه خاصیت string اون رو به هر چیزی که ما می خواهیم تغییر دهیم. این مطالبی رو که گفتم به زبان متلب باید به صورت زیر بنویسیم:

>>set(get(AX(2),'ylabel'),'string','y_2')

به کمک دستور get(AX(2),'ylabel') به متلب می فهمونیم که چه چیزی رو تو حافظه بگیره و ما با این دستور می گیم که خاصیت ylabe از محور سمت راست رو بگیر. خوب متلب میگه گرفتم، حالا با دستور set میگیم string اون رو به y_2 تغییر بده. به جای y_2 هر چیزی که بنویسید به عنوان برچسب محور سمت راست قرار داده خواهد شد.

واضح است که به جای دستور ylabel('y_1') می توان از دستور زیر استفاده کرد:

>>set(get(AX(1),'ylabel'),'string','y_1')

که به نظر کار بیهوده ای می رسد چراکه دستور ylabel('y_1') خیلی کوتاه تر و فهم آن ساده تر می باشد!

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

>>set(AX,'xcolor','g')

با این دستور رنگ محور x سبز می شود. با دستور زیر هم میتونید رنگ محور x بالا رو تغییر بدید:

>> set(gca,'xcolor','k')

با این دستور رنگ محور بالایی مشکی خواهد شد. (gca مخفف get current axis می باشد.)

شکل 3 شکل نهایی این دستورات خواهد بود.

شکل های 1 و2 و 3 و همچنین m فایل مربوط به این پست را در آدرس زیر به صورت یه فایل rar قرار داده ام که می تونید دانلود کنید. پسورد فایل rar هم هستش: www.elmoya.mihanblog.com

https://rapidshare.com/files/459251068/Plotyy_files.rar


نویسنده: پ متلب - سه‌شنبه ۱٥ فروردین ،۱۳٩۱

یکی از پایه ای ترین مباحث برای کسی که می خواهد با متلب کار کند دونستن کار با ماتریس ها و بردار ها هستش.

در این پست می خوام نحوه ایجاد بردارها و ماتریس ها و توابع مخصوص به ماتریس ها رو بهتون آموزش بدم. امیدوارم که بپسندین!

 

نحوه ایجاد بردار:

راه اول: یک زمانی اعضای بردار رو خودتون دستی می خواهید وارد کنید. مثلا یه بردار سرعت دارید که اعضای اون 20 و 25 و 30 می باشد. برای این کار این اعداد را با یک فاصله و بین دو علامت [ ] قرار می دهید:

>>velocity=[20  25  30]

با این کار بردار سرعت با سایز 1x3 برای شما ایجاد می گردد.

همانطور که مشاهده کردید با این کار شما یک بردار سطری ایجاد کرده اید. می توانید به جای فاصله بین اعداد از “,”  هم استفاده کنید:

>>velocity=[20,25,30]

پس طریقه ایجاد یک بردار سطری زمانیکه درایه های اون بردار رو خودتون وارد می کنید را فرا گرفتیم.

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

1- از ترانهاده استفاده کنیم. علامت ترانهاده در متلب یک تک کوتیشن هستش:

>>v = [20  25  30]’

2- به جای گذاشتن فاصله یا “,” در بین اعداد از “;” استفاده کنیم:

>>v = [25;25;30]

با این کار بردار ستونی ایجاد می گردد.

 

راه دوم:

راه دوم، ایجاد یک بردار با فاصله مساوی بین درایه های اون می باشد. برای مثال می خواهیم برداری با درایه های 1و3و5و7و9و11 ایجاد کنیم. میبینیم که در این بردار عدد اول 1 و بقیه اعداد دو تا دوتا اضافه شده اند تا به عدد آخر یعنی 11 رسیده اند. متلب یک فرم مشخصی برای این گونه بردارها دارد:

m:q:n

این فرم نوشتن یعنی از عدد m تا عدد n ، q تا q‌ تا برو جلو. در واقع گام بردار q می باشد:

>>A=1:2:11

با دستور بالا بردار A با درایه ای 1و3و5و7و9و11 ایجاد می گردد. که یک بردار سطری می باشد.

در ایجاد بردار سطری گذاشتن [ ] نیازی نمی باشد.

اما اگر بخواهید به همین فرم یک بردار ستونی ایجاد کنید و باید ‌[ ] را گذاشته و علامت ترانهاده را نیز به کار ببرید:

>>B=[1:2:11]’

نکات:

1- اگر عدد گام را ننویسید مثل A=1:4 خود متلب گام را برابر با یک می گیرد.

2- اگر بخواهید از گام منفی استفاده کنید حتما باید m از n بزرگتر باشد: B=5:-2:0

3- در این حالت باید حواستان باشد که ممکن است عدد n جزو درایه های یک بردار نباشد چراکه همه چیز بسته به گام دارد. برای مثال در مثال زیر عدد 10 جزو درایه های بردار نخواهد بود:

>>C=1:2:10

 

راه سوم: استفاده از دستور linspace(m,n,q)

به کمک این دستور می توان برداری را بدین صورت ایجاد کرد که عدد اول آن بردار m و عدد آخر n خواهد بود و  بین این دو عدد تعداد q-2 عدد دیگر قرار دارد که متلب خود فاصله بین اعداد را مشخص خواهد کرد:

>>linspace(3,5,4)

ans =

       3.0000    3.6667    4.3333    5.0000

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

>>linspace(3,5,4)’

نکته: متلب دستور دیگری به نام logspace هم دارد که کارش شبیه linspace است با این تفاوت که تقسیم بندی ها لگاریتمی می باشد.

 

اعمال بر روی بردارها:

1- برای انتخاب یک عضو از یک بردار باید جایگاه آن را به کار برد:

>>A=[-1  2  0  5]

>>A(3)

ans =

         0

اگر بخواهیم عضو اول تا سوم بردار A را نشان دهیم:

>>A(1:3)

اگر بخواهیم عضو دوم تا آخر بردار A را نشان دهیم:

>>A(2:end)

اگر بخواهیم عضوهای اول و دوم وچهارم از A را نشان دهیم:

>>A([1 2 4])

اگر بخواهیم عضو های اول و سوم از A را نشان دهیم:

>>A([1 3])

یا

>>A(1:2:3)

2- برای عوض کردن یک عضو یا چند عضو کافیست در برابر جایگاه آن مقدار جدید را وارد کنیم. مثلا می خواهیم عضو سوم از بردار A که صفر می باشد را برابر با 10 قرار دهیم:

>>A(3)=10

A=

    -1   2   10   5

حالا می خواهیم اعضای 1 تا 3 را عوض کنیم:

>>A(1:3)=[12  13  6]

A=

12  13  6  5

3- برای حذف یک یا چند عضو جایگاه آن را برابر با   [‌]  قرار می دهیم. مثلا می خواهیم عضد چهارم بردار A را حذف کنیم:

>>A(4)=[]

A=

     12  13  6

توجه کنید که با این کار سایز A هم 1x3 خواهد شد. برای حذف چندین عضو هم به همین ترتیب عمل می کنیم:

>>A(1:2)=[]

A=

     6

4- برای اضافه کردن هم می توانیم در برابر جایگاههای جدید مقادیر جدید را قرار دهیم. فرض کنید بردار B به صورت زیر باشد:

>>B=[1  2  5  -4]

حال می خواهیم به این بردار عضو پنجمی را با مقدار 9 اضافه کنیم:

>>B(5)=9

B=

    1  2  5  -4  9

توجه کنید که مثلا حالا می خواهید عضو نهمی با مقدار 3- به B اضافه کنید:

>>B(9)=-3

B=

     1  2  5  -4  9  0  0   0  -3

چون برای جایگاههای ششم و هفتم و هشتم مقداری داده نشد خود متلب آنها را برابر صفر در نظر میگیرد.

5- چسباندن دو بردار به یکدیگر. فرض کنید دو بردار  A و B را داریم و می خواهیم با کنار هم قرار دادن آنها بردار C را ایجاد کنیم:

اگر A و B سطری باشند:

>>C=[A B]

اگر A و B‌ ستونی باشند:

>>C=[A;B]

 

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

فرض کنید که می خواهیم ماتریس زیر را ایجاد کنیم:

           1200  5.0  0.25   1.1

data = 1400  4.1  0.23   0.8

           1500  3.2  0.22   0.3

کافی است سطر به سطر اعداد را بنویسیم و برای رفتن به سطر بعد از یک سمیکالون استفاده کنیم. می توانید برای ایجاد سطرها در بین اعداد از فاصله یا کاما استفاده کنید:

>>data = [1200  5.0  0.25  1.1;1400  4.1  0.23  0.8;1500  3.2  0.22 0.3]

اعمال بر ماتریس ها:

1- برای انتخاب یک عضو از ماتریس باید جایگاه سطر و ستون آنرا به ترتیب اول سطر و دوم ستون مشخص کنید. برای مقال برای انتخاب عدد 1400 باید بنویسیم:

>>data(2,1)

برای انتخاب مثلا دو عدد 4.1 و 0.23 باید بنویسیم:

>>data(2,2:3)

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

>>data(1:3,2) = data(1:end,2) = data(:,2)

2- برای عوض کردن اعضا باید سطر و ستون را مشخص کرده و برابر اعداد جایگزین نمائیم.

برای عوض کردن عدد سطر سوم و ستون چهارم با عدد 10:

>>data(3,4)=10

برای عوض کردن اعداد سطر سوم:

>>data(3,:)=[1 2 3 4]

برای عوض کردن اعضای ستون اول:

>>data(:,1)=[4;5;6]

3- برای حذف اعضا: دقت کنید که در حذف فقط می توانید یک سطر و یا سا ستون را کلا حذف کنید چراکه در غیر اینصورت حالت ماتریسی به هم خواهد خورد. برای حذف ستون سوم:

>>data(1:3,3)=[]

4- برای اضافه کردن اعضا: اضافه کردن هم می تواند به صورت سری یا ستونی باشد:

>>data(:,5)=[6;7;8]

>>data(4,:)=[1 0 -1 2]

>>data(6,6)=9

در عبارت آخر عوض سطر 6  و ستون 6 برابر با 9 قرار میگیرد و دیگر اعضا جدید برابر صفر خواهند شد.

http://elmoya.mihanblog.com/post/28

نویسنده: پ متلب - سه‌شنبه ۱٥ فروردین ،۱۳٩۱

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

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

نویسنده: پ متلب - سه‌شنبه ۱٥ فروردین ،۱۳٩۱

قبل از اینکه بخواهم نحوه ایجاد نمودارهای 2 بعدی رو به شما عزیزان بگم باید یادآوری کنم فرض من بر این هست که شما دوستان مباحث ابتدایی متلب مثل ایجاد بردارها و ماتریس ها و کار کردن با m فایل ها را بلدید. اما ان شاء الله در آینده من ابتدایی ترین مباحث رو هم خدمتتون ارائه خواهم کرد. اما فعلاً نه!

فرض کنید که می خواهیم نمودار سینوس  را در فاصله بین صفر تا 2*pi رسم کنیم:

t=0:0.01:2*pi;

u=sin(t);

گام متغیر t  را برابر با 0.01 قرار دادم تا وقتیکه نمودار سینوس کشیده میشه حالت شکسته نداشته باشه.

دستور رسم نمودارهای دو بعدی در متلب دستور plot هستش:

plot(t,u)

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

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

grid on    یا    grid

دستور grid on یا grid باعث شبکه بندی صفحه مختصات میشه.

xlabel('t')

ylabel('u')

title('graph u vs t ')

legend('sin')

دستور xlabel باعث گذاشتن برچسب بر روی محور x ها میشه. بین دو علامت ' '  هرچی بنویسید در روی محور x ها نشون داده میشه.

دستور ylabel باعث گذاشتن برچسب بر روی محور y ها، دستور title باعث گذاشتن عنوان بر روی نمودار و دستور legend باعث گذاشتن راهنما در گوشه نمودار میشه. بین دو علامت ' ' هرچی بنویسید همون نشون داده خواهد شد.

فرض کنید که می خواهید در روی بر چسب محور x علامت ریاضی آلفا یا بتا یا هر حرف یونانی دیگه قرار داده بشه. برای این کار در بین دو علامت ' ' کلمه alpha یا beta را تایپ میکنید و قبلش علامت \ را می گذارید:

xlabel('\alpha')

title('\beta')

حال فرض کنید که می خواهید اندیس بالا یا پایین در روی نوشته هاتون داشته باشید. اندیس پایین با علامت _ ایجاد میشه و اندیس بالا با علامت ^ ایجاد میشه:

xlabel('x_i')

legend('R^2')

اما فرض کنید که می خواهید بر روی برچسب محور x (یا محور y یا در عنوان و یا در راهنما) عبارت R را بنویسید که در اندیس پایین اون عبارت index باشه. شاید فکر کنید باید به صورت زیر بنویسید:

xlabel(R_index)

اما با این کار فقط حرف i به صورت اندیس پایین نشون داده خواهد شد. و یا مثلا اگر که بخواهید index اندیس بالا نوشته بشه دستور زیر فقط حرف i را در اندیس بالا نشان میده.

legend('R^index')

برای اینکه این دستور درست کار بکنه 2 راه وجود داره که راه اول کمی غیر منطقی به نظر میرسه:

راه اول:

xlabel(R_i_n_d_e_x)

legend(R^i^n^d^e^x)

این کار برای اندیسهایی که تعداد حروفشون کمه شاید به نظر غیر منطقی نیاد اما اگرکه کلمه اندیس بالا یا پایین 50 حرف باشه غیر منطقیه که بین 50 حرف از _ یا ^ استفاده کنیم. برای همین بهتره از راه دوم استفاده کنیم.

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

xlabel(R_{index})

ylabel(R^{index})

فرض کنید می خواهید در راهنمای نمودار خود عبارت آلفا به توان سیگما را نشان دهید:

legend(\alpha^{\sigma})

سایر علائم و حروف یونانی رو می تونید در قسمت help با جستجوی عبارت text properties در یک جدول کاملی پیدا کنید.

 

اما متوجه شدید که نمودار وقتی کشیده شد با رنگ پیش فرض یعنی آبی کشیده شد. اگر که بخواهید رنگ نمودار را تغییر دهید باید در همان دستور plot این کار را انجام دهید:

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

plot(t,u,' ')

بین دو علامت ' ' هر کدام از حروف زیر را که بنویسید رنگ متناسب با حرف نوشته شده تغییر خواهد کرد:

c : فیروزه ای

m : بنفش

b: آبی (که اگر نوشته نشود هم رنگ آبی پیش فرض می باشد)

r: قرمز

g: سبز

k: سیاه

w: سفید

y: زرد

برای مثال می خواهید رنگ نمودار قرمز شود:

plot(t,u,'r')

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

plot(t,u,'color',[r g b])

به جای سه عدد r و g و b  باید عددی بین 0 و 1 وارد کنید. عدد مربوط به r معرف رنگ قرمز، عدد مربوط به g معرف رنگ سبز و عدد مربوط به b معرف رنگ آبی میباشد. مسلما اگر سه عدد را به صورت [0 0 1] قرار دهید رنگ به صورت قرمز خواهد شد و اگر هر سه را برابر با 1 قرار دهید مشکی و اگر هر سه را برابر با 0 قرار دهید سفید خواهد شد. پش با انتخاب سه عدد بین 0 و 1 میلیونها رنگ می توانید داشته باشید:

plot(t,u,'color',[1 0.2 0.06])

بار دیگر به دستور ابتدایی بر می گردییم. مشاهده کردید که وقتی نمودار را کشیدید با یک ضخامت پیش فرض نمودار برای شما کشیده شد. اگر که بخواهید ضخامت را هم عوض کنید باید از دستور LineWidth در دستور plot به صورت زیر استفاده کنید:

plot(t,u,'LineWidth',a)

یا

plot(t,u,'g','LineWidth',a)

یا

plot(t,u,'color',[1 .03 .5],'LineWidth',a)

منظور از a عددی است که ضخامت خط نمودار را  تعیین می کنه مثلا a=2:

plot(t,u,'k','LineWidth',2)

نویسنده: پ متلب - سه‌شنبه ۱٥ فروردین ،۱۳٩۱

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

نرم افزار متلب یکی از جامع ترین و مهندسی ترین نرم افزار های ریاضیاتی ، برنامه نویسی ، شبیه سازی و گرافیکی در بین نرم افزار های مهندسی به شمار میره. شاید تعجب کنید که گفتم مهندسی ترین نرم افزار در بین نرم افزارهای مهندسی! اما من اعتقاد دارم که خیلی از نرم افزارهایی که به اسم نرم افزارهای مهندسی شناخته میشه اصولا بدون دید مهندسی ایجاد شده اند و صرفا اسم مهندسی رو یدک میکشند.

نرم افزار MATLAB رو یک کمپانی معروف به نام Mathworks ایجاد کرده. متاسفانه این کمپانی کشور عزیز ما رو تحریم کرده به همین دلیل نمی تونید وارد سایت این شرکت (www.Mathworks.com) بشوید.

اما اگرکه بتونید یه جوری وارد سایت این کمپانی بشوید با عضو شدن در آن هر از چندگاهی این کمپانی ایمیلی برای شما خواهد زد و جدیدترین تغییرات متلب را به شما اطلاع خواهد داد.

در سایت این کمپانی بخش های متعددی وجود داره اما یکی از مهمترین آنها بخشی است به نام Matlab Central.

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

این بخش مهمترین و بهترین مرجع جهت آموزش متلب به شما و احیانا پاسخگویی به مشکلات و سوالات شما می باشه.

اگر که شما مطلبی رو در مورد MATLAB تو Google جستجو کنید مطمئنا چند آدرس اولی که توسط گوگل پیدا میشه مربوط به بخش Matlab Central از کمپانی Mathworks خواهد بود.

یکی از حرفه ای ترین کارهایی که این کمپانی کرده اینه که این کمپانی با روی باز از انتقادات شما در مورد توابع متلب استقبال کرده و حتی اگر که شما توابع جدید مربوط به رشته های تحت پوشش قرار گرفته توسط متلب را برای این کمپانی بفرستید و این کمپانی تشخیص بده که تابع شما مفید بوده و جزء توابع متلب نیست در ویرایش جدید نرم افزار این تابع رو به Databank خود اضافه میکنه و حتی اسم شما را به عنوان نویسنده این تابع در Help نرم افزار قرار میده.

با این کار این کمپانی نخبه های دنیار ور به صورت رایگان در اختیار خودش قرار میده و از دانش اونها در دنیای مجازی استفاده میکنه.

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

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

Matlab مثل یه دریاچه ای میمونه که اگرکه قلابتو داخلش بندازی حتما یه ماهی صید می کنی. محاله قلابت خالی بیرون بیاد!

به طور کلی نرم افزار متلب شامل 3 بخش متفاوت (که هم میتونند مستقل از هم باشند و هم میتونند وابسته به هم باشند) هست:

1. بخش برنامه نویسی  یا Programming.

2. بخش رابط گرافیکی یا Graphical User Interface  که به اختصار بهش بخش gui میگویند.

3. بخش شبیه سازی یا Simulink.

بخش برنامه نویسی متلب شبیه برنامه نویسی در نرم افزار های دیگه مثل فرترن ، پاسکال ، C ، C++ ، VB و ... هست. با یکسری دستورات base برنامه نویسی که توی همه نرم افزار های برنامه نویسی مشترک هستندو گاها syntax (نحوه نوشتن دستور) اونها متفاوته. البته متلب دراین بخش بسیار قدرتمند تر از نرم افزارهای دیگه هستش که اون هم به خاطر قابلیتهای گرافیکی، قدرت در توابع ریاضی مختلف و ... می باشه.

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

بخش gui مربوط به برنامه های ویژوال هستش. به برنامه هایی که موقع اجرا یه پنجره اجرا باز میشه و داخل اون کلید های OK و Cancel و مثلا چند تا checkbox و ... هستش برنامه های ویژوال میگن. از نمونه بارز برنامه هایی که اساسا کارشون ویژوال هستش میشه به ویژوال بیسیک و یا دلفی اشاره کرد. در قسمت gui متلب شما میتونید برنامه های ویژوال ایجاد کنید که انشا ءالله به وقتش به شما آموزش خواهم داد.

 

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

نویسنده: پرشین بلاگ - سه‌شنبه ۱٥ فروردین ،۱۳٩۱
بنام خدا

كاربر گرامي

با سلام و احترام

پيوستن شما را به خانواده بزرگ وبلاگنويسان فارسي خوش آمد ميگوييم.
شما ميتوانيد براي آشنايي بيشتر با خدمات سايت به آدرس هاي زير مراجعه كنيد:

http://help.persianblog.ir براي راهنمايي و آموزش
http://news.persianblog.ir اخبار سايت براي اطلاع از
http://fans.persianblog.ir براي همكاري داوطلبانه در وبلاگستان
http://persianblog.ir/ourteam.aspx اسامي و لينك وبلاگ هاي تيم مديران سايت

در صورت بروز هر گونه مشكل در استفاده از خدمات سايت ميتوانيد با پست الكترونيكي :
support[at]persianblog.ir

و در صورت مشاهده تخلف با آدرس الكترونيكي
abuse[at]persianblog.ir
تماس حاصل فرماييد.

همچنين پيشنهاد ميكنيم با عضويت در جامعه مجازي ماي پرديس از خدمات اين سايت ارزشمند استفاده كنيد:
http://mypardis.com


با تشكر

مدير گروه سايتهاي پرشين بلاگ
مهدي بوترابي

http://ariagostar.com
نویسندگان وبلاگ:
کدهای اضافی کاربر :