|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
* X: {+ H. h9 o- C2 x' M5 smatlab是Mathworks公司推出的一套高性能数值计算和可视化软件,集数值分析,矩阵运算,信号处理和图形显示与一体。同时Matlab也是一种编程语言,被称为第四代编程语言。7 y9 }* H( }* k0 f' L) u5 j
全称:Matrix Laboratory(矩阵实验室),matlab出现在20世纪70年代,由Fortran编写,到了90年代,其内核由C语言编写.3 g8 H- }& @3 _) r. a1 l
Q6 O9 s4 f# }0 c+ C+ `3 YMatlab常见的交互界面* X: n1 v5 E) z" Z! G
●Command window(命令窗口):在这个窗口中,可以输入各种matlab命令,函数和表达式。所有操作和运算的结果也会在该窗口中出现(图形结果会单独显示)。. I- }, T8 w/ Q/ [# j. a
●Command History(历史命令窗口):记录了用户已经操作过的各种命令,函数和表达式。主要功能:方便用户回忆之前的操作,也可以方便用户对这些历史信息进行编辑(如复制,充运行等)。: w* p: h/ x$ y# i- u( e8 N+ D( V
●Current Folder(当前目录窗口):在这个窗口中,可以设置当前目录,展示目录中的M文件或者MAT文件等。" ^! w% s4 ]" R& u! F
●Workspace(工作空间):在这个窗口中,可以查看工作空间中所有变量的类别,名称,大小等。可以在这个窗口中观察,编辑和提取这些变量。! H- T3 W( h0 A0 `" m
2 p; e! l y8 ~) `1 ^
默认情况下,命令窗口的数值结果都以format short g 的格式结果显示,这只是matlab数值结果的显示方式,而不是数值计算的精度,在实际存储和计算过程中,使用的都是双精度。
& K* T: k9 b/ l6 c9 y/ R- T& E" M9 G" @8 O# _! K! G- m
命令窗口标点符号
; x; Y) S& |& T/ [. w●空格,逗号”,”:1.输入变量的间隔 2.数组/矩阵元素的分隔符。
2 [7 J* o, n( Z* h●分号”;”:1.命令的结束表示,同时不显示结果。2.数组/矩阵元素的行间分隔符。
0 m8 A4 @/ \. _* g7 b; O* S●冒号”:” :1.用于生成一维数值数组,表示一维数组的全部元素或者多维数值某一维的全部元素。详细用法见链接4 l; X1 N2 w$ ^5 c; u4 Q* e
●其他见链接
1 ~5 P6 I0 ?, s& }0 {/ D* g; i: |9 {% W6 ]$ |! p& ]
Matlab变量命名规则与C++/C#中差不多,由字母,数字,下划线组成。但matlab中变量名第一个字符必须是英文字符,C++/C#中可以是英文和下划线。
. j5 b. K B q# d( f9 A: M: e- g% i, | b0 {! P
Matlab中预定义变量:
0 {$ b% _$ S3 y1 ~- m, C% H; vans:计算结果的默认名称& [% R T& j% C$ L: y& G
eps:计算机的零阈值
, a, u% ^, f6 t' U3 `inf(Inf):无穷大,-Inf为负无穷大5 s1 [, z- s6 b9 L% Z' c
pi:圆周率( X( Y9 U7 s# n+ t6 B' N; m8 O
NaN(nan):表示结果或变量不是数值,无法定义的一个数 e8 p5 t! w. w2 |
虽然matlab没有限制用户使用预定义变量,即可以再matlab的任何文件中将这些预定义变量重新定义,复制。但建议,不要使用matlab预先定义的变量名称。
3 ~1 R8 d6 X5 G, d
7 H+ b# p' b% s4 H& V; e: H2 fMatlab的搜索路径(沿这个路径查找相应的文件,函数或具体数据)
8 J/ P7 e) T7 X; S6 m% ]! g8 U搜索过程:如用户在命令窗口中输入命令myMatlab) L+ |, d6 [% a
●是否是内存中的变量
- C% q$ n1 F- ~+ C ●是否是内置函数
$ J% T# \! ]. o+ `* `0 d
5 N! C# G1 y( t$ Z0 e5 F ●是否是当前目录下的M文件
0 }! W: @& r6 T4 v5 ?& d. j ●是否是搜索路径下其他M文件
7 f5 Q! V( o8 r* Y) ?搜索路径的设置方法:
$ Y% K5 G3 I% y, w6 N1 q6 U ●输入pathtool命令或path命令7 t7 g; l% W( |9 \) t6 C( b
, w: m% q$ T/ P. X% q ●matlab界面HOME->set path
; u1 t0 B% i! F
' i0 y p& B% z/ Y. X使用path修改的信息只在当前matlab环境中有效,重启matlab后,就无效了。
! L! F( s+ t2 v3 ^2 ]% r' H. i: O4 ~- n) ?- |
查看变量:1.命令whos 2.用workspace窗口& ~, V$ l7 l- n& M9 T0 N* b( D
% P: O. q8 G2 }5 v3 h7 `$ E1 @
删除变量:1.命令clear A; 2.用workspace窗口
$ \, s) X6 v' Q% F
7 t' ~- J7 @* n# N.mat文件是matlab数据文件,保存工作空间的变量。
9 G7 ]0 R4 N( d7 k5 d) E f- H9 x# M/ W
Matlab区分大小写。
1 W% G+ Y1 A8 a i# M" r9 a: _
- d8 U0 `3 q4 A! C0 R! oMatlab中的变量不用声明,不用定义,拿来即用。5 P6 o. G4 D3 E! Y% V
- w# P' d. M" D+ V7 B. X5 u输入一条命令,回车,就表示一条命令结束。, j, {5 l2 s: |& Z r4 \6 _3 @
7 Z* m O. g- Q# x( L" L& f- zMatlab是解释性语言,在存储结构和计算语句完全相同的情况下,matlab效率比C++慢。* T/ `7 h4 k% c0 @, Q! g2 f
M5 k* O1 M4 {/ k i1.1 M文件! v+ W! F4 ]0 i
M文件分为1.M脚本文件 2.M函数文件7 Y9 X* f; d# `! V1 l
" w( Y4 b% p* S% a. Y: d- P. w, L: DM文件必须在搜索路径中才能运行。9 H& C. m' ~0 @) i& U% s
" d- m# M3 p% o8 @) g/ S4 ]1.1.1 M 脚本文件& _7 w% V* {. ` m6 L- e; T
1.M脚本文件由一组matlab指令构成,其中的语句可以访问matlab工作空间中的所有变量与数据。脚本文件中所有的变量都是全局的,可以被其他脚本文件与函数文件访问,这些全局变量一直保存在内存中。脚本文件中的语句与直接在命令窗口中输入的命令是一样的,只不过封装起来了。
9 r+ ]0 A' z; f6 u/ [' i# u& @. V e9 Y% p8 @! _+ D* |
2.M脚本文件执行是直接输入脚本文件名就可以了。
9 t4 G E% O9 W9 B# S' _) T6 \, M9 | |( }5 K# t7 U; y: X4 u
1.1.2 M函数文件8 u# n$ z9 V6 ]' e/ A, E
格式:4 C' _# G/ x4 A9 I( Z
' W. p, ?3 x9 l' H funtion[输出变量1,输出变量2…]=函数名(输入变量)
- e6 i) S' A" L
$ }, Y; [: A" d3 ?% {. Q8 v 语句;/ Y) O% f% G+ H
! h1 {8 q% A# x; h7 W
1.M函数文件的文件名必须与出现在文件第一行的函数名相同,系统根据文件名调用该函数
0 O6 ^ V' V4 C# r+ h5 `- M: q6 t. P& t' _- Z) ^% |- b. Q
2.M函数文件的组成部分:3 \4 u, |" B$ k2 [* c0 W# A
* q6 h5 T' ]! B5 ^; ^. w/ v8 f组成部分
9 ], Q! o$ k6 m. X w- {: @4 x. K5 k0 |* g: C) }& V1 T' A, e& B+ _' W
描述/ Y) C$ m1 W2 e% h/ B* s
; ]9 F) B1 ~: \0 q/ L0 _2 K函数定义行
' F5 u9 X: {; e: C, |4 _6 Z7 E4 j3 C
9 N" t6 K0 q. z定义函数名和输入输出变量
. k5 o: N! v! d
3 N- ^' c p- C4 j2 [% H: L) l, n/ `H1行
. O/ Z) i& r5 y7 K: [9 A; ~; ~: @2 k4 i
描述函数功能,可以用lookfor命令搜索到
( F! \: l) V) `9 q5 o4 l3 @- u2 t6 |/ x5 d! d5 |
帮助文本(帮助文档)
: f3 o5 E) b3 o. ^' t e1 D& ^2 l- E% U1 y" [1 R
跟在H1行后,用help命令调出,详细描述函数功能
2 X( b- p+ R8 _3 [
+ w: M* v2 ~+ z4 _: T! d1 v函数体5 t& u! s6 Y2 k- S9 y
5 k! P8 `5 u) t% F' M3 W. j实现函数功能的代码
. M) |9 ?/ P' a& m6 k
2 ], I6 R( B8 S, }. Q# B% ~注释
" I x s, ]* j7 `+ k5 y; w7 l* u. \8 N5 b4 j
8 J0 c/ N& j1 @1 _: K ! Y% T! ?! T' \8 _
如$ e5 C/ V- Q9 C' x4 j+ I* z$ s
7 A. q+ \' [ `. \/ ?9 g k9 Nfunction [ output_args ] = myfun( x,y )
9 F, n1 W |! R' Z0 B" m0 g5 u4 f
4 {" v! s C# Z: X" G
+ Y0 b5 F6 f Q. M9 F) S6 y A& x3 x1 K' e( X
H1行; a2 R) l- Y: g( k0 L0 f- ^$ C
0 H, @+ q) Q. X" K- Z2 g + I6 ?/ M7 j& K! f4 u: [+ _
H1后的帮助信息8 l1 m, Z+ B/ x* j4 ] ]) u) K& e
3 }& q" p! N' M2 ?* e
% K( n# [* u" w4 v% i8 ]: T%caculate% B* i; b6 j: a( O( e* @$ w7 J
& X$ x t! q1 T; J1 |
% if y does not exist,return x, Q) V) b0 k/ d% G6 \" }
2 j, b$ L+ z9 a( _3 G
% if y exists,return sqrt(x.^2+y.^2); g- U8 I2 \1 \ [
j4 z9 j! H! F5 {. l5 z$ Fif(~exist('y','var'))
3 I9 Q) Q% ~; {; s9 a! t% W2 i0 d) Y2 b
output_args=x;%y不存在
% X. v" m/ A( M+ _ a) y; @8 G
3 ~7 l/ b& p: G4 @( V' ]% felse; o0 l, s% O2 _! c
1 P, G7 E4 I, c2 |
output_args=sqrt(x.^2+y.^2);2 \# W1 w- E) F& g9 V
2 E* x0 o: K- c. b5 x6 V/ t. `6 \
/ A" J0 G$ J" @$ c# p; u' e6 ]& f y: {! f' D" ] C
end+ X4 u5 E% {/ A7 s0 j) f3 i
( J) h" f5 h" P, E8 m- w% x命令窗口:
9 m# G) Z0 S0 }9 `' C. A$ B/ o4 C) K
>> myfun(9)4 D" [9 U" w' K: b
3 [1 d% s) P; b$ ~4 N
6 T* ?! R' I$ ?0 f/ D& i
- V6 W/ Q R0 ]2 ]! U; |' J; pans =9 _4 Y8 P% M7 B* X; z; Z
0 U8 U6 ] r7 k2 x$ ]8 [, q- @
3 C3 Y X, g: _+ ` `
: L8 X9 _1 a8 y, z, Z# F$ d 9) ^1 J4 H6 f, `8 _* N
4 @* m$ W# q) C A" n+ |% E8 g
3 i8 f z/ I! ^8 @* X! \" C# T& W3 t. R4 t* t
>> myfun(3,4)
& @0 W* u+ t. `; I" r3 g+ b8 z1 G+ D6 x* K& Z- B8 j4 D( T C6 S3 i
2 {7 M/ F& I+ [" S- l. ]2 }+ x0 x' K
ans =
' A+ N9 I3 |3 m0 ], \! g) B, P5 m/ @' j( R+ R& W
3 [, Y# r6 O* g5 E$ W
3 k/ h2 K7 y4 B3 K$ h 5
6 I; K6 u& w6 ?! J- J5 M$ c' \, o. d' _- t3 K7 x. V" k" L
>> help myfun %帮助信息
5 i7 K+ a8 W4 S4 F
% |5 T6 Z$ H5 l( D! y caculate% w j9 {: b" W: Q H+ o8 Q% k2 M
J: |' N2 h: I+ l9 k if y does not exist,return x
9 f2 p0 _1 E4 ?, \/ P. S' z1 }: [1 ?' W* b, e }
if y exists,return sqrt(x.^2+y.^2)8 `% x/ l' t4 Y$ e/ z. c0 x
" ^: E/ y# c1 g7 M( U) w2 T函数体中的语句如果不想输出结果,一般最后加上”;”
# t) G) C ?1 F! I+ \) e( s u: H; ] y" t4 I) Y9 P
3.函数文件的变量时局部变量,运行期间有效,运行完就自动被清除,而脚本文件的变量时全局的。
& R; Y( F* X* c/ ~
; S" @7 Z+ Q0 o- n4.M函数文件能够被其他M函数调用或被其他M脚本文件调用。 |
|