目录
1. 变量的定义
在 Octave 中,变量的定义非常直观,只需要使用赋值符号 =
即可,比如:
x = true; % 布尔
name = 'Alice'; % 字符
temperature = 36.5; % 浮点
这三条语句创建了三个变量,一个布尔变量 x
,一个字符串变量 name
,以及一个浮点数变量 temperature
。注意 GNU Octave 不需要像 C++ 一样事先声明变量的类型。行末的分号 ";"
用于抑制窗口输出;若省略,则会在命令窗口输出赋值的结果。
2. 变量命名规则
GNU Octave 变量命名遵循以下基本规则:
必须以字母开头(a-z,A-Z),后续可以包含数字、下划线(
_
)。区分大小写,例如
Value
和value
是不同的变量。不建议使用 GNU Octave 的关键字(如
if
,end
,while
等)作为变量名。
比如:
1a = 5; % 不符合命名规则,会报 syntax error
my_var = 123;
My_Var = 456;
My_Var 与 my_var 变量的定义没有问题,但它们是不同的变量。
3. 常见数据类型
3.1. 数值类型(Numeric)
包括整数和浮点数:
a = 42; % 整数
b = 3.14; % 浮点数
注意:在 GNU Octave 中,所有数值默认都是浮点型(即使写的是整数形式),并且在内部默认以双精度浮点数(double)存储。
3.2. 布尔值(Logical)
布尔值用于逻辑判断,只有两个可能值:true
和 false
(或 1 和 0)。
is_valid = true;
is_ready = false;
3.3. 字符与字符串
字符串可以使用单引号 '...'
定义:
greeting = 'Hello, Octave!';
单个字符其实也是一个长度为 1 的字符串:
letter = 'A';
注意:Octave 也支持双引号("..."
)创建字符串,但单引号是更常见的写法。GNU Octave 提供一些常用的字符串操作函数,比如:
strcat(str1, str2) % 字符串拼接
length(str1) % 获取长度
在 GNU Octave 命令行中跑几个例子,如下:
3.4. 向量 (Vector)
在 GNU Octave 中,向量是一维数组,可以是:
行向量(1 × n)
列向量(n × 1)
GNU Octave 可以用方括号 [] 或者冒号 :运算符定义向量,比如:
v1 = [1, 2, 3]; % 行向量
v2 = [1; 2; 3]; % 列向量
v3 = 1:5; % [1 2 3 4 5]
v4 = 0:0.5:2; % [0 0.5 1.0 1.5 2.0]
向量元素的索引,访问与修改使用圆括号 (),示例代码如下:
v = [10, 20, 30];
v(2) % 返回 20
v(end) % 返回最后一个元素(30)
v(1) = 99; % 修改第一个元素
这里顺便总结一下,向量的其它常用运算类型,如下表:
运算类型 | 示例 | 说明 |
---|---|---|
加法 | v1 + v2 |
元素对应相加 |
数乘 | 2 * v |
每个元素乘以 2 |
点乘 | v1 .* v2 |
元素逐项相乘(Hadamard) |
转置 | v' |
行向量转列向量 |
内积 | dot(v1, v2) |
点积(数量积) |
向量长度 | length(v) |
返回元素个数 |
归一化 | v / norm(v) |
转为单位向量 |
3.5. 矩阵 (Matrix)
在 GNU Octave 中,矩阵(Matrix)是一个二维数值数组,既可以表示数学矩阵,也可以视作“二维向量”。GNU Octave 将所有数值变量都视为矩阵,哪怕它是标量或向量。GNU Octave 有很多种创建矩阵的方法,代码如下:
% 创建一个 2×2 矩阵
A = [1, 2; 3, 4];
% 内置函数创建诉组
zeros(3, 4) % 3×4 全零矩阵
ones(2, 2) % 2×2 全 1 矩阵
eye(3) % 3×3 单位矩阵
rand(2, 3) % 2×3 随机矩阵(0~1)
% 利用 reshape 函数
A = reshape(1:6, 2, 3); % 按列填充,2 行 3 列
矩阵常用的运算类型有很多和向量重合,但又不尽相同:
运算类型 | 示例 | 说明 |
---|---|---|
矩阵加法 | A + B |
对应元素相加 |
矩阵乘法 | A * B |
线性代数中的矩阵乘法 |
元素乘法 | A .* B |
对应元素相乘(Hadamard积) |
转置 | A' |
共轭转置(复数时) |
非共轭转置 | A.' |
仅交换行列 |
逆矩阵 | inv(A) |
A 的逆矩阵(若可逆) |
行列式 | det(A) |
求矩阵的行列式 |
特征值 | eig(A) |
求特征值 |
求解线性方程 | x = A \ b |
解 Ax = b |
4. 命令窗口中的实用操作
实用操作有很多,这里直接给出几个最长用的函数:
class(x) % 查看变量类型
clear(x) % 删除变量
disp(x) % 查看变量值
isnumeric(x) % 是否是数值型
ischar(x) % 是否是字符
islogical(x) % 是否是布尔值
在 GNU Octave 的命令行中举几个例子:
5. 总结
本文介绍了 GNU Octave 中最基本的变量定义方式与数据类型。初学者可以从数值、布尔值、字符串开始,然后过度到向量与矩阵的学习,逐步熟悉 Octave 的数据类型和基本语法。