调整 Octave 基本操作 内容.
Signed-off-by: lion.chan <cy187lion@sina.com>
This commit is contained in:
parent
7f4dcd4553
commit
0ce74a71e7
@ -4,7 +4,7 @@ title: "Octave 基本操作"
|
||||
subtitle: ""
|
||||
description: "对 Octave 的常用计算功能进行说明。"
|
||||
excerpt: "描述 Octave 的功能,并对其使用做出基本指导。"
|
||||
date: 2022-09-06 09:03:00
|
||||
date: 2022-09-07 10:25:00
|
||||
author: "Rick Chan"
|
||||
tags: ["Applications", "Octave"]
|
||||
categories: ["Software"]
|
||||
@ -23,6 +23,12 @@ published: true
|
||||
- [5.2. 函数](#52-函数)
|
||||
- [6. 加载和保存数据](#6-加载和保存数据)
|
||||
- [7. 绘制图形](#7-绘制图形)
|
||||
- [7.1. 基本绘图](#71-基本绘图)
|
||||
- [7.2. 为图像加标签](#72-为图像加标签)
|
||||
- [7.3. 单窗口绘制多个图像](#73-单窗口绘制多个图像)
|
||||
- [7.4. 在多个窗口中绘图](#74-在多个窗口中绘图)
|
||||
- [7.5. 重绘图像](#75-重绘图像)
|
||||
- [7.6. 将绘图保存为图片](#76-将绘图保存为图片)
|
||||
- [8. 矢量](#8-矢量)
|
||||
- [9. 工具包](#9-工具包)
|
||||
- [9.1. 安装工具包包](#91-安装工具包包)
|
||||
@ -150,13 +156,14 @@ printf 函数沿用了 C 语言的语法格式,所以如果你有学习过 C
|
||||
除了使用 printf 外,利用 format long、format short 也可以指定打印的精度,在 Octave 中,short 是默认的精度:
|
||||
|
||||
```m
|
||||
octave:32> format long
|
||||
octave:33> a
|
||||
a = 3.14159265358979
|
||||
|
||||
octave:34> format short
|
||||
octave:35> a
|
||||
a = 3.1416
|
||||
>> pi
|
||||
ans = 3.1416
|
||||
>> format long
|
||||
>> pi
|
||||
ans = 3.141592653589793
|
||||
>> format short
|
||||
>> pi
|
||||
ans = 3.1416
|
||||
```
|
||||
|
||||
## 4. 向量和矩阵
|
||||
@ -302,7 +309,7 @@ V =
|
||||
>> length(V)
|
||||
ans = 4
|
||||
|
||||
octave:67> length(A)
|
||||
>> length(A)
|
||||
ans = 3
|
||||
```
|
||||
|
||||
@ -310,6 +317,14 @@ ans = 3
|
||||
|
||||
我们还是以上一小节定义的矩阵 A 为例。
|
||||
|
||||
常数与矩阵相乘:
|
||||
|
||||
```m
|
||||
>> oa=e.^A
|
||||
```
|
||||
|
||||
生成的 oa 也为一个矩阵,其中每个元素的值为 e 的 A(x) 次幂。
|
||||
|
||||
获取矩阵指定行指定列的元素,注意这里的行、列都是从 1 开始的,比如获取矩阵 A 的第 3 行第 2 列元素:
|
||||
|
||||
```m
|
||||
@ -489,19 +504,19 @@ ans =
|
||||
除此以外,Octave 中内置的一些函数也是针对每个元素做运算的,比如对数运算、指数运算和绝对值运算等:
|
||||
|
||||
```m
|
||||
octave:50> log([1; 2; 3])
|
||||
>> log([1; 2; 3])
|
||||
ans =
|
||||
0.00000
|
||||
0.69315
|
||||
1.09861
|
||||
|
||||
octave:51> exp([1; 2; 3])
|
||||
>> exp([1; 2; 3])
|
||||
ans =
|
||||
2.7183
|
||||
7.3891
|
||||
20.0855
|
||||
|
||||
octave:53> abs([1; -2; 3])
|
||||
>> abs([1; -2; 3])
|
||||
ans =
|
||||
1
|
||||
2
|
||||
@ -788,7 +803,7 @@ featuresX =
|
||||
456 2
|
||||
789 3
|
||||
|
||||
octave:15> pricesY
|
||||
>> pricesY
|
||||
pricesY =
|
||||
11
|
||||
22
|
||||
@ -828,13 +843,11 @@ featuresX.dat hello.mat pricesY.dat
|
||||
|
||||
## 7. 绘制图形
|
||||
|
||||
在本篇文章的最后一节,我们来简单的说下 Octave 的绘图能力。
|
||||
### 7.1. 基本绘图
|
||||
|
||||
不像其他语言那般繁琐,Octave 中绘图的接口设计的非常简洁和直观,让你非常容易上手。
|
||||
以绘制一个 sin 函数曲线和一个 cos 函数曲线为例,来说明如何在 Octave 中绘图。
|
||||
|
||||
我们以绘制一个 sin 函数曲线和一个 cos 函数曲线为例,来说明如何在 Octave 中绘图。
|
||||
|
||||
首先,我们还是先来定义数据
|
||||
首先,先来定义数据:
|
||||
|
||||
```m
|
||||
>> t = [0:0.01:0.98];
|
||||
@ -850,20 +863,22 @@ featuresX.dat hello.mat pricesY.dat
|
||||
|
||||
之后会立即在一个新窗口生成我们想要的图形
|
||||
|
||||
sin 函数
|
||||

|
||||
|
||||
接下来我们继续在这个图像上绘制 cos 函数。这时需要用到 hold on 命令,它的作用是将新图像画在旧图像上面,而不是覆盖旧图像。
|
||||
接下来继续在这个图像上绘制 cos 函数,此时需要用到 hold on 命令,它的作用是将新图像画在旧图像上面,而不是覆盖旧图像。
|
||||
|
||||
为了区分 sin 函数,我们将 cos 函数的曲线用红色标识:
|
||||
|
||||
```m
|
||||
octave:10> hold on;
|
||||
octave:11> plot(t,y2, 'r');
|
||||
>> hold on;
|
||||
>> plot(t, y2, 'r');
|
||||
```
|
||||
|
||||
这个时候,你看到的图形应该是这个样子的:
|
||||
|
||||
sin 和 cos
|
||||

|
||||
|
||||
## 7.2. 为图像加标签
|
||||
|
||||
图形有了,最后一步就是标明横轴和纵轴分别代表的含义,再给图形起一个有意义的名字
|
||||
|
||||
@ -876,33 +891,66 @@ sin 和 cos
|
||||
|
||||
最终,这个图形是这样式的:
|
||||
|
||||
sin and cos
|
||||

|
||||
|
||||
如果你愿意,还可以将其作为一个图片保存下来:
|
||||
以上动作也可以一次完成:
|
||||
|
||||
```m
|
||||
octave:16> print -dpng 'sin_cos.png'
|
||||
>> plot(t, y1, t, y2, 'r'), xlabel('time'), ylabel('value'), legend('sin', 'cos'), title('sin and cos function');
|
||||
```
|
||||
|
||||
### 7.3. 单窗口绘制多个图像
|
||||
|
||||
如果需要在同一窗口中时绘制多个图像,则可以使用 subplot() 函数:
|
||||
|
||||
```m
|
||||
>> subplot(1, 3, 1); % 这样做是把窗口分成一个 1*2 的格子,使用第一个格子;
|
||||
>> plot(t, y1);
|
||||
>> subplot(1, 3, 2); % 使用第二个格子;
|
||||
>> plot(t, y2, 'r');
|
||||
>> axis([0.5 1 -1 1]) % 调整右边图像的 x,y 坐标的范围。
|
||||
>> subplot(1, 3, 3); % 使用第三个格子;
|
||||
>> A = magic(5);
|
||||
>> imagesc(A); % 生成一个 5*5 的色块
|
||||
```
|
||||
|
||||
结果如下:
|
||||
|
||||

|
||||
|
||||
### 7.4. 在多个窗口中绘图
|
||||
|
||||
如果需要在多个窗口中绘图,则可以使用 figure() 方法:
|
||||
|
||||
```m
|
||||
>> figure(1);plot(t, y1);
|
||||
>> figure(2);plot(t, y2);
|
||||
```
|
||||
|
||||
### 7.5. 重绘图像
|
||||
|
||||
在绘图中,如果你反悔了,想重新绘图,怎么办呢?也很简单,只要输入 clf 命令,Octave 会将绘图框中的图形全部清空。
|
||||
|
||||
不论何时,输入 close 命令,Octave 会关闭该绘图窗口。
|
||||
|
||||
```m
|
||||
>> figure(1);plot(t,y1);
|
||||
>> figure(2);plot(t,y2);
|
||||
>> clf;plot(t, y2, 'g');
|
||||
>> close
|
||||
```
|
||||
|
||||
这样就可以分别用两个窗口显示图像。
|
||||
### 7.6. 将绘图保存为图片
|
||||
|
||||
如果你愿意,还可以将其作为一个图片保存下来:
|
||||
|
||||
```m
|
||||
>> subplot(1,2,1); %这样做是把窗口分成一个 1*2 的格子,使用第一个格子;
|
||||
>> plot(t,y1);
|
||||
>> subplot(1,2,2);
|
||||
>> plot(t,y2);
|
||||
>> axis(0.5 1 -1 1) %调整右边图像的 x,y 坐标的范围。
|
||||
>> A = magic(5);
|
||||
>> imagesc(A); %生成一个 5*5 的色块
|
||||
>> print -dpng 'sin_cos.png'
|
||||
```
|
||||
|
||||
该图像将被保存在 Octave 的当前执行路径下,可以使用 pwd 命令查看该路径:
|
||||
|
||||
```m
|
||||
>> pwd
|
||||
ans = C:\Users\Administrator
|
||||
```
|
||||
|
||||
## 8. 矢量
|
||||
|
BIN
Software/Applications/Octave/img/Octave_基本操作/001.png
Normal file
BIN
Software/Applications/Octave/img/Octave_基本操作/001.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 41 KiB |
BIN
Software/Applications/Octave/img/Octave_基本操作/002.png
Normal file
BIN
Software/Applications/Octave/img/Octave_基本操作/002.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 63 KiB |
BIN
Software/Applications/Octave/img/Octave_基本操作/003.png
Normal file
BIN
Software/Applications/Octave/img/Octave_基本操作/003.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 65 KiB |
BIN
Software/Applications/Octave/img/Octave_基本操作/004.png
Normal file
BIN
Software/Applications/Octave/img/Octave_基本操作/004.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 58 KiB |
Loading…
x
Reference in New Issue
Block a user