octave入门教程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

octave入门教程一,简介1.1Octave是什么?Octave是一款用于数值计算和绘图的开源软件。和Matlab一样,Octave尤其精于矩阵运算:求解联立方程组、计算矩阵特征值和特征向量等等。1.2Octave的适用对象Octave和Matlab被工程人员和科研人员广泛使用来进行各种工业和学术上的数值计算和仿真。例如,NASA使用它来开发飞行器的对接系统;JaguarRacing使用它来可视化和分析从F1赛车传来的数据;Sheffield大学用它来开发用于识别癌细胞的软件。Octave这样的软件让编写数值处理程序变得简单,并提供数据可视化的多种方式。1.3Octave的下载与安装参照网上相关教程;二,简单计算2.1Octave最简单的使用方式就是像使用一个计算器一样在命令提示符下输入相应的计算式。Octave能识别通常的计算表达式。例如,在终端输入octave:##2+2并按回车键,你将得到以下的结果ans=4各种计算符号的优先级与常规的一致,比如括号有最大优先级,其次为乘方,其次为乘除运算,最后为加减运算2.2内建函数Octave中有很多内建函数,可以通过输入函数名和括号中的输入参数来调用函数,例如:octave:##exp(1)ans=2.71813又如另一个更长的表达式:计算1.2sin(40◦+ln(2.42)),输入octave:##1.2*sin(40*pi/180+log(2.4^2))ans=0.76618其中基本的数学函数有:sin,cos,tan,log,exp,abs,floor,ceil等;如果你要退出Octave,只需要在命令提示符下输入quit或者exit即可。三,Octave变量3.1变量同C++,Java等变成语言一样我们可以定义变量,但Octave为解释性语言。因此Octave中变量的类型是不用声明的,但Octave中变量名是区分大小的,即变量a和变量A是不同的变量。octave:##deg=pi/180deg=0.017453如果你需要从当前的变量空间中删除某个变量,clear命令能移出所有的变量,或者移出某个特定变量,如:clearname将移出名为name的某个变量。3.2载入和保存数据当你退出Octave的时候,你将丢失你所创建的变量。如果你需要在工作的中途退出Octave,那么你可以保存当前会话的数据并在之后重新载入它。如果你输入octave:##saveanyname这将整个工作空间上的变量存储到当前目录下一个名为anyname.mat的文件中(注意.mat是Octave自动添加的)。这样你可以退出Octave,之后重新启动Octave程序,通过输入octave:##loadanyname将重新载入之前保存的命名空间,并从你中断的地方重新开始工作。同样的,你可以载入或者保存特定的变量。格式为octave:##savefilenamevar1var2...例如,如果你想存储deg变量,那么你可以输入octave:##savedegconvdeg这样将deg变量存储于名为degconv.mat的文件中,你可以通过以下命令重新载入变量octave:##loaddegconvOctave同样能从文件中导入数据,这样的功能在你使用其他的数据来源进行画图或者计算的时候变得非常有用。例如:X=load(‘featureX.txt’);3.3获得帮助如果你不清楚某个命令或者函数的用法,可也用help命令来获得其详细的用法。helpcommandname例如:helpplot3.4分号和隐藏结果分号在通常的编程语言中被用来表示程序块或者单个语句的结束。在Octave中分号不是必需的,但它也有一个特殊的功能。我们目前的例子中,我们只要输入一个Octave命令并不以分号结尾的话,Octave总会将语句执行的结果随即显示出来。但是,如果我们在一行语句的末尾添上分号,Octave将不会显出相应的结果。四数组和向量及矩阵前面介绍过Octave的优势就是可以很方便的进行矩阵的相关计算。4.1构造向量构造矩阵或者向量的方法有很多。其中最直接简单的方法就是在一个方括号[]中给出其元素,例如octave:##a=[145]a=145octave:##b=[2,1,0]b=210octave:##c=[4;7;10]c=4710在方括号中由空格或者逗号隔开的一组数据被定义为行向量;而由分号或者回车隔开的一组数据被定义为列向量。你可以通过已经定义的向量来定义新的向量,例如octave:##a=[145]a=145octave:##d=[a6]d=14564.2冒号表达式利用冒号能够非常方便的创建一些特殊的向量octave:##e=2:6e=23456冒号表达式的规则是告诉octave创建一个以第一个数字开始并以一递增至第二个数的向量。在第一和第二个数之间可以插入第三个参数来声明向量中元素之间的递增量,形如a:b:c。4.3向量构造函数zeros(M,N)创建一个MXN的全零矩阵ones(M,N)创建一个MXN的全一矩阵linspace(x1,x2,N)创建一个N个元素的向量,均匀分布于x1和下x2eye(M)创建一个MXM的单位矩阵rand(M,N)创建一个MXN的矩阵,元素为随机值4.4向量中的元素操作向量中的元素通过括号(),而第一个元素的编号为1,而不是像C或者C++那样从0开始。例如octave:##a=[1:2:6-10]a=135-10我们可以通过以下命令访问到该向量的第三个元素octave:##a(3)ans=5冒号的表示法同样可以用于声明向量中的元素的范围octave:##a(3:5)ans=5-10octave:##a(1:2:5)ans=1504.5向量的计算将一组数据存入一个向量之后能够使用很多的Octave函数来进行计算。在C++中如果你想进行相同的计算,例如每个元素乘以2,你需要使用for循环来对每个元素操作。在Octave中虽然也可以使用for循环来实现,但是Octave本身由有简单的向量操作方式。向量中每个都乘以一个数可以通过对该向量乘以一个数来实现。以之前定义的a向量为例:octave:1a=[1:2:6-10]a=135-10octave:2a*2ans=2610-20对向量中所有元素都除以一个数的操作与乘法类似。使用+−算符,你同样可以对该向量中的每个元素都加上或者减去一个数值。两个向量的相乘遵循矩阵的乘法法则,向量乘法并不是对应元素的相乘。如果要进行对应元素的乘除法,你可以使用.*以及./算符注意每个算符前的‘.’表示为一个元素对元素的计算。例如:octave:3b=1:5b=12345octave:4a.*bans=1615-40逐个元素的乘方计算同样也很有用。该计算的算符为,例如octave:5b.^2ans=1491625octave:62.^bans=2481632octave:7a.^bans=1912510只要两个向量又相同的大小和形状,它们就可以进行元素之间的(element-by-element)加减乘除和乘方运算。4.6函数操作向量前面讲到过的函数也是可以适用于向量。例如:exp,log,abs等octave:##abs([-12-3])ans=123此外max,length,size,sum,mean,std,floor,ceil等函数也许要掌握,可以通过help命令获得详细用法。4.7矩阵的转置一个向量的转置将其由行向量转为列向量或者由列向量转换为行向量。矩阵的转置将其行和列交换。在数学上,矩阵A的转置表示为AT在octave中转置操作用上引号实现:octave:6A=[579;-13-2]A=579-13-2octave:7A'ans=5-1739-2此外inv求矩阵的逆,det求矩阵的特征值,trace求矩阵的迹。五画图Octave通过调用另一个开源软件GNUPLOT来实现非常丰富的画图功能。最基本的画图命令是plot(x,y),其中x,y分别为横轴和纵轴数据。可以进行相应地颜色和样式的选择如:’ro’代表们红色圆圈,’b.’代表蓝色点点等;可以通过title,xlabel,ylabel添加标题以及x,y轴名称;legend命令为该图片添加相应的图例。5.1如果你想保存当前的图片内容并将新创建的图片层叠到原图片上,你可以通过使用holdon命令来实现。使用该命令,我们可以实现在同一幅图上呈现由两个plot命令绘制的线条。octave:##x=linspace(-10,10);octave:##plot(x,sin(x),’r-’);octave:##holdonoctave:##plot(x,sin(x)./x,’b*’)octave:##title(‘Figure’)octave:##xlabel(‘X’)octave:##ylabel(‘Y’)octave:##legend(‘sin(x)’,’sin(x)/x’)5.2subplot(2,3,2)表示在一个格子中画图。因此该条语句的意思是分成一个2X3的格子,并在第2个格子里画图;其中子格的顺序为从左到右从上到下递增,即123456例如:octave:##x=linspace(-10,10);octave:##subplot(2,1,1)octave:##plot(x,sin(x));octave:##subplot(2,1,2)octave:##plot(x,sin(x)./x)5.3多幅图片可以用figure命令来实现.5.4绘制曲面octave:##x=2:0.2:4;octave:##y=1:0.2:3;octave:##[X,Y]=meshgrid(x,y);%makethegridoctave:##Z=(X-3).^2-(Y-2).^2;octave:##subplot(2,2,1);surf(Z);title('surf')octave:##subplot(2,2,2);mesh(Z);title('mesh')octave:##subplot(2,2,3);meshz(Z);title('meshz')octave:##subplot(2,2,4);contour(Z);title('contour')六Octave脚本如果你有一些重复输入的命令的,你可以将这一系列的命令存入一个Octave脚本之中。这种包含Octave命令的文本文件是Octave程序的基本形式。当你在Octave中执行这样的脚本的时候,其效果与将这些命令一行行输入Octave中的效果是一样的。而且当你对一系列要输入Octave的命令不是很拿的准的时候,在一个脚本中修改这些命令会比在Octave终端中重新调出及修改命令要简单方便许多。Octave的脚本是普通的文本文件,但是他们需要有一个.m的后缀(e.g.run.m)。因此,它们通常也被称为M文件。除去后缀的文件名部分是你在执行该命令时需要向Octave终端输入的部分。你可以在任何的文本编辑器(如,emacs,vi,notepad)中创建并编辑一个脚本文件。在Octave中可以通过以下命令octave:##edit在新窗口中调出文本编辑器emacs。如果你想编辑一个已存在的脚本,你可以在edit命令后加上脚本的名字。例如,比如你有个名为run.m的脚本,输入editrun将调出编辑器并打开该文件供你编辑。然后在Octave中输入run执行脚本:octave:##runOctave将运行该脚本中的命令并得到相应的结果。七控制语句到目前为止我们所看到的程序或者表达式都是一些简单的顺序执行的操作。向量和矩阵的使用能够让Octave执行更加高级的计算,但是要实现更加复杂的功能,我们还需要一些标准的程序语言。Octave提供了通常的循环和选择语句。其语法类似于我们熟知的C,C++,Java等编程语言。在这里仅仅举一个例子:octave:##x=1;oc

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功