Bootstrap

08.Octave 语言的使用-控制语句、绘制图线和其他命令

一、控制语句

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

4.2 重复之前的命令

  • Octave 会记录你在一个会话中输入过的命令,而你可以通过方向键中的 来查看之前输入的命令 (最近的命令排列在最前)。如果你想重复其中的一个命令,你只需要用方向键找到该命令并按回车。
  • 一旦一个已执行命令被重新调出来,你可以在再次执行它之前编辑它。你可以用 移动光标并进 行相应的编辑操作

4.4 获得帮助

  • 如果你不了解某个 Octave 命令的功能或者是你需要找一个特定的函数,可以使用 help 命令查看帮助

    help commandname

  • 若不知道具体需要的函数名称,可通过命令行 输入 help -i,Octave 将给出一个其帮助的主题列表

  • 关于某个帮助主题的细节可以通过将光标移动到该主题并回车获得。你可以通过 Up,Next, Previous 等快捷键浏览相应的主题。输入‘q’来退出帮助系统并返回到 octave 命令行

4.5 取消一个命令

  • Ctrl-C :中止程序并返回到命令提示界面

如果需要Octave使用教程详细文档,可以直接私信我,免费分享

;