Octave 入门教程目录,请点击: https://blog.csdn.net/benzhujie1245com/article/details/83146777
本内容将介绍在 Octave 中绘制图形。
在 Octave 中绘制函数图形的步骤如下:
例子:绘制函数 y = x 2 y = x^2 y=x2。在 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 x2 绘制出来的图形比 增量为 20 为 x 1 x1 x1 的图形更加平滑。所以减少增量,能够绘制出更加平滑的图形。
上面我们用到了 hold on
,它的作用是:将新图像画在旧图像上面,而不是覆盖旧图像。如果将上面代码中的 hold on
删除,最终只会显示 y 2 = ( x 2 ) 2 + 2000 y2 = (x2)^2+2000 y2=(x2)2+2000 的图形。
我们可以在图形中添加标题,为 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;
在 Octave 中输入以下代码:
x = [0: 0.01: 10];
y = sin(x);
h = cos(x);
plot(x, y, x, h, '.-');
legend('Sin(x)', 'Cos(x)');
运行以上代码,将绘制出如下图形:
上面我们用到了 legend
,它的作用是:在图形中添加图例。如果将上面代码中的 legend
语句删除,上面图形中右上角将不会显示图例。
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)');
通过 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]);
使用 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)');
命令 | 说明 |
---|---|
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=x2+y2 的等高线,在 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] 吴恩达《机器学习》课程