|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
$ Y4 B/ H" F+ B" R) A5 ?matlab是Mathworks公司推出的一套高性能数值计算和可视化软件,集数值分析,矩阵运算,信号处理和图形显示与一体。同时Matlab也是一种编程语言,被称为第四代编程语言。0 q5 m, {9 I4 J7 K3 o1 H5 H
全称:Matrix Laboratory(矩阵实验室),matlab出现在20世纪70年代,由Fortran编写,到了90年代,其内核由C语言编写.4 r* I7 ~# l5 l4 }7 ?& x) y8 n: }8 W
x4 m# Y' t# ^6 V. r- S
Matlab常见的交互界面0 G) O, A9 z; k
●Command window(命令窗口):在这个窗口中,可以输入各种matlab命令,函数和表达式。所有操作和运算的结果也会在该窗口中出现(图形结果会单独显示)。7 @6 U0 `- x; Y* F
●Command History(历史命令窗口):记录了用户已经操作过的各种命令,函数和表达式。主要功能:方便用户回忆之前的操作,也可以方便用户对这些历史信息进行编辑(如复制,充运行等)。1 q! f( p+ c7 U: P
●Current Folder(当前目录窗口):在这个窗口中,可以设置当前目录,展示目录中的M文件或者MAT文件等。9 n7 S/ ^3 C. P( t1 D U$ p
●Workspace(工作空间):在这个窗口中,可以查看工作空间中所有变量的类别,名称,大小等。可以在这个窗口中观察,编辑和提取这些变量。
0 J" X# h) A! t& ]! B) y2 X/ n
/ L( ?" I& c4 i# `2 N默认情况下,命令窗口的数值结果都以format short g 的格式结果显示,这只是matlab数值结果的显示方式,而不是数值计算的精度,在实际存储和计算过程中,使用的都是双精度。
! o2 v4 u9 s$ |1 ?1 G! o
# `! v2 e' `7 {5 z命令窗口标点符号, N5 f; m: |$ H# o2 w
●空格,逗号”,”:1.输入变量的间隔 2.数组/矩阵元素的分隔符。
. J9 B$ t1 O% v! d1 a●分号”;”:1.命令的结束表示,同时不显示结果。2.数组/矩阵元素的行间分隔符。
, r3 Z; A7 w2 k●冒号”:” :1.用于生成一维数值数组,表示一维数组的全部元素或者多维数值某一维的全部元素。详细用法见链接' f0 t$ @( k1 D+ ~! O0 u2 {( T
●其他见链接+ V/ U' V+ L) a; K9 Q" B/ \
9 O$ R3 F0 o: z; ^; }
Matlab变量命名规则与C++/C#中差不多,由字母,数字,下划线组成。但matlab中变量名第一个字符必须是英文字符,C++/C#中可以是英文和下划线。
* i* s% A+ I O5 F9 \% V; D
, J) U+ `2 y* n. ^; v3 zMatlab中预定义变量:; {- r1 B' h& Q) ^
ans:计算结果的默认名称
; c- u( C4 R! x% Xeps:计算机的零阈值
& K5 Z# T* c7 L; b0 m pinf(Inf):无穷大,-Inf为负无穷大
! |, t H* ]# R( J/ Z. E( Rpi:圆周率: y' g7 b& T6 m6 O1 U' f& E1 c
NaN(nan):表示结果或变量不是数值,无法定义的一个数$ O: a r, H3 ^6 S- x/ i1 P8 y# b: ~
虽然matlab没有限制用户使用预定义变量,即可以再matlab的任何文件中将这些预定义变量重新定义,复制。但建议,不要使用matlab预先定义的变量名称。
- G+ `: g- d3 z
5 V: i4 E9 |: a4 R1 WMatlab的搜索路径(沿这个路径查找相应的文件,函数或具体数据)! h- B6 W" Z- K( {1 a
搜索过程:如用户在命令窗口中输入命令myMatlab
`8 m& L5 Y2 A4 ~ a8 M ●是否是内存中的变量
# ]' Z8 D- k1 S ●是否是内置函数 y5 G& q( U$ v' M4 \6 `1 A
( b( e* F! t5 w8 j! ^ ●是否是当前目录下的M文件
" t- V/ e j0 j ●是否是搜索路径下其他M文件! B4 j6 k# u( b
搜索路径的设置方法:
, f3 Y7 x: p: M& | ●输入pathtool命令或path命令& m/ `* q1 I& w7 r3 h' _
" E8 W9 \1 c4 l* x0 H. d ●matlab界面HOME->set path
) g& R5 b. a/ i! \ }: U9 u+ r: C) Y) K. B
使用path修改的信息只在当前matlab环境中有效,重启matlab后,就无效了。" `' p( K& K3 D( j* l* p8 y
7 m7 W) b6 I1 N
查看变量:1.命令whos 2.用workspace窗口. Y7 [. H: ?7 I) k' E$ K' r
2 Z" t# t" M$ `( q! j8 n删除变量:1.命令clear A; 2.用workspace窗口
* N$ C; R; v5 s2 k
0 S, p' C; i3 X& D.mat文件是matlab数据文件,保存工作空间的变量。
k. ^: h8 W- o
3 V1 g$ u3 }9 \9 _. [1 bMatlab区分大小写。" H$ Q- ~% d" S: D! _7 N. z: M1 U
2 F+ ^/ x- w9 Y& ]. n( T P
Matlab中的变量不用声明,不用定义,拿来即用。
1 }* e% P. K. _' Y' G% z* @7 F5 x! L% A6 S7 f3 \$ I
输入一条命令,回车,就表示一条命令结束。9 w; R2 H+ f/ v3 d
) ^1 P; |1 T. B
Matlab是解释性语言,在存储结构和计算语句完全相同的情况下,matlab效率比C++慢。" E5 N2 k1 {) ^$ s% ~+ e0 V/ A
7 {$ E. ?; t/ e& ]8 v$ o& \% A
1.1 M文件
7 Y( K5 R" K8 j) Y) Y: sM文件分为1.M脚本文件 2.M函数文件
1 i: E# w' c8 ?
: A; M- r' n& ^, f. F- BM文件必须在搜索路径中才能运行。( ^, `. n' v; l$ r- ]
+ k, \9 P3 N5 @4 D# F+ O' v9 J
1.1.1 M 脚本文件- B; U$ T# W' N& X
1.M脚本文件由一组matlab指令构成,其中的语句可以访问matlab工作空间中的所有变量与数据。脚本文件中所有的变量都是全局的,可以被其他脚本文件与函数文件访问,这些全局变量一直保存在内存中。脚本文件中的语句与直接在命令窗口中输入的命令是一样的,只不过封装起来了。
! Y) \* r' s+ O% P& v! ^& n2 O
" b6 V" X7 j' i6 b2 f. N2 x2.M脚本文件执行是直接输入脚本文件名就可以了。, [" J& _" \, \$ v3 N
* u5 |3 T9 X7 `9 m+ n1.1.2 M函数文件: \8 Y' _, k7 ~
格式:; N" U6 p8 d/ A: _* T- B/ F
* s) s2 v1 t7 [ H+ c \ funtion[输出变量1,输出变量2…]=函数名(输入变量)
, e" }) S8 N6 \2 t
& G! H6 P! O/ W: H: X 语句;
J8 _. ^, e* |
x( [6 [9 i5 B# T* y. K( g1.M函数文件的文件名必须与出现在文件第一行的函数名相同,系统根据文件名调用该函数
8 ~$ g6 w. Q' R& k
9 m9 x) |# O) T5 s2.M函数文件的组成部分:- K5 F2 @1 {) \. z
) Y @) L, v7 A& P u! Q3 ^+ |! [组成部分
6 u9 m" r. E" S3 t$ E( k
2 m' b) ?% E0 A: B# z" M描述
( w: g. u+ E# k* b$ k: ~/ O# c
: ^8 S- n: ~2 I/ u \6 \3 L I: D& N) n函数定义行3 ~) f5 v. m8 ?5 V6 k; a o; u9 o
2 V; q* x. A7 |3 y7 ]3 f) K% y定义函数名和输入输出变量
, a" ?/ l# P4 B3 x7 E. N8 m" W8 U$ g! V
H1行( v7 f3 A8 i" b
) g+ e6 z, g* l4 K& j描述函数功能,可以用lookfor命令搜索到
L1 B4 w6 C+ J. w8 e
" H* e3 R, \& E5 ~- _# S帮助文本(帮助文档)! S& ^+ ?3 H, A( I
# O+ x3 \/ t) @0 G/ s0 P跟在H1行后,用help命令调出,详细描述函数功能
2 Y3 _9 k7 E; n
. D. i+ O S, Z7 c1 [) z" J0 M函数体$ F' h/ t2 _0 t' E4 Z0 g3 M
, c! D' u9 j" M$ I, R8 G实现函数功能的代码9 [& p: B: x) h4 C* ^4 j# K
6 a: J% Y3 s; C7 w' \9 E8 s# W注释
( C( b! m2 \5 F& v! w2 A
9 Q9 m( T/ F- m; X# k+ m" c# L8 Q$ Z: Q
x/ J; N* j/ b* I* L$ Q+ _如
, q- Z5 k- K) y- ` k' H) W& |7 O) y: ~ c* W
function [ output_args ] = myfun( x,y )" ~* L7 Z4 a2 s7 v& ^, [9 u
' p- g+ ^ U. x# R( z
& l0 h8 `0 C' m/ E" O
% [, M2 K4 E$ MH1行
$ W0 A- {! V' p3 l. y2 n) V5 i0 ~- l) `* x
- C0 v V( O* J5 y8 S% q% m! a
H1后的帮助信息# U+ v, K3 J R a6 a7 O- y
5 P9 \0 ] R( f* q6 U& d/ {6 m4 C % G" u$ h' L" c) }6 A5 R6 ~
%caculate- Z5 a' W, \$ i' X7 ^
1 g8 Q1 u2 e# E; ?2 _) K1 m% if y does not exist,return x
4 \- ?1 z& j y) C. m9 n5 g. k6 U
7 D: K2 f7 P/ }% if y exists,return sqrt(x.^2+y.^2)! k( u, L/ H2 F8 U
5 V0 \* P9 T, i7 P3 J, P- |2 k
if(~exist('y','var'))0 @3 S7 B! Q. @) C
. C2 I0 U8 x- }6 _
output_args=x;%y不存在
0 L8 Q+ q6 t5 S0 J C0 a
) @: u8 N# J. Felse
" G% j4 h' t4 q! h/ ?7 E& I7 [. T) w, h" T2 g0 \
output_args=sqrt(x.^2+y.^2);
! Q1 v. g; P4 T i
2 ~3 H) G3 `9 {& ]6 ?# Y$ m
4 `1 B' V7 n( l% k
# z) t o1 ~& f. P Aend4 l% o2 j& k* E# p
; g3 Z5 j' _0 q
命令窗口:
" l* m4 R( w( Z1 m, f6 L: ?+ q. j5 d: k
>> myfun(9)+ @3 S. o' n* c. H1 h4 p7 D
! p* I" z3 I W ; p H( V& r& `" h/ L* h/ I* F6 Q
4 [9 ]4 X( W) i. w0 \$ ^* f4 C
ans =& I+ I7 s7 B9 n; ?( U- L# c8 B1 b/ h
s( R- B: Q1 T8 ]' S6 J: u& i& h
5 g- e$ x% w1 j7 g( r% u0 P0 k% s2 F* s5 u. h, B
9
$ I$ s0 F' p7 b
1 q- i+ w/ @' M/ Z % ^* G) _1 _1 j0 p" s7 ?8 d# b) S
! m! j$ h7 x: C8 _, r+ W+ o3 J! p) K
>> myfun(3,4)8 u) w' y0 L' P
; g, b4 h, |# \) U9 Z8 f" m
( Q6 d& W7 I9 r8 G+ V( h0 Z B# B3 H5 I- z- X" a0 b* l2 \
ans =; r4 {, t# \1 P
7 c N5 ?2 I2 m2 F+ a- n. o
9 ^0 P9 I) L% C) W8 Z# p) F9 L2 g+ [7 ~
5
' ?3 g* ^0 v3 }1 S4 D8 } R3 S; o0 Y2 T+ w+ l) r
>> help myfun %帮助信息( o4 k7 f# p1 ~
! e `7 E* Q* C" Y caculate- B- j5 ^: z$ ^4 h; R7 q3 \
8 g0 M, e7 R* {8 K- } if y does not exist,return x+ s1 v/ i u6 f# j
( Z% X3 `; k* A4 S, }5 e8 E if y exists,return sqrt(x.^2+y.^2)
( [! D' F+ V( C2 b( H
3 E* G E3 ~6 I7 V- r; K$ B函数体中的语句如果不想输出结果,一般最后加上”;”
* _- V/ u9 \2 J7 {( U4 X8 u
3 u4 H3 t1 N* w/ B: E: z0 F. m# |3.函数文件的变量时局部变量,运行期间有效,运行完就自动被清除,而脚本文件的变量时全局的。5 }# i- j) d4 d |+ K$ z/ h
+ Y5 c/ q) b/ {5 j; ~# o! r2 W/ N4.M函数文件能够被其他M函数调用或被其他M脚本文件调用。 |
|