- Octave相关资源
- 官网地址
- 下载地址
- 相关语法
- 运算符
- 变量
- 函数
- 系统命令
- 数据操作
- 数据加载
- 数据保存
- 元素操作
- 元素计算
- 绘图和可视化工具
- 绘图实例
- 常用函数
- 控制语句
Octave相关资源
官网地址
官方地址
下载地址
下载地址
相关语法
运算符
- %:注释
- ~=:表示不等于
- xor:异或
- 其他逻辑运算符类似C语言
变量
- 字符串:c = ‘hello world’
- 布尔值:c = (3>=1)
- 整数:c = 3
- 圆周率:pi
函数
-
disp():打印
-
sprintf(‘decimals: %0.2f’, a):格式化字符串
-
format的使用可以让数字等显示出具体的位数,具体看format的参数
-
矩阵建立以空格和分号分割,分号的作用相当于换行
-
向量的循环产生:v = 1:1:4,以冒号分割,表示从1开始,步长是1,最后达到4
-
等差向量产生:例如产生1到6:v=1:6
-
产生全是1的特定矩阵,ones(2,3)表示生成2*3的全部是1的矩阵
-
zeros(10,1):生成10行一列的全为0的向量
-
上述生成全是特定某个数的,只需要做乘法运算就行了,例如生成全是2的矩阵:2*ones(2,3)
-
rand(1,3):随机生成1行3列的随机数字的矩阵,并且数字都介于0到1之间
-
randn(1,3):随机生成符合高斯分布的数值(正态分布值),randn(1,3)表示随机生成3个数字,也就是1行3列的三个数,这几个数符合高斯分布,也就是他们的均值是0或者方差为1
-
sqrt(4):开根
-
hist(矩阵):绘制矩阵的直方图,例如hist(randn(1,10000)),并且可以通过添加参数绘制更多的竖条hist(randn(1,10000), 50),通过第二个参数设置竖条的数量(前提是你有那么多个量)
- eye(4):单位矩阵生成,eye(4)表示生成一个4*4的单位矩阵
- help 函数名:查看那个帮助
- size(矩阵):返回矩阵的尺寸,返回值是一个行向量,其格式为:行数 列数
- size(矩阵, 1):获取矩阵的维度,也就是行数
- size(矩阵, 2):矩阵的列数
- length(矩阵):获取最大维度的大小,例如23的矩阵,最大的是列数,而矩阵42,最大的是行数,所以返回4
系统命令
- pwd:查看当前路径
- cd 路径:目录切换
- ls:列表
- load 文件名或者是load(文件名):加载具体的文件,如load formatX.dat
- who:显示Octave中当前存储在内存所有的变量名,包括我们自己创建的变量名
- whos:显示更详细的变量信息
- clear 变量名:清除变量,如何不添加变量名,那么就清除全部
数据操作
数据加载
例如我们通过load priceY.dat添加了一个训练集,其中训练集里边是一个一列的数据
被加载到Octave中以后对应的变量名是文件名,也就是priceY,那么拿到priceY前10个元素并赋给v,进行的操作是:v = priceY(1:10),其中如果文件按列排布,那只会拿到第一列的前10个,如果按行排布,那就会拿到一行的前10个,并且只针对列向量和行向量,其他可能报错
数据保存
通过save 文件名 变量名
,例如:save hello.mat v,表示将v存储到文件hello.mat中。下一次通过load hello.mat,就会重新拿到数据,并且数据依旧存储在变量v中
保存到mat后缀的文件中,是将数据转成具体的二进制形式,这样的话变量v越大,压缩的程度越大
同样可以保存成其他格式,例如txt:save hello.txt v -ascii,表示保存为hello.txt并且是ascii编码方式
元素操作
-
拿到某个元素:a(1,2):其中a是矩阵对应的向量名,通过a(1,2)这个索引拿到第一行第二列的元素
-
拿到某一列或者某一行:只需要填入对应的行数或者列数,然后另一个设置为:,例如获取第二行:a(2, 😃
-
拿到多行多列或者多个元素:a([1 3],[1 2]):表示拿1和3行的各自的1和2列元素。a([1 3],1):1和3行的1列元素。a([1 3]😅:1和3行的整行元素
-
整列修改:上述a(:, 2)表示拿到第2列的数,但是可以通过a(:, 2)赋值新的列去整列修改,并返回新矩阵
-
快捷添加列:可以直接整体套入
-
将矩阵的所有元素输出整合到一列上:a(😃,该方法按列进行打印的,如下图
-
快速整合矩阵:A = [B C]或者A=[B;C],其中B和C是两个矩阵
元素计算
-
A*B:矩阵相乘
-
A .* C:通过 .* 运算符实现矩阵A和C中点对点的相乘,就是对应位置的数相乘,所以两个矩阵必须相同结构
-
A .^ 2:会对矩阵A中每个元素都进行平方,后边的数可以是任意的实数
-
1 ./ A:表示获得矩阵A对应的导数,数字可以是任意的实数
-
log(A):对A中所有元素都进行对数运算
-
exp(A):表示对A中所有元素进行以e为底的对数运算
-
abs(A):所有元素取绝对值
-
-A:A中元素全部变成负数
-
A+1:可以对A中每个元素都加1
-
A’:求A的转置
-
max(A):求A中值最大的元素,如果A不是向量,那么就返回每一列最大的元素
-
[val index]=max(A):返回的元素中第一个参数是元素的值,第二个参数是元素的索引,对于向量而言可以拿到对应的的值以及下标,但是对于非向量而言,就是拿到每一列的最大值,索引是对应的最大值艘所在的行
-
A < 3:表示A中每个元素和3比较,返回一个矩阵,1表示成立,0表示不成立
-
find(A<3):表示在A中找到符合条件的元素并返回它的索引,对于非向量而言,他会自动从第一行第一个开始按第1列…第2列…第n列的顺序返回索引,如下a将会被转换成1 8 1 9 9 2,符合条件的就是在1 3 6这三个位置的数
-
[r, c] = find(A<3):可以找到具体的行列号,r是行相关的向量,c是列相关的向量,如下返回值中,对应位置就是元素存在于对应的行列号
-
magic(3):生成一个幻方矩阵,也就是一个对角线、行、列上的数相加都等于同一个数的矩阵,其中传入的数字表示维度,3也就是表示3*3
-
sum(A):求A中所有元素的值的总和,如果不是向量,默认就会返回每一列的总和的行向量
-
sum(a,2):计算每一行的元素的总和
-
prod(A):表示A元素中所有元素的乘积
-
floor(A):表示A中的值向下取整
-
ceil(A):表示A中的值向上取整
-
max(A,B):其中A、B是对应的矩阵,max(A,B)返回了由A,B矩阵中对应位置的最大的元素组成
-
max(A,[], 1):最后一个数值如果是1,那么就拿到每一列的最大值,如果最后一行是2,那么就拿到每一列的最大值
-
主对角线上的数之和:sum(sum(A . eye(A矩阵的维度)))*:eye产生一个单位矩阵,根据A的维度产生单位矩阵后,再继续与A进行点对点相乘,最终得到了A矩阵中对角线上的元素,在通过sum可以拿到每一列的值,这个时候相当于把对角线上的元素整合成行向量,外层的sum就再次将这个原来由对角线元素组成的元素求和,最终得到了对角线上的元素的总和
-
flipud(A):对A进行垂直翻转,也就是从上向下或者从下向上180°翻转
-
副对角线的数之和:sum(sum(A . flipud(eye(A矩阵的维度))))*
绘图和可视化工具
绘图实例
绘图实例:首先是产生一个t相关的数组t = [0:0.1:5],这里表示从0开始步长是0.1,增加到5,通过sin函数得到y,并添加变量t,然后通过plot函数:plot(t,y),第一个参数是自变量,第二个参数是因变量,最终绘制下图
常用函数
- sin()
- cos()
- plot(x轴变量,y轴变量):绘制一般的图像
- plot(x轴变量,y轴变量,‘r’):绘制一般的图像,添加了第三个参数,表示添加了相应的颜色值
- hold on:因为plot函数没有特别配置的情况下只有一个图像显示,每次执行一次plot只会出现一个函数图像,需要维持多个图像可以使用hold on
-
xlabel(‘time’):添加x轴描述
-
ylabel(‘value’):添加y轴描述
-
legend(第一条线的描述,第二条线的描述…):添加线描述,从左到右是对添加顺序的三条线进行添加相应的描述
-
title(标题名称):通过title函数添加标题描述
-
print -dpng ‘myplot.png’:将图像保存到当前路径下并且命名为myplot.png
-
close:关闭图像
-
figure(1): plot(t,y1):使用figure进行标识哪个图被绘制了,从而打开多个窗口进行图片绘制
-
subplot(1,2,1):前两个参数表示1*2的格子,也就是一行2个格子,最后一个格子表示当前使用的格子是第1个
-
axis([0.5,1,-1,1]):设置当前操作的子图的坐标范围,前两个参数设置的是x轴的范围,后两个数是设置y轴的范围,具体设置哪个子图是通过subplot进行设置的,按照实例就将x坐标设置成了0.5到1,纵坐标设置成了-1到1
-
clf:清除生成的图像
-
imagesc(矩阵):使用色块来表示来表示矩阵具体的元素,色块的分布是矩阵元素的分布,矩阵的颜色表示具体矩阵的值
-
imagesc(矩阵),colorbar:上述使用色块去表示值的大小,但是并不知道具体的颜色深浅代表的值大小关系,colorbar可以提供一个度量
-
imagesc(a),colorbar, colormap gray:colormap表示将色块设置为灰色块
控制语句
-
if语句
-
while循环:
- if else语句