一、控制语句
1.1 if … else 语句
-
基本语法格式:
if expression statements elseif expression statements else statements end
-
Octave 中条件不需要用括号 () 括起来 (当然使用括号会让程序更加明
了), 而且 statments 程序块不需要用大括号*{ }* 括起来。
-
Octave 中需要用 end 命令来标识 if 语句的 结束。。在 Octave 中,if…end 和 if…endif 都是合法的. 使用 end 可以让 Octave 的文件与 Matlab 文件 兼容
-
像 if 这样的控制语句,通常都使用在 Octave 的脚本之中,同样也能在命令行中使用
-
Octave 缩进没有影响
>> a=1;b=2; >> if a>b c=5 else c=6 end c = 6 >>
1.2 switch 语句
-
若需要多重 if/elseif 语句来实现从多重选项中选择时,使用 switch 语句更好
-
语句格式为:
switch x case x1 statements case x2 statements otherwise statements end
- 在 switch 语句中,x 的值依次与 case 中的值比较,如果找到与之相等的值,相应的 statements 将被执行。
- 注意到在 Octave 中 switch 语句不像 C++ 那样需要 break 语句——Octave 中找到匹配的选项,执行 statements 中的语句并退出 swith 语句。若是没有匹配的项,otherwise 中的语句被执行。
>> a=1; >> switch a case 0 disp('a is zero') case 1 disp('a is one') otherwise disp('a is not a binary digit') end a is one >>
1.3 for 语句
-
在 Octave 中你应该多使 用向量的计算而不是 for 循环,因为通常 for 循环会慢很多。然而有的时候 for 循环是不可避免的。
-
for 循环语句的语法:
for variable=vector statements end
- 其中 vector 中包含遍历的数值。通常,该向量用冒号表达式 写出
>> for n=1:5 sum=0; sum=sum+n; end >> disp(sum) 5 >>
- 注意:到在 for 循环中加入分号能避免 octave 在每次执行循环体时输出 sum的值
1.4 while 语句
-
如果你不知道需要执行多少次循环,而是知道当某条件满足时结束循环。Octave 中的 while 语句能实 现该功能
-
while 语句的基本格式
while expression statements end
二、简单的画图
-
Octave 通过调用另一个开源软件 GNUPLOT来实现非常丰富的画图功能
-
最基本的画图命令是
plot(x,y)
, 其中 x,y 分别为横轴和纵轴数据 -
使用plot()后程序会打开一个新的窗口显示该图片
2.1 plot()函数详细介绍
-
在 Octave 中你可以在 plot 命令中加入更多的选项拉指定图形线条的样式
-
例如,使用红色和圆圈来画出之前的图片,输入
plot(angles,y,'ro');
其中最后一个参数是指定线条样式的字符串
-
-
通过 title,xlabel 和 ylabel 命名为该图片添加标题和 xy 轴名称:
title('Graph of y=sin(x)') ;
xlabel('Angle');
ylabel('Value')
-
grid on
命令为图片添加网格线: -
plot命令中的颜色和样式选项(也可通过 help plot 查看)
2.2 画多条曲线
-
一幅图上可以画多条曲线。通过在 plot 命令中按照次序给出每条曲线的 x 和 y 向量
-
legend ()
命令为该图片添加相应的图例 -
可以通过使用 hold 命令来实现。使用该命令,我们可以实现在同一幅图上呈现由两个(多个) plot 命令绘制的线条
hold on
,继续往图上绘制线条hold off
,将会关闭该功能。
2.3 绘制多幅图像
-
多幅图片可以通过 figure 命令来控制,在命令行中输入
figure
那么下一个 plot 命令将会在新创建的窗口中绘制, -
如果你想返回到之前的图片,输入
figure(1)
2.4 保存和打印图片
-
Octave没有提供鼠标或者快捷键操作来实现图片的打印操作。
-
Octave 提供了 print 命令 来将图片打印到默认的打印机上。help print 命令给出所有的 print 命令提供的选项
-
print('graph1.eps','-deps')
来保存当前图像到一个 eps 文件或者 -
print('graph1.png','-dpng')
将当前图像保存为一个 png 文件。
三、画图进阶
- Octave 的画图功能不仅仅是画简单的二维直角坐标系下的曲线。通过调用 GNUPLOT,它可以画出 条形图,3D 表面,等高线图和极坐标图等等
3.1 画子图
-
要在同一个窗口中创建多幅图片通过
subplot
命令实现。该命令能够将窗口分离成一系列的子窗口 -
其基本语法为
subplot(row,columns,select)
- 其中 subplot 参数指定当前绘图在子窗口中的序列
- 子窗口的序号按照从上到下,从左到右的次序递增
3.2 3D 画图
-
Octave 同样提供了多样的 3D 数据可视化工具,最简单的 3D 绘图实现是
plot3
命令 -
该命令通过接受输入的 x,y 和 z 轴的数据,绘制出点或者线
-
在 3D 绘图中 xlabel 和 ylabel 照常使用,而新的 zlabel 命令可以为 z 轴命名。 而且在绘制 3D 图时,表线条的样式的选项也可以使用。
-
调整视角:
-
如果你想改变 3D 绘图结果的视角,最简单的方法就是使用鼠标(使用鼠标点击并拖拽可以旋转图像, 具体操作选项见表 )。
-
而 Octave 的 view 命令能够定量的确定一个特定的视角 (使用 help view 获得更多 帮助信息)
鼠标动作 操作 LMB+ motion +LMB + motion 转移视角 转移坐标轴 快捷键 操作 → 右旋 ↑ 上旋 ← 左旋 ↓ 下旋
-
3.3 3D画图——绘制曲面
-
定义一个二元函数 f(x, y),该函数的曲面可以用一系列的 Octave 的工具画出。首先,要初始化一个网格点,用 meshgird 命令实现:
-
如绘制:f(x, y) = (x − 3)^2 − (y − 2)^2
四、其他命令
4.1 载入和保存数据
-
当你退出 Octave 的时候,你将丢失你所创建的变量。如果你需要在工作的中途退出 Octave,那么你可 以保存当前会话的数据并在之后重新载入它
-
save anyname
将整个工作空间上的变量存储到当前目录下一个名为anyname.mat 的文件中 (注意.mat 是 octave 自动添加的)。这样你可以退出 Octave,之后重新启动 Octave 程序,通过输入load anyname
将重新载入之前保存的命名空间,并从你中断的地方重新开始工作
-
Octave 同样能从文件中导入数据
-
可以载入或者保存特定的变 量。格式为 :
save filename var1 var2 ...
- 例如,如果你想存储 deg 变量,那么你可以输入
save degconv deg
这样将 deg 变量存储于名为 degconv.mat 的文件中,你可以通过以下命令重新载入变量load degconv
- 例如,如果你想存储 deg 变量,那么你可以输入
4.2 重复之前的命令
- Octave 会记录你在一个会话中输入过的命令,而你可以通过方向键中的 ↓ 和 ↑ 来查看之前输入的命令 (最近的命令排列在最前)。如果你想重复其中的一个命令,你只需要用方向键找到该命令并按回车。
- 一旦一个已执行命令被重新调出来,你可以在再次执行它之前编辑它。你可以用 ← 和 → 移动光标并进 行相应的编辑操作
4.4 获得帮助
-
如果你不了解某个 Octave 命令的功能或者是你需要找一个特定的函数,可以使用 help 命令查看帮助
help commandname
-
若不知道具体需要的函数名称,可通过命令行 输入
help -i
,Octave 将给出一个其帮助的主题列表 -
关于某个帮助主题的细节可以通过将光标移动到该主题并回车获得。你可以通过 Up,Next, Previous 等快捷键浏览相应的主题。输入‘q’来退出帮助系统并返回到 octave 命令行
4.5 取消一个命令
Ctrl-C
:中止程序并返回到命令提示界面
如果需要Octave使用教程详细文档,可以直接私信我,免费分享