|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
2 \2 e/ l& `7 W" e! ]matlab是Mathworks公司推出的一套高性能数值计算和可视化软件,集数值分析,矩阵运算,信号处理和图形显示与一体。同时Matlab也是一种编程语言,被称为第四代编程语言。* S+ r0 t+ {. U! e5 j
全称:Matrix Laboratory(矩阵实验室),matlab出现在20世纪70年代,由Fortran编写,到了90年代,其内核由C语言编写.8 V8 o6 l) a# a9 d8 n+ Z
0 n. ~, c5 C3 M# I
Matlab常见的交互界面; r( }) [. n; Z; W
●Command window(命令窗口):在这个窗口中,可以输入各种matlab命令,函数和表达式。所有操作和运算的结果也会在该窗口中出现(图形结果会单独显示)。8 z2 v! m. `# U
●Command History(历史命令窗口):记录了用户已经操作过的各种命令,函数和表达式。主要功能:方便用户回忆之前的操作,也可以方便用户对这些历史信息进行编辑(如复制,充运行等)。4 u+ c9 b7 D7 A3 C
●Current Folder(当前目录窗口):在这个窗口中,可以设置当前目录,展示目录中的M文件或者MAT文件等。! m! j A, W0 e; j$ ?$ u
●Workspace(工作空间):在这个窗口中,可以查看工作空间中所有变量的类别,名称,大小等。可以在这个窗口中观察,编辑和提取这些变量。: Z7 B8 H' J% q- m' u' D. f0 S
( s4 V& U; |( G( O0 d6 s" ]
默认情况下,命令窗口的数值结果都以format short g 的格式结果显示,这只是matlab数值结果的显示方式,而不是数值计算的精度,在实际存储和计算过程中,使用的都是双精度。
4 U0 T2 m3 w, a/ H9 e" r( g
D; N8 ^% h. p2 M8 y命令窗口标点符号5 J1 L) F- t6 U5 H# P2 l3 k
●空格,逗号”,”:1.输入变量的间隔 2.数组/矩阵元素的分隔符。- I, S) j4 `% P
●分号”;”:1.命令的结束表示,同时不显示结果。2.数组/矩阵元素的行间分隔符。 i8 `) f7 a$ I% S# J$ S# H+ f3 x
●冒号”:” :1.用于生成一维数值数组,表示一维数组的全部元素或者多维数值某一维的全部元素。详细用法见链接
- T) L# q: x& F7 l- f/ @●其他见链接
) N2 y& Q6 ~$ x0 o. Z( x5 s1 P; k! j) {
Matlab变量命名规则与C++/C#中差不多,由字母,数字,下划线组成。但matlab中变量名第一个字符必须是英文字符,C++/C#中可以是英文和下划线。
+ x: i( l- H4 B5 o8 U, X' }; \+ L. Z5 Q; T K" {6 b
Matlab中预定义变量:
: H# H `2 M7 Z+ j1 `0 Q; o% Oans:计算结果的默认名称4 x+ q% q1 j6 S0 R9 h; p; Q/ J
eps:计算机的零阈值
- P$ O6 }; M+ N- `- binf(Inf):无穷大,-Inf为负无穷大
$ ^" ~+ {; ~# `, F3 o2 zpi:圆周率
; c6 j/ h. l. ^% D1 }1 f( I* zNaN(nan):表示结果或变量不是数值,无法定义的一个数
' R1 M9 v+ U3 O虽然matlab没有限制用户使用预定义变量,即可以再matlab的任何文件中将这些预定义变量重新定义,复制。但建议,不要使用matlab预先定义的变量名称。
0 g5 a4 } [$ h+ F) @
0 G. F+ U7 Q5 O ]9 A% CMatlab的搜索路径(沿这个路径查找相应的文件,函数或具体数据)" L" \) @8 x# b" e" n+ l7 T
搜索过程:如用户在命令窗口中输入命令myMatlab
& B# I2 T! |$ K1 e& J1 b/ e ●是否是内存中的变量3 t! s$ H; E B% J! j$ {$ G1 B' ?& \4 P
●是否是内置函数
6 U3 N# s7 [: ]3 [) F' x# o S. j6 U8 w# F, I
●是否是当前目录下的M文件; s4 o4 B: S: _* M; y
●是否是搜索路径下其他M文件
" V; q3 r- T- Y2 u搜索路径的设置方法:
, Y* U. p4 F% W& S1 w( p ●输入pathtool命令或path命令
& [9 A( U; ~7 e" F9 n
+ ?1 N$ e7 x3 G" i- r2 J ●matlab界面HOME->set path
3 n# }% {0 T- {2 {# J! L* M* a, ]: \4 x
使用path修改的信息只在当前matlab环境中有效,重启matlab后,就无效了。+ O+ I! k3 s4 N$ D2 P
4 A, e, |! u( h
查看变量:1.命令whos 2.用workspace窗口% e' Z, R9 s* l* x" t0 a9 p# P
, {! |. X1 T/ f删除变量:1.命令clear A; 2.用workspace窗口
5 K6 N; E$ M0 P6 e7 b5 L
/ G# D3 f( S8 u* Z' V" b.mat文件是matlab数据文件,保存工作空间的变量。3 O* L3 s* {- a+ S4 }" P
* _3 Z. U6 H9 [0 RMatlab区分大小写。
+ d) D& d/ `# U5 q, j
+ b( e* Y& E8 U- Q3 @Matlab中的变量不用声明,不用定义,拿来即用。
6 E% Y9 t9 T" i! X4 D5 R
v; r0 R' m6 ^* |% A' e输入一条命令,回车,就表示一条命令结束。% G" V* ]! T, J
1 b6 P! S/ w. c" I& I
Matlab是解释性语言,在存储结构和计算语句完全相同的情况下,matlab效率比C++慢。, k8 [' @8 ?, K3 N9 c
9 L2 ~3 h7 K e& B5 E, t; V
1.1 M文件" k6 k/ K% ]7 w( e' X% E
M文件分为1.M脚本文件 2.M函数文件6 u& @' A# {; T8 D+ @0 z% [9 y
+ l! x: C0 f( h/ X* ^0 y0 rM文件必须在搜索路径中才能运行。% Q Q0 i6 Q& s8 S; u5 ]
- V- M# O* o9 \/ A/ ~- o6 U1.1.1 M 脚本文件
* W' S. n$ y" o$ K. ~5 E1.M脚本文件由一组matlab指令构成,其中的语句可以访问matlab工作空间中的所有变量与数据。脚本文件中所有的变量都是全局的,可以被其他脚本文件与函数文件访问,这些全局变量一直保存在内存中。脚本文件中的语句与直接在命令窗口中输入的命令是一样的,只不过封装起来了。, I4 v) W4 x4 i* F% m% s
+ X$ }4 j9 U( u0 W- e- P2.M脚本文件执行是直接输入脚本文件名就可以了。
0 G0 }9 i7 _0 m( v( z# a. @, b' Z$ d6 U% G
1.1.2 M函数文件2 r( k/ c) m& r
格式:" m4 ~, e; z) t7 i& i$ f
8 V! e0 E1 ]9 G" R2 j
funtion[输出变量1,输出变量2…]=函数名(输入变量)0 y: C* l# [6 O4 {! G
, ^, x3 z y2 i8 k& ?9 @9 O 语句;
$ F% N8 x- h/ H( c5 ~2 E/ Z1 e# l' {* h- ^1 o" V
1.M函数文件的文件名必须与出现在文件第一行的函数名相同,系统根据文件名调用该函数1 G1 F c, F$ E0 g
- }2 Q& ^5 [4 N( F Z2.M函数文件的组成部分:
% _9 l0 T- m, U/ r% B6 t" o% K0 X
0 H. R% d7 N1 y% z" r6 X& m组成部分3 Y+ o ]% \3 \, h4 }5 g
# S$ t! ~, y& R, E5 x5 @描述8 Y2 k9 `- ~' u( `
( Q" [* [ ]( H函数定义行" H; `! \. k3 S. y4 F' Z) E5 W' H
! w+ @) z( m, Z% R3 ?& W定义函数名和输入输出变量
0 E) D: o- j) j
. V$ @) E& ~! d$ Q) QH1行' _4 P; v/ S5 i ^! g& P( h
9 B2 u2 f+ G( T& b/ k) I# @3 p G描述函数功能,可以用lookfor命令搜索到8 W. |/ k, n! X" `
% l, Z8 Q" b( o( N& W8 C帮助文本(帮助文档)
- V/ w+ c5 D [1 E: @* i/ r. a4 g1 R$ x: ~ s+ J
跟在H1行后,用help命令调出,详细描述函数功能6 C) v( @6 b8 j2 u9 s
% T/ ?4 p5 \ R+ e) R
函数体8 k( R. T; D! T8 V4 o) V
7 m4 R! B# D6 M6 l# G/ F i) z
实现函数功能的代码+ u9 l4 C u& N& c
5 Z& }' w( c' m( Q0 @
注释
, Z# z( A5 {; e+ O& p7 @, T% }2 I6 t6 b4 }7 h2 @6 ]; \! S7 t( B) O
- b- U5 T$ P7 Q; e* m+ c! ^
* Y( W' E; p; j j( |
如- |3 d* W7 ^% |5 W+ i7 Z
9 v6 w8 ]4 v/ M# {% E# a/ J% B& [/ Kfunction [ output_args ] = myfun( x,y )
" K( P3 X$ x9 y+ j8 F
6 `0 \& F; N+ w* t
4 M. l( |$ P$ y; y) y4 a' m( Q9 S9 y8 q0 _# X) ]. X, t( ?
H1行
0 l7 ^7 w7 C6 K* g
& ]; g$ d: e1 b% `7 i4 q7 \$ F ; K, o" J2 B! f9 ^- M
H1后的帮助信息5 i( r; l' |/ f
! ~( I5 l4 ]9 n
% e, w+ Q+ i$ }9 H%caculate* l6 X, h+ F; j, ^2 ]- ^1 E2 O
; g$ y# Z# v0 _/ S3 G% if y does not exist,return x
2 y: }; D0 k. r3 m" Q& y6 ~, C* n. V% ]2 Z/ M2 j* Q
% if y exists,return sqrt(x.^2+y.^2)
, }& ~7 C% Z2 I' t0 P$ R
& p [" m* D/ c0 {if(~exist('y','var'))& F. q; [/ i3 g% i
" |) C! z( W' R+ a2 f output_args=x;%y不存在
% K" Q0 F6 I4 D) u2 C: r( x& t- p% y* f1 j; H b) `
else
8 Y: Z2 Y" X) }! @& e
& a ]) E$ s0 c$ l W+ N7 w/ ~ output_args=sqrt(x.^2+y.^2);
9 k) j Q; B/ [) L2 L6 ^ _2 Q! g' s- u; f2 W
5 E$ `! A. e; A; G3 C8 R
( p% P, H% p7 c- d4 G. {8 nend6 d5 L* E2 q% Q( J+ A
5 Q e$ N* C" x命令窗口:
6 i! C7 a. A C0 c& ]# F. A' u( U# h; ^4 a- X
>> myfun(9)2 W$ ?$ [+ v8 T5 D; b5 b9 x
2 N1 v# w p% c# j9 a( W0 r' P
# Y: X2 N, Y/ e8 _4 p
2 J9 E. q/ @; }4 ^2 \! b" Cans =* z% O( i1 w& G; o% c7 i
: A) f) G0 I3 A: A) E ?% \2 g
6 }% T" v/ k% o5 G& J
5 W! t0 w9 z5 \+ f$ M0 {5 T: u 9; x& I' F/ _. L4 h ?, O
9 _6 ~ @4 N2 [8 P; i0 ?
p0 s2 I& f2 }; I( |% S0 I
4 i! f* K& y4 M0 q5 q- c
>> myfun(3,4): I$ \! w9 o3 I. R5 u" |) J) K9 N
. `& ^6 l2 r6 H& s
@" I& c' S! B: X& S0 T6 j, V) W/ S* }7 B0 D4 v5 {
ans =6 P z' Q) R9 R
9 F) B6 u4 X w8 W5 h0 Z
% l4 [ Z, v5 g; E9 N( _; {! _' G9 n
59 t h6 h( u8 j0 p a4 l# L
0 P2 a; V7 I# [! l! z3 l3 q>> help myfun %帮助信息
3 [! Q0 U J, y+ N4 n0 {8 I' b& S/ ~; P6 M. O3 Z- j' ]/ ]- |4 @
caculate
: R) D6 |1 U$ g" k2 g* i9 O0 M$ L/ e3 |5 n# ?1 H* [
if y does not exist,return x
0 }; U/ W9 Q4 `" X8 o: {$ t7 h* j6 _' H% }2 ~! p) q, b. s; w: f' z
if y exists,return sqrt(x.^2+y.^2)' E7 a8 `3 L* f) L( v( J8 {8 w
$ t( D% u6 ~ R& {- H# V0 x$ o
函数体中的语句如果不想输出结果,一般最后加上”;”1 K2 p2 s- C, E f9 A* n
5 M; U+ c, B& w3.函数文件的变量时局部变量,运行期间有效,运行完就自动被清除,而脚本文件的变量时全局的。
3 H5 ~; l0 O _6 h% C, H
# C" C9 q) j& E$ W4.M函数文件能够被其他M函数调用或被其他M脚本文件调用。 |
|