Octave 入门教程:绘图

  • Post author:
  • Post category:其他



Octave 入门教程目录,请点击:


https://blog.csdn.net/benzhujie1245com/article/details/83146777


本内容将介绍在 Octave 中绘制图形。



一、绘制基本图形



1.1 简单绘图

在 Octave 中绘制函数图形的步骤如下:

  • 先定义变量



    x

    x






    x





    ,指定变量



    x

    x






    x





    值的取值范围;

  • 然后定义函数



    y

    =

    f

    (

    x

    )

    y = f(x)






    y




    =








    f


    (


    x


    )





  • 最后调用 plot 命令,如 plot(x, y)。

例子:绘制函数



y

=

x

2

y = x^2






y




=









x










2












。在 Octave 中输入以下代码:

x1 = [-100: 20: 100];  % x1 的取值范围是(-100,100),增量为 20
y1 = x1.^2;            % y1 = x1*x1
plot(x1, y1);
hold on;
x2 = [-100: 5: 100];   % x2 的取值范围是(-100,100),增量为 5
y2 = x2.^2 + 2000;     % y2 = x2*x2 + 2000
plot(x2, y2);

运行以上代码,将绘制出如下图形:

在这里插入图片描述

我们可以看到增量为 5 的



x

2

x2






x


2





绘制出来的图形比 增量为 20 为



x

1

x1






x


1





的图形更加平滑。

所以减少增量,能够绘制出更加平滑的图形



上面我们用到了

hold on

,它的作用是:将新图像画在旧图像上面,而不是覆盖旧图像。如果将上面代码中的

hold on

删除,最终只会显示



y

2

=

(

x

2

)

2

+

2000

y2 = (x2)^2+2000






y


2




=








(


x


2



)










2











+








2


0


0


0





的图形。



1.2 在图形中添加标题,标签,网格线

我们可以在图形中添加标题,为 x 轴和 y 轴添加标签,显示网格线等。相关命令说明如下:


  • xlabel



    ylabel

    命令添加 x 轴和 y 轴的标签。
  • 标题命令(

    title

    )添加标题。
  • 网格命令(

    grid on

    )显示网格线。
  • 轴等于命令(

    axis equal

    )允许生成与同等规模因素和空间两个坐标轴上的积点。
  • 轴方形命令生成一个正方形的积点。

在 Octave 中输入以下代码:

x = [0: 0.01: 10];
y = sin(x);
plot(x, y);
xlabel('x');             % 添加 x 轴标签
ylabel('Sin(x)');        % 添加 y 轴标签
title('Sin(x) Graph');   % 添加标题
grid on;                 % 显示网格线
axis equal;

运行以上代码,将绘制出如下图形:

在这里插入图片描述



1.3 在同一张图中绘制多个函数

在 Octave 中输入以下代码:

x = [0: 0.01: 10];
y = sin(x);
h = cos(x);
plot(x, y, x, h, '.-');
legend('Sin(x)', 'Cos(x)');

运行以上代码,将绘制出如下图形:

在这里插入图片描述

上面我们用到了

legend

,它的作用是:在图形中添加图例。如果将上面代码中的

legend

语句删除,上面图形中右上角将不会显示图例。



1.4 在图形上的颜色设置

Octave 提供的基本颜色选项如下:

Color Code Color Code
White w Cyan c
Black k Green g
Blue b Magenta m
Red r Yellow y

在 Octave 中输入以下代码:

x = [0: 0.01: 10];
y = sin(x);
h = cos(x);
plot(x, y, 'r', x, h, 'g'); % 使用红色绘制 y = sin(x) 的图形,使用绿色绘制 y = cos(x) 的图形
legend('Sin(x)', 'Cos(x)');

运行以上代码,将绘制出如下图形:

在这里插入图片描述



1.5 设置轴刻度

通过

axis

命令可以设置轴的刻度,即设置 x 和 y 轴的最小值和最大值,使用方式如下:

axis([xmin xmax ymin ymax])

在 Octave 中输入以下代码:

x = [0: 0.01: 10];
y = exp(-x).*sin(2*x+3);
plot(x, y);
axis([0 10 -1 1]);

运行以上代码,将绘制出如下图形:

在这里插入图片描述



1.6 生成子图

使用

subplot

命令创建子图,使用方式如下:

subplot(m, n, p)

其中,m 和 n 为积阵列的行数和列数(即将图像分割成 m*n 个格子),p 表示把当前图形绘制在哪个子图中(即使用第几个格子绘制下面的图形)。

subplot

命令建立的每个图形都可以有其自己的特点。

在 Octave 中输入以下代码:

x = [0: 0.01: 10];
y = sin(x);
% 在第 1 个格子中显示 y=sin(x) 的图形
subplot(1, 2, 1);
plot(x, y, 'b'), xlabel('x'), ylabel('sin(x)');
h = cos(x);
% 在第 2 个格子中显示 y=cos(x) 的图形
subplot(1, 2, 2);
plot(x, h, 'r'), xlabel('x'), ylabel('cos(x)');

运行以上代码,将绘制出如下图形:

在这里插入图片描述



1.7 其他一些命令

命令 说明
figure 给图形标号
print -dpng ‘myPlot.png’ 保存图形,保存图形到 ‘myPlot.png’ 文件中,保存目录为当前工作路径。
close 关闭图形
clf 清除图形



二、绘制二维条形图

使用

bar

命令绘制二维条形图。

在 Octave 中输入以下代码:

x = [1:10];
y = [75, 90, 87, 68, 50, 88, 78, 99, 60, 66];
bar(x, y), xlabel('Student'), ylabel('Score'), title('First Sem');

运行以上代码,将绘制出如下图形:

在这里插入图片描述



三、绘制等高线图

生成的等高线图,显示了对于一个给定的功能的轮廓线



g

=

f

(

x

,

y

)

g=f(x,y)






g




=








f


(


x


,




y


)





。这个函数有两个变量,因此,我们将生成两个独立的变量,即两个数据集



x

x






x









y

y






y





,通过调用

meshgrid

命令实现。


meshgrid

命令是用于产生一个矩阵的元素,赋予



x

x






x









y

y






y





的范围内进行了在每一种情况下的增量同规格一起。

例子:绘制



g

=

x

2

+

y

2

g=x^2+y^2






g




=









x










2











+









y










2












的等高线,在 Octave 中输入以下代码:

[x, y] = meshgrid(-5: 0.1: 5, -3: 0.1: 3); %
g = x.^2 + y.^2;           % 函数 g
[C, h] = contour(x, y, g); % 绘制等高线图
set(h, 'ShowText', 'on', 'TextStep', get(h, 'LevelStep')*2);

运行以上代码,将绘制出如下图形:

在这里插入图片描述



四、绘制三维图

三维图显示有两个自变量的函数的表面,



g

=

f

(

x

,

y

)

g=f(x,y)






g




=








f


(


x


,




y


)







首先使用

meshgrid

命令创建一组



(

X

,

Y

)

(X,Y)






(


X


,




Y


)





;然后,设置输入函数;最后使用

surf

命令绘制图形。

在 Octave 中输入以下代码:

[x, y] = meshgrid(-2: .2: 2);
g = x .* exp(-x.^2 - y.^2);
surf(x, y, g);  % 绘制三维图

运行以上代码,将绘制出如下图形:

在这里插入图片描述


参考:


[1]

https://www.w3cschool.cn/matlab/


[2] 吴恩达《机器学习》课程



版权声明:本文为benzhujie1245com原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。