|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
9 f. P( E% e! ~8 |matlab是Mathworks公司推出的一套高性能数值计算和可视化软件,集数值分析,矩阵运算,信号处理和图形显示与一体。同时Matlab也是一种编程语言,被称为第四代编程语言。/ B1 {( |5 @0 ]. E5 G
全称:Matrix Laboratory(矩阵实验室),matlab出现在20世纪70年代,由Fortran编写,到了90年代,其内核由C语言编写.
# p5 j$ y6 X- _
. P1 `% G! q$ [Matlab常见的交互界面
) l: _: ^. h5 q- U" {" v●Command window(命令窗口):在这个窗口中,可以输入各种matlab命令,函数和表达式。所有操作和运算的结果也会在该窗口中出现(图形结果会单独显示)。- T; V' C: ]$ m( h0 E% b+ \+ R
●Command History(历史命令窗口):记录了用户已经操作过的各种命令,函数和表达式。主要功能:方便用户回忆之前的操作,也可以方便用户对这些历史信息进行编辑(如复制,充运行等)。
) I9 p1 W' n1 n1 U: q1 u●Current Folder(当前目录窗口):在这个窗口中,可以设置当前目录,展示目录中的M文件或者MAT文件等。
0 R$ e! M4 H! k; D" w6 u3 z3 \●Workspace(工作空间):在这个窗口中,可以查看工作空间中所有变量的类别,名称,大小等。可以在这个窗口中观察,编辑和提取这些变量。
: E+ j* f' p$ Q5 e8 u: r2 K/ ]' ^& {' r* \
默认情况下,命令窗口的数值结果都以format short g 的格式结果显示,这只是matlab数值结果的显示方式,而不是数值计算的精度,在实际存储和计算过程中,使用的都是双精度。
6 ]7 w8 P, s$ x( g8 B/ P/ c4 r& J$ ^4 e4 ]; _
命令窗口标点符号7 t0 A1 v7 _) I
●空格,逗号”,”:1.输入变量的间隔 2.数组/矩阵元素的分隔符。% I3 P' W' v ]9 b
●分号”;”:1.命令的结束表示,同时不显示结果。2.数组/矩阵元素的行间分隔符。
+ x C& ?* k. S# E7 u●冒号”:” :1.用于生成一维数值数组,表示一维数组的全部元素或者多维数值某一维的全部元素。详细用法见链接/ F" K' |7 I+ z1 F% [( d0 }
●其他见链接$ l2 C5 { x) F a
* H, G' U, c, ]( v1 n, N% `( f
Matlab变量命名规则与C++/C#中差不多,由字母,数字,下划线组成。但matlab中变量名第一个字符必须是英文字符,C++/C#中可以是英文和下划线。) j7 T0 U) u- N
- }' c* |6 o* {* s- I
Matlab中预定义变量:3 P) F6 A. }, k# k7 d" S( b
ans:计算结果的默认名称
* [% w9 g" z* {eps:计算机的零阈值: ]5 n( r' p6 \0 t( Q
inf(Inf):无穷大,-Inf为负无穷大$ I/ D, u& q% n$ L( X# r3 W1 G( I
pi:圆周率
1 o# L8 w* K+ l5 M/ FNaN(nan):表示结果或变量不是数值,无法定义的一个数8 l @) e' B" A# D0 c! `
虽然matlab没有限制用户使用预定义变量,即可以再matlab的任何文件中将这些预定义变量重新定义,复制。但建议,不要使用matlab预先定义的变量名称。% j m' R4 N0 |
6 r) \( U R2 J N+ x: jMatlab的搜索路径(沿这个路径查找相应的文件,函数或具体数据)
: i& ]1 t2 F; D9 ^, q' h搜索过程:如用户在命令窗口中输入命令myMatlab
5 n1 Q& z: F/ F ●是否是内存中的变量, N" f% u- l6 r2 k' i
●是否是内置函数
6 r! B8 V* t+ v4 {$ D8 q. O6 o! \9 e% q
●是否是当前目录下的M文件
5 ?1 z9 Q* A; { ●是否是搜索路径下其他M文件
7 ^: ]' o* d# I* S7 Y搜索路径的设置方法:( I2 b5 j" i4 A7 N! h
●输入pathtool命令或path命令3 j# [8 c7 e/ m- V- \
, e: i3 A9 l, Y: V; ]
●matlab界面HOME->set path
( t& ~7 h: M" H( y+ F; T, K. l' K" b, i
使用path修改的信息只在当前matlab环境中有效,重启matlab后,就无效了。/ p$ x @: L) Z6 ]* z3 w
6 Q; x. \5 r; x7 B+ y查看变量:1.命令whos 2.用workspace窗口4 ]; V0 C8 [4 n$ q% q
' {3 P" x& F T* f) b删除变量:1.命令clear A; 2.用workspace窗口
, R4 w# K# t7 M6 a5 Q, }7 K$ T9 V! p# M6 u
.mat文件是matlab数据文件,保存工作空间的变量。
4 F. G9 B! q/ G* z& _: N7 a H, E0 d4 M9 H3 R/ q6 d
Matlab区分大小写。
6 `. I: @5 [ @: P4 S9 A$ r. U; c: V0 B: q3 y
Matlab中的变量不用声明,不用定义,拿来即用。
; m# E8 F( R! E0 w, A9 P* n1 h
+ m/ [: Y& B9 o' |- J$ M输入一条命令,回车,就表示一条命令结束。" x6 P; c; A% S: G/ u7 _4 [
6 S' ^/ o( ?, k0 C5 R& {
Matlab是解释性语言,在存储结构和计算语句完全相同的情况下,matlab效率比C++慢。
3 O; \$ ~( ]; [# a) o5 \; K
, @6 F/ j; i+ g1.1 M文件
2 ~4 Y. Q# D5 Y2 p. q- pM文件分为1.M脚本文件 2.M函数文件' u8 t. e% d& n D, u
( H- Q6 r& H R2 O8 b; U+ \M文件必须在搜索路径中才能运行。, m1 A' j; J0 I7 P# j
* E/ x8 P- E( s1.1.1 M 脚本文件; V1 x" g8 a5 p* z9 r
1.M脚本文件由一组matlab指令构成,其中的语句可以访问matlab工作空间中的所有变量与数据。脚本文件中所有的变量都是全局的,可以被其他脚本文件与函数文件访问,这些全局变量一直保存在内存中。脚本文件中的语句与直接在命令窗口中输入的命令是一样的,只不过封装起来了。* A7 F# Y/ B) ?6 N: K
1 d8 p" u7 F3 S# f, R! s2.M脚本文件执行是直接输入脚本文件名就可以了。, X: Q7 t Q0 U* U) ^ j9 G
9 {8 T: D& u; `1.1.2 M函数文件9 K+ N* A) H8 e9 a/ Y" z
格式:
j+ s) I' a" l; ]# j [. y
2 ^" f3 O6 t. \/ y T, y4 F funtion[输出变量1,输出变量2…]=函数名(输入变量)8 T p* l& ~5 {( U4 `9 a$ w
$ |0 ]9 q* s9 w( q 语句;& o* }: @9 }+ u0 W) v- L: R( Z# [: A
+ a D" B" q/ v1.M函数文件的文件名必须与出现在文件第一行的函数名相同,系统根据文件名调用该函数8 @) J( E6 i. ~7 V* Q- V
( Y3 ^3 n) `( ^) j
2.M函数文件的组成部分:
/ P- p7 J! M \' i/ @* X) q/ K$ m0 i# q5 t5 a u
组成部分, G ]+ J( N4 Z
. r3 g6 m! d2 O描述
- e# s& T$ R% J+ ?, k: @# d' z& Y; \7 V' m7 M
函数定义行; m( E7 o* C% R9 t
8 r# F6 m1 _: ^. d, p( t2 T1 S
定义函数名和输入输出变量
8 ]6 _7 D1 N. w. b( `, A, w) ]
% Y. w( y6 @3 S$ t" v& T* [; SH1行
* c( h. O) |8 i0 H
' e( {8 G! V) O描述函数功能,可以用lookfor命令搜索到
# F t: g& U' Z9 }7 h% L- W
8 b$ Y' ]& c# z9 H! ]' x帮助文本(帮助文档)
" E' u$ l4 k8 R; u1 v8 {+ l0 ^# N4 ]
跟在H1行后,用help命令调出,详细描述函数功能
* r0 ?' h0 I3 v* Y( N" p" f" @
! w9 [* i( h; Y q v! f* g% S函数体# E9 n l! J1 k
8 R! e0 U- b0 T2 L
实现函数功能的代码# g- b: z. ]* o X# n/ }4 f# G) I
; o+ j' h6 m* H2 l) T( I0 K3 z注释
0 v: `/ j- h/ \4 _. ?& i1 }) m! ]: N' _
) P+ x2 i9 k- ^# J) q6 H F& d- ^
" N6 V4 p, Z3 O如
3 G1 E1 K' i3 V* B+ T% {8 T N- z3 T# a+ M3 }' h
function [ output_args ] = myfun( x,y )
2 C- i4 f- \& e$ k8 A6 _
% J" s: M8 y+ [! |& c
: z3 D+ K' K9 Q
. M- D N6 g8 j: Z' b/ OH1行
' x7 _. ?; H z0 M @
4 a7 D0 P( r/ \" d5 [( r
, ^& n% r$ o$ p0 W: rH1后的帮助信息
& f9 ^3 ?6 v/ o9 G% r
- x. f E3 f* A! e( X( z + L, y+ u! h/ x. J( _
%caculate7 R7 g5 @ R4 _" b7 K k2 w) M9 h$ A+ \
7 A3 n+ V; s$ L, D% if y does not exist,return x
; v* p d7 r9 \/ m3 z
4 _4 B& W! Z @/ U% if y exists,return sqrt(x.^2+y.^2)
5 S: |/ K+ L2 B& {1 F$ \; ~: h( `* O
! K! { z2 h. t3 g# e4 I& Cif(~exist('y','var'))/ @6 |2 \9 H+ \+ L! p( M9 ]
0 L4 c. t- h7 Q2 T
output_args=x;%y不存在4 b- ]5 B* ]( O* ?/ r; r
5 U# ~) `" Y* J9 @3 I
else5 y n8 [7 P2 ~$ Q! \
4 B4 v, `, D/ l! G% z5 |3 X
output_args=sqrt(x.^2+y.^2);
6 M+ Y- C+ w$ v J6 I7 K+ k# b: n% F
" ]9 \' Q* Z- W+ j% S* T& z* I4 ]* B I
end. ~: c; K1 s2 E) ^. [# X( p
' ~/ ^1 m7 M1 w2 s% t$ s
命令窗口:1 J7 @- e. u: G; N, s! [
2 ?* n/ S0 i% q- v# L! i
>> myfun(9)
4 m6 u/ a4 Y. V# n* M1 w2 \& j) U4 i+ B+ \. N" S1 `
- J, P- s5 X0 F3 _0 i) { O
) z+ l- f, Q1 O. x4 p5 w. ?, g9 U
ans =
$ T+ S/ ]' W6 w5 l* ]1 f4 {# n1 O) c4 r" h$ d6 i, n' p
1 u- ]/ Q6 D% A( p, G
) J( n6 F/ u. w: ^8 x$ q( x 9
+ e* r! V, I% d7 } {9 H% K
1 m& C8 c- f: D9 A+ }
3 w: n2 {) k) p' O( \* Z* y9 M. Y
" G* e+ _* K7 O+ ]" L4 U>> myfun(3,4)
) a; F' d$ x' V: N2 O" Q; _0 \5 w
[0 I- O. h) F+ w+ h
, @- d K i5 L b
' h V7 u3 G6 K7 d7 H ]' _4 |3 Zans =
; I' L7 t. ^0 q1 T( `3 j( z! W* b/ J; Z1 M1 H
6 v+ X/ f/ z" q0 n8 R
. p/ `/ S) d. x& o, `4 i9 a& W) ` 58 v+ N" s9 k% Z8 f8 I( u; T
: S9 j. f6 d, x* q. T>> help myfun %帮助信息
3 d7 Z0 h- \7 E# G% t/ y$ `
- l5 N+ y$ w) E% `/ I# J Y/ Y6 Q caculate
7 D( L. n- o6 \" `2 \( T8 X7 W3 N) Q1 _ P9 ~' I) d) b6 |/ O
if y does not exist,return x0 J1 M3 J i. I F7 ?
/ g3 T' [$ M( A7 N# ^( K4 b if y exists,return sqrt(x.^2+y.^2)7 U$ u @3 I% {/ _1 Z
, _7 f0 G) \* d" I" \9 |) B& s函数体中的语句如果不想输出结果,一般最后加上”;”
" r* T2 v. q. G+ |" z8 L; D7 r
* y N0 M: N7 O: b% o7 ]3.函数文件的变量时局部变量,运行期间有效,运行完就自动被清除,而脚本文件的变量时全局的。" w7 b1 |1 m# D! B- x2 |' r
+ b! P" m; E& E
4.M函数文件能够被其他M函数调用或被其他M脚本文件调用。 |
|