|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
; z4 Z: t/ q% K8 i& b2 omatlab是Mathworks公司推出的一套高性能数值计算和可视化软件,集数值分析,矩阵运算,信号处理和图形显示与一体。同时Matlab也是一种编程语言,被称为第四代编程语言。/ Z+ v* w" f. D, N: X' ]
全称:Matrix Laboratory(矩阵实验室),matlab出现在20世纪70年代,由Fortran编写,到了90年代,其内核由C语言编写.7 T6 @8 A2 ~3 A$ W7 Y
0 W* N* L$ u8 E. I8 m
Matlab常见的交互界面
9 R8 ]7 M" i' r- j: h●Command window(命令窗口):在这个窗口中,可以输入各种matlab命令,函数和表达式。所有操作和运算的结果也会在该窗口中出现(图形结果会单独显示)。
2 M3 }7 U! {' y- X- D, o9 b●Command History(历史命令窗口):记录了用户已经操作过的各种命令,函数和表达式。主要功能:方便用户回忆之前的操作,也可以方便用户对这些历史信息进行编辑(如复制,充运行等)。
}1 T' t& B# d( _! m8 i. }●Current Folder(当前目录窗口):在这个窗口中,可以设置当前目录,展示目录中的M文件或者MAT文件等。
6 s4 A5 O' u) U" \, Q+ ^& n" v●Workspace(工作空间):在这个窗口中,可以查看工作空间中所有变量的类别,名称,大小等。可以在这个窗口中观察,编辑和提取这些变量。5 H. u9 [7 q3 A' P& e
3 @; D; e" a) P8 E# D默认情况下,命令窗口的数值结果都以format short g 的格式结果显示,这只是matlab数值结果的显示方式,而不是数值计算的精度,在实际存储和计算过程中,使用的都是双精度。- q A1 ?3 K4 q# w8 S: B7 v: I
! E' Y- N. @* i/ f: R命令窗口标点符号+ @5 W9 b5 n6 C: F; _
●空格,逗号”,”:1.输入变量的间隔 2.数组/矩阵元素的分隔符。
+ H5 d- o7 i$ v# Y●分号”;”:1.命令的结束表示,同时不显示结果。2.数组/矩阵元素的行间分隔符。
0 n8 P2 L8 a( w' I# H! [, P●冒号”:” :1.用于生成一维数值数组,表示一维数组的全部元素或者多维数值某一维的全部元素。详细用法见链接; w) S* A3 I# t
●其他见链接
$ D% T) i, }5 F3 w) J( v; |
' A7 X# s' H/ ?3 {6 V# FMatlab变量命名规则与C++/C#中差不多,由字母,数字,下划线组成。但matlab中变量名第一个字符必须是英文字符,C++/C#中可以是英文和下划线。
0 I5 U' V i* i0 x7 z e2 h s ~
+ v* ^, L3 e% A9 ~" oMatlab中预定义变量:( p( h- U9 x9 p7 G$ d/ b/ _1 M. E9 @
ans:计算结果的默认名称' s# V$ l: G2 Q, A- k f" m
eps:计算机的零阈值; Q8 @7 f+ s$ z, R3 i( k
inf(Inf):无穷大,-Inf为负无穷大
% {- w6 g$ A1 o( Y& V2 X! rpi:圆周率. \" k7 e, t" B; W& U
NaN(nan):表示结果或变量不是数值,无法定义的一个数
u+ @/ c" j3 P# \2 U) w& ^- h虽然matlab没有限制用户使用预定义变量,即可以再matlab的任何文件中将这些预定义变量重新定义,复制。但建议,不要使用matlab预先定义的变量名称。9 a8 E. D+ \5 [* }) S) E6 N
2 F# ^, ?( |' m
Matlab的搜索路径(沿这个路径查找相应的文件,函数或具体数据)
/ J3 ^* \; v0 [6 q0 e) _: O: @搜索过程:如用户在命令窗口中输入命令myMatlab
9 I4 S( k. x2 ^; w I% h ●是否是内存中的变量
3 i# x* C5 t# r2 k+ o8 _ ●是否是内置函数1 {( i% J/ o9 a2 {( K
9 e3 g* m, l% p- i ●是否是当前目录下的M文件* M; D; U" |0 b/ P- I
●是否是搜索路径下其他M文件
4 Z+ n" H! H# u5 x# d2 z搜索路径的设置方法:
: O: r, I3 I! w, n5 A7 L+ ? ●输入pathtool命令或path命令- x! D4 a% \1 W( Y1 e
/ k. c7 l- F4 V3 \% M9 g) O
●matlab界面HOME->set path- Z( o9 ~, H3 {' c6 }/ o8 W
$ {& B; e: ?/ {) I5 M
使用path修改的信息只在当前matlab环境中有效,重启matlab后,就无效了。( S" o* \- B j2 D- N' t8 ^; c
0 |: @ l: i3 y% t
查看变量:1.命令whos 2.用workspace窗口$ S$ ^5 J5 J+ ]& d
a4 Q8 U2 X1 o ~6 k5 A! ]* A删除变量:1.命令clear A; 2.用workspace窗口" Y C( a8 n1 ]1 ^1 X; Q: d' o7 s8 f7 d
2 S3 J9 B8 c3 N' w2 v" u
.mat文件是matlab数据文件,保存工作空间的变量。9 ~! J$ o9 @" `# s. Q5 ^ ^4 Z
/ o' _# q ?/ t3 ] |3 [( ^0 b
Matlab区分大小写。% E6 [' h# m! t
3 x7 k* d" ~6 y6 R8 n/ _7 ^5 sMatlab中的变量不用声明,不用定义,拿来即用。/ u# E; [3 [1 L! i
+ N7 {) t( j2 Q6 e' P
输入一条命令,回车,就表示一条命令结束。' X9 S6 A# o2 Q$ ]4 l
, f. B- X) {# v% l0 j: |# PMatlab是解释性语言,在存储结构和计算语句完全相同的情况下,matlab效率比C++慢。
8 J- C( t, p: {0 S
* d5 u$ T% x4 U1.1 M文件 X) L( ~9 ^. } v# U/ Y
M文件分为1.M脚本文件 2.M函数文件
( x, h# P3 {3 H, U7 X
0 q8 p9 z# g0 B" g; L8 }M文件必须在搜索路径中才能运行。
# \. @6 E- P/ D' G; [9 _; @8 P; @- ~" `7 D" k
1.1.1 M 脚本文件
$ ^, ~* n9 m7 h1.M脚本文件由一组matlab指令构成,其中的语句可以访问matlab工作空间中的所有变量与数据。脚本文件中所有的变量都是全局的,可以被其他脚本文件与函数文件访问,这些全局变量一直保存在内存中。脚本文件中的语句与直接在命令窗口中输入的命令是一样的,只不过封装起来了。
. v0 _+ k& Z* T
3 _, J* \1 T/ V1 H* B2.M脚本文件执行是直接输入脚本文件名就可以了。
4 s! p' O8 @0 b7 ~' q- Z
% t/ D8 @+ n9 g3 p( q, R5 n- s% Z1.1.2 M函数文件
6 _9 c1 [4 Y$ i: K格式:
5 q/ d, S* b- c4 \8 z) K$ {" V" u. z& P) Z7 b
funtion[输出变量1,输出变量2…]=函数名(输入变量)
4 } p9 H; N! Y$ ] h: G; q" \
% j& {% A' `" N. E 语句;
- K# _% x! p3 v% v8 V
' g J! B0 D' R) G9 H4 {1.M函数文件的文件名必须与出现在文件第一行的函数名相同,系统根据文件名调用该函数. `: q' V/ p+ D* O" [" H
8 A; ~. |" X# x8 w) g2.M函数文件的组成部分:
2 ?. g+ p3 b7 T1 J3 l# x4 I) T- \1 f, m9 {* q8 _9 g* V
组成部分: ?$ b; I( U2 c* h& V i
6 ]0 x. M6 O+ o C( W1 V9 z: z
描述
3 q$ b$ B6 h& R% z* _) K2 b m2 Z" u! n; }7 ~& |
函数定义行" j5 _0 X/ i) [5 a& o2 u% h1 z
& M8 y, f4 }5 i7 U# K) a9 q( M
定义函数名和输入输出变量7 |) r2 N4 {$ U& W; y5 K. v
) D% k" X# w! V2 n* ?8 P- k. wH1行
# W* f- Q+ F9 m3 Y; i# H2 X( u" x/ T" |+ W# {
描述函数功能,可以用lookfor命令搜索到4 x, j+ ?; z2 x7 A
3 `, X. \( S6 N) I+ @' U6 z帮助文本(帮助文档)
) q& b) @$ ], J; C
3 G, a) v& A ^7 a u. b! O跟在H1行后,用help命令调出,详细描述函数功能
, l2 o2 m! ?, I; K/ Q0 A& {' a/ M
函数体/ w$ W: Z/ z3 k: z2 s1 b1 p+ I: ]/ r
+ H$ D+ l+ y a% n/ L1 @6 F4 k4 P+ F3 h" I
实现函数功能的代码
0 o3 r3 N7 q9 p: E& b: z' o6 n8 F/ ^$ d7 y! ]2 l- P% O
注释0 {& Z6 ^9 U0 V& e5 o
a0 c# w$ @0 G" y9 L6 t5 @+ U) y2 L: O' s9 t! z
+ u' D/ X O6 q7 `, v, ~( F% H
如
/ z- s( ^& x- [0 E: z- O# d/ ^( t# b0 A# g" Q2 p1 z4 N7 g
function [ output_args ] = myfun( x,y )
H1 T% s9 j" v. C3 }: j2 S
) u- Q& h& d2 _9 z2 u
9 i) w7 |# K9 {+ d
6 {. Q9 f( h* ]0 D' s |H1行
4 I1 ^+ F' a3 }' \& n9 \! `4 K, s5 j
3 v* C2 h$ J) g) |
H1后的帮助信息
: H# @0 g" t- w7 q" C( z: a" s0 n5 A; x
$ G, X! h4 g* ~
' E5 ]. A- T, K+ j# O%caculate
' L6 ^$ M" M' O6 b
: {" ]8 k( H2 h% if y does not exist,return x/ P) H2 i6 |. L1 y4 A7 ]+ Z% v* x
" b+ b' A$ ]1 ?0 k9 F$ T0 q% if y exists,return sqrt(x.^2+y.^2)
* }. w; [+ s- v6 \% u$ h, m
2 g- U/ h$ H& Xif(~exist('y','var'))
* `* I2 I, w& C! d5 @* B _. p1 ?
/ o- C8 g9 T: k, t, { output_args=x;%y不存在
! `; W6 P! N- ^/ c: @, l( j4 q1 l( w! s+ z
else# i5 p: N8 I8 }8 l* D- V& @
4 X' A& b8 m1 M, w' X output_args=sqrt(x.^2+y.^2);4 F/ k$ e) t( j9 g
( ]+ g( R- G; Y) ?6 w- r. [
; w- I7 r1 _+ @: {2 a( i" y
4 R7 q J( g1 Q1 W% ?1 H
end+ g5 x4 G0 m% n X" s; V
8 U/ L$ b3 t3 ^1 d- P! d
命令窗口:
0 G. x# u+ U+ q E! z' k7 e& ~& D% V; i
>> myfun(9)
* T1 o0 m9 u% s) q! ?9 [, [0 ^- v& w$ y9 p8 p/ f
7 b: L/ D% j. _3 @: [, r
" l m, ^# | S6 K* ^5 Z( Rans =
- E; C# V+ ~0 B. O7 `* q$ P
5 G2 ]7 H0 g) ~. X: B" V, b 5 x+ P) Y) S) X+ Q- {& k
+ L- T% V) F. A. \ 9) a+ r5 A. l7 B% M! J3 a5 H' k
. q0 O& E2 q3 c
5 w# m& p' P; C9 T+ F2 @6 v6 R+ b
+ v+ K6 M" A# U+ \3 @>> myfun(3,4)
) f8 X' s) S' k+ Z- w3 o# b9 B4 Q- c. [3 S5 J
& C0 a p: E/ H1 g
6 J; s6 l; R# y' Gans =
+ f, b4 Y! J8 Q; ]4 g8 v% t" k; ~
- ]% X8 ^8 M- \' Y q$ p9 S1 o2 [# b 4 _2 I0 c# T6 M
" O& U6 r* q* A! L, p0 x 5' H9 a$ \+ u+ I+ v& x- q, k+ Z( T& T) y: X
- W' B, Y- X& |7 g& M' P( M. v>> help myfun %帮助信息
$ ^4 H) z4 |! l- ~9 B& J
. q% [, a$ m9 P( p4 t( U; u caculate8 V7 l' ?$ p5 L9 b
) B7 W, o) C& f' ] if y does not exist,return x
( X4 ~* i0 F: M; r
/ y |5 [6 P+ M0 x if y exists,return sqrt(x.^2+y.^2)0 {7 c# i4 a7 G9 v' P; `6 m9 R
; ]. o2 Z* ^: ~# ?) ?+ j函数体中的语句如果不想输出结果,一般最后加上”;”6 w. O; ^6 y1 X
_2 k7 B$ C1 i3.函数文件的变量时局部变量,运行期间有效,运行完就自动被清除,而脚本文件的变量时全局的。
! j0 R6 g8 D$ W) M
8 I0 l8 I" s' a0 F; W" b4.M函数文件能够被其他M函数调用或被其他M脚本文件调用。 |
|