首先说明GNU Octave脚本的功能。Gnu octave脚本就是能够写出一个脚本文件并告诉shell通过调用ocave代码解释器来解释代码。使用的一个例子:
比如我们有一个存有数据的文本文件,我们需要以此文本文件作为shell下命令的一个输入参数,完成基于此文件内部数据的数值处理。假设数据文件为 inputdata.dat,我们通过执行一个脚本 (比如名为processdata)
代码: 全选
./processdata inputdata.dat
让我们一步步的来。
Step0:准备工作
安装了octave就可以了,很简单。
Step1. 让octave作为解释器
我们知道bash脚本的第一句是
代码: 全选
#!/usr/bash
由此类比,GNU Octave的脚本的关键就是在脚本的第一句用
代码: 全选
#! /usr/bin/octave-3.0.1 -qf
一个例子:
1.首先编辑文件:
$ vim testoctave:
代码: 全选
#! /usr/bin/octave-3.0.1 -qf
printf ("%s\n", program_name ());
arg_list = argv ();
for i = 1:nargin
printf (" %s\n", arg_list{i});
endfor
printf ("\n");
这个简单的脚本实现了打印程序的名称(printf ("%s\n", program_name ());)以及打印输入的变量( arg_list = argv ();
for i = 1:nargin
printf (" %s\n", arg_list{i});
endfor)
正如上面部分所说:其中的第一行 #! /usr/bin/octave-3.0.1 -qf 是告诉shelll用octave为解释器。
有matlab或者octave基础的同学都可以看出脚本内部除去第一句较为特殊外,其余的都为普通的octave命令。
2.为testoctave加入可执行权限
代码: 全选
chmod u+x testoctave
3. 在bash下执行之
代码: 全选
./testocave inputfile1 inputfile2 inputfile3
2. testoctave
3. inputfile1
4. inputfile2
5. inputfile3
Step2:进阶
我们再看看以下的例子:
代码: 全选
#! /usr/bin/octave-3.0.1 -qf
printf ("%s\n", program_name ());
arg_list=argv ();
for i=1:nargin
data1=load(arg_list{i});
figure;
plot(data1(:,1),data1(:,2));
print -deps data.eps;
endfor
虽然只是简单的实现了脚本对数据的读入和画图,但是只要data1变量能够接受到输入文件中的数据,那么我们可以以此做任何我们想要实现的数值处理。
我在终端下面这样输入命令:
step1: chmod u+x readdata; #加入可执行权限
step2: ./readdata inputfile
ok,功能实现,很高兴看到目录里出现了该数据的图像
代码: 全选
总结一下 其实关键点就在:
1. #! /usr/bin/octave-3.0.1 -qf
2. arg_list=argv ();
3. data1=load(arg_list{i});
===================新修改==============
那个
代码: 全选
#! /usr/bin/octave-3.0.1 -qf
octave -q时是让其启动时不显示一些介绍性的信息
-f选项最好不要用 使用该选项则不会读取 .octaverc等文件的设置
其实简单一点的话用
代码: 全选
#! /usr/bin/octave
ps: #!据说叫魔法字符串什么的