|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
* O# Y+ x. Z: V( I" H
matlab是Mathworks公司推出的一套高性能数值计算和可视化软件,集数值分析,矩阵运算,信号处理和图形显示与一体。同时Matlab也是一种编程语言,被称为第四代编程语言。
4 z- F$ u# R' \/ \3 Y* I# j' s& W全称:Matrix Laboratory(矩阵实验室),matlab出现在20世纪70年代,由Fortran编写,到了90年代,其内核由C语言编写.
1 Y, e8 ?% a# X. B
4 r. w8 ^/ L P" X( Z dMatlab常见的交互界面' v! `" {! n+ b, o5 F! D6 @
●Command window(命令窗口):在这个窗口中,可以输入各种matlab命令,函数和表达式。所有操作和运算的结果也会在该窗口中出现(图形结果会单独显示)。
. A0 T# G- }" Y3 y" W$ g4 d1 ?. ?●Command History(历史命令窗口):记录了用户已经操作过的各种命令,函数和表达式。主要功能:方便用户回忆之前的操作,也可以方便用户对这些历史信息进行编辑(如复制,充运行等)。+ S8 b5 k5 P4 p3 N
●Current Folder(当前目录窗口):在这个窗口中,可以设置当前目录,展示目录中的M文件或者MAT文件等。) M- T w; P( t1 `
●Workspace(工作空间):在这个窗口中,可以查看工作空间中所有变量的类别,名称,大小等。可以在这个窗口中观察,编辑和提取这些变量。 ~" x& j6 Y" f. ?$ n+ B
4 e9 L, f5 z" A! {1 ~* e3 u默认情况下,命令窗口的数值结果都以format short g 的格式结果显示,这只是matlab数值结果的显示方式,而不是数值计算的精度,在实际存储和计算过程中,使用的都是双精度。# _; ~2 c5 ~* J9 |
1 D! U" s" E- Q4 c2 M
命令窗口标点符号; V. @3 S% p8 Y* q+ S) s
●空格,逗号”,”:1.输入变量的间隔 2.数组/矩阵元素的分隔符。
' X( W2 B' Z* F' ~●分号”;”:1.命令的结束表示,同时不显示结果。2.数组/矩阵元素的行间分隔符。$ u; z) g" `& @& E* Q) S
●冒号”:” :1.用于生成一维数值数组,表示一维数组的全部元素或者多维数值某一维的全部元素。详细用法见链接7 D7 f: r2 K' P4 o1 U" D- U& h; }* h
●其他见链接3 f- B, y7 L* m u; ]* R. _
6 }3 Z* A+ C9 e: ] r4 J
Matlab变量命名规则与C++/C#中差不多,由字母,数字,下划线组成。但matlab中变量名第一个字符必须是英文字符,C++/C#中可以是英文和下划线。
$ _# W$ ~* d% _) G5 u
$ S; ?8 P- J0 @# b0 j0 D" |& GMatlab中预定义变量:
9 M, e% D4 p0 y) S( E, q2 tans:计算结果的默认名称 A- X8 W( y2 T4 I9 `
eps:计算机的零阈值+ ?& G5 m6 S( X. C
inf(Inf):无穷大,-Inf为负无穷大
0 E' ?7 L6 @/ U0 E. s( Fpi:圆周率( h1 Y; b% a3 W' F; e1 j" q
NaN(nan):表示结果或变量不是数值,无法定义的一个数
F6 j0 v5 v4 r: A2 l虽然matlab没有限制用户使用预定义变量,即可以再matlab的任何文件中将这些预定义变量重新定义,复制。但建议,不要使用matlab预先定义的变量名称。
/ b1 F2 v* A0 K3 i! j# J1 o, D4 }& j* p2 ]0 \
Matlab的搜索路径(沿这个路径查找相应的文件,函数或具体数据)* y# h0 m3 g- p
搜索过程:如用户在命令窗口中输入命令myMatlab5 S: p4 `5 p2 |# Z
●是否是内存中的变量
4 W. w) M) x1 a. P* y ●是否是内置函数
+ S2 j9 ^5 n1 T3 g/ k# b7 x: H: [7 g2 ]
●是否是当前目录下的M文件8 D# r. v: F6 _6 v- x
●是否是搜索路径下其他M文件) |9 i- \7 C7 M$ f. j& ~
搜索路径的设置方法:9 f3 u4 C2 }5 w! [
●输入pathtool命令或path命令
/ |* g# Y/ w/ G" W/ d6 |) X9 e1 Q
; k3 Z: ? v. g$ M E0 j ●matlab界面HOME->set path z7 z8 v# b* m- t6 Y
1 |% X: a9 O% u" \
使用path修改的信息只在当前matlab环境中有效,重启matlab后,就无效了。
5 m" S+ |. t. |5 y! w' Z# x' f! a/ r9 v' Y
查看变量:1.命令whos 2.用workspace窗口
# @1 }2 V: {& ]0 y s* |9 _" H4 A' r
删除变量:1.命令clear A; 2.用workspace窗口! z3 h1 x. p2 J. ~; c
# z6 b v1 e% J% ?- x.mat文件是matlab数据文件,保存工作空间的变量。/ m8 }" ^* t M1 E4 H" \! `, X& T3 T8 _/ f
6 x) m) [4 Y" x8 ?Matlab区分大小写。# h& a9 o; }7 c3 w- [
7 ]) R1 T( t v* N: N: C
Matlab中的变量不用声明,不用定义,拿来即用。
6 j7 C3 W2 e+ h" K* n
# D- `' j+ v& W( L9 ~输入一条命令,回车,就表示一条命令结束。) U3 d- d! g+ Z1 }
5 J3 f1 Y. I& L |: V9 c0 \, ^
Matlab是解释性语言,在存储结构和计算语句完全相同的情况下,matlab效率比C++慢。
$ d+ ]$ p# ]7 B) B6 p6 @: o- j; s
$ X& _1 R2 c; A5 K, f4 |. E8 z: A1.1 M文件
, G; E8 k7 k5 J0 @9 A/ sM文件分为1.M脚本文件 2.M函数文件( o J; Q" N/ {. T8 [
) T% Q9 `* N$ R2 S+ L6 NM文件必须在搜索路径中才能运行。
7 b, ^) q; R9 a' K5 z+ v% ~1 m* i; m6 t7 @# W- t
1.1.1 M 脚本文件+ q4 x' c2 Y# m; {8 \' ?6 `, O
1.M脚本文件由一组matlab指令构成,其中的语句可以访问matlab工作空间中的所有变量与数据。脚本文件中所有的变量都是全局的,可以被其他脚本文件与函数文件访问,这些全局变量一直保存在内存中。脚本文件中的语句与直接在命令窗口中输入的命令是一样的,只不过封装起来了。
+ u' ]5 x7 ?+ c+ H5 l* R) b& t
/ u" V5 k5 ^; ^$ P3 ?% h* a2.M脚本文件执行是直接输入脚本文件名就可以了。
. M' F1 B8 F0 |3 ~; J8 y
; D6 E' U! ~4 E8 C' r% W1.1.2 M函数文件$ @5 d) f2 K0 V; Z3 D, X2 o4 N
格式:. m5 V! f8 ~" _1 M9 T
" X. I5 K( X% p. u& ]0 |3 @+ t funtion[输出变量1,输出变量2…]=函数名(输入变量)( n! a6 W" F/ U7 X1 [- y4 D
0 n, j; ]0 d9 U) E
语句;" m* k0 {# u2 o% r* e- d( M
% Q+ |) S( o1 x+ o* T
1.M函数文件的文件名必须与出现在文件第一行的函数名相同,系统根据文件名调用该函数9 c- c* a9 C" S/ g
7 C }, N" N/ O3 ]7 D: n2.M函数文件的组成部分:
- E% u' b# D) h; M& B9 C: s
: k4 q/ J; T) p+ z j3 `% B组成部分
4 d" y% X% Y6 e6 k/ N& M
1 o7 Z. t) T8 Q7 K, J描述
/ o3 _" k& N( G* W( W/ e4 t4 D b! D& a. W) M7 ~
函数定义行& f+ ^: l& g6 n1 G
y% J: K! d! o7 `
定义函数名和输入输出变量7 {1 o$ B" Y) k% q0 O2 v& K
& |5 K% y7 Z5 C
H1行3 c; A: S2 v9 v8 N* j2 f0 Z
6 S7 W* j# V0 y, g
描述函数功能,可以用lookfor命令搜索到
/ D" s5 `4 k6 D; D! P$ p+ ?' {/ q
4 O9 a0 F/ f! G; K* G/ t) J帮助文本(帮助文档)
! K9 u3 a) M. a8 n1 n! J/ |; ]+ [
5 \% @! y. F2 h( {1 A+ z7 u跟在H1行后,用help命令调出,详细描述函数功能" o3 C& {# g9 e. X: |
. R; m/ j ~, \2 h# T' k0 `, U! _函数体( g v# ^- J8 K$ V0 E$ ?6 p
5 c' G+ c: A5 U% Y7 Y实现函数功能的代码
- Q) o; ^: C$ {; n& n
+ Y* m ?9 _/ Q$ {* U& `注释, w+ d7 v7 I% j6 d
i/ _& k$ f! v7 I4 [! C9 Q
$ X6 M9 B0 v( ^7 {# d2 r' e
. P; ~& k! H6 T. D如
5 ~' b' D' s& J4 \
. [$ ~3 D$ u. k, Z5 yfunction [ output_args ] = myfun( x,y )
" v& P3 P' E% S" B8 v7 C F( Z
' r8 K. M2 f4 E$ ?+ ]( b4 M& i
* \5 e# v" W+ I( ~/ ]H1行: X: g% c9 m5 u W% L |9 b
, [' l B$ Y) f! K2 I9 r
7 V J* t/ m T1 [- O- S! E7 Y
H1后的帮助信息
8 n" n) ]; M7 T( z7 D
% J6 j; ]9 }$ b/ z5 w 9 \4 e9 M7 w1 Y& `* D7 G
%caculate% S# h* ?9 @& W6 E! ~3 i
. w0 c. w* L# M. y, [2 c# x
% if y does not exist,return x2 c) _7 ^/ d( f! |) g
2 R- {$ _& ?% T9 }( i, G' q2 V, J+ h% if y exists,return sqrt(x.^2+y.^2)
$ h; \; J, J4 \0 b8 R1 o2 \8 D7 j, f: A: m0 c4 {3 |; [
if(~exist('y','var'))# K6 {5 F3 k8 `8 _1 T5 N4 G
, e5 H g1 I. x$ T output_args=x;%y不存在# j, ^2 U: a5 F: w) P$ U# [9 S
2 i1 Q, \. k9 j, s2 g: T" H
else7 `! V; z2 e6 d) i
" [. T L8 K8 h Q6 W output_args=sqrt(x.^2+y.^2);/ Z, P# t8 y0 a0 S
! m) Z, Z4 p' n- J* D e F. U ! @4 j6 `3 S) e1 a
$ `- Y$ v) Y7 J' Send
6 F1 }6 H+ x' i" ]& _4 e" M
+ B6 R+ s) z' L8 ?9 h8 `8 ^6 `* M命令窗口:
- W" l! k: U$ O3 s8 f/ U/ n6 I/ M" n3 @ m7 @6 A( u5 p
>> myfun(9)- j9 x& T0 f9 K9 z0 B
7 E& j$ _" _' N; m: o
: ~. G) p5 _. n! R1 `6 y; Y( d6 V* T+ U% e5 g5 q
ans =
5 P; B8 v2 O( A/ z6 G: Q: f/ ^& ]/ ` V, t( H t/ I9 C+ z
, z0 q: L; C. Y
4 H% n8 z+ @3 t8 L: A
9
2 h, A' j* q2 w- H% o& s4 @8 q+ t; h- A! l: v! v& n! |+ e
7 R4 q# b) v- z6 v1 G& g
$ _. e( n4 h4 ^, d5 Y! K>> myfun(3,4)) e3 H, q& Q, H% r1 y2 X
- l0 U6 [" H1 A6 ^( x7 j5 _
& S+ h \; n1 I/ f3 \: f$ Q* ]% f, A7 [& H% K9 f8 n0 v' X
ans =
0 x/ |; t; W+ }& }+ t
4 \* k+ M2 N2 w5 { ! d. `8 n( f o5 a' B; k
; w% I/ W8 J% Z0 u
5
/ _- u8 Z; r( U; \: N1 F0 l
) M9 l( `$ f9 _# z- O" G6 M' D>> help myfun %帮助信息( p' a7 u4 y$ s
- w5 s, ?9 F/ |* D+ a
caculate
4 H5 _2 T; X0 u; ?* k: a3 o0 f" N" P' q `8 L
if y does not exist,return x
- g. B( E" C: k9 g
% ?& H7 z. ? W/ m% a: T" Z: F if y exists,return sqrt(x.^2+y.^2)
|- f0 R+ `7 j7 T( Y; E+ n- b" e8 s' c# \- \# }
函数体中的语句如果不想输出结果,一般最后加上”;”! A& ]! H# @0 b) o! H, n8 h. g
6 c0 W. h2 o( @7 y3.函数文件的变量时局部变量,运行期间有效,运行完就自动被清除,而脚本文件的变量时全局的。
& B" V# Q _3 O: S5 h' I* ?
7 i: q& a- C7 n4.M函数文件能够被其他M函数调用或被其他M脚本文件调用。 |
|