目录
Octave下载(windows版本)
https://www.gnu.org/software/octave/download.html
Octave的基本操作
基本运算
改变默认的Octave提示符: PS1('<<');
Octave变量
- ;可以阻止打印
- disp命令表示显示,sprintf命令用于生成字符串
- format short默认输出打印少量的小数点后位数;format long默认显示更多的小数点后位数
向量和矩阵
- 用[]表示一个矩阵,用;来隔离每一行
- 行向量与列向量的表示:
- v = 1:0.1:2 //v是一组值,从1开始,步长为0.1,一直增加到2;默认步长为1
- ones(m,n) 生成元素均为1的m行n列矩阵
- zeros(m,n) 生成元素均为0的m行n列矩阵
- rand(m,n) 生成随机的m行n列矩阵,每个元素都介于0到1之间
- randn(m,n) 生成高斯随机变量(正态分布的随机变量),均值为0,方差为1
- w = -6 + sqrt(10) * (randn(1,100000)) 生成一个有10000个元素的向量,均值为-6,方差为10
- hist(w) 将w绘制成一个直方图
eye(n) 生成n阶单位矩阵
help命令
如help eye 显示单位矩阵的帮助函数。键入Q可以退出
移动数据
数据的读取和存储
- 求矩阵、向量的维度(通常矩阵用size,向量用length)
- pwd命令显示Octave当前所在的路径
- cd命令表示改变路径,load用于加载文件
- who命令显示当前Octave储存的所有变量
- whos命令显示更详细的变量信息
- save命令将数据存入硬盘
- clear命令清除所有当前储存的变量
矩阵索引
- A(m,n) 矩阵A第m行第n列的元素
- A(m,:) 矩阵第m行的所有元素
- A(:,n) 矩阵第n列的所有元素
- A([m,n],:) 矩阵第m、n行的所有元素
矩阵组合
- A(:) 将A中所有的元素放入一个单独的列向量
- C = [A B] 将A B左右拼组合成新的矩阵C
- C = [A ; B] 将A B上下拼组合成新的矩阵C
计算数据
- A * B 两个矩阵相乘
- A .* B 两个矩阵元素对应分别相乘
- A .^ 2 A矩阵每个元素分别平方
- log(V) 、exp(V)、abs(V)对矩阵或向量的每个数求对数、以e为底的对数、绝对值
- A' 求A的转置
- pinv(A) 求A的逆矩阵
- 求向量的最大值或最大值及其索引值 如果是矩阵会返回每列的最大值
- 将向量的每个元素都与某个数比较
- 找出满足某种条件的索引值
- magic(n)函数生成n阶矩阵(幻方矩阵)—— 每一行、每一列、每一斜对角线加起来为同一个数
- [r,c] = find(A > 7) 返回大于7的元素的行和列号
- max(A,[],1) 返回每一列的最大值 (默认) max(A,[],2)返回每行的最大值 max(max(A))或max(A(:))返回矩阵中的最大值
- sum(V) 返回向量中所有元素的和
- prod(V) 返回向量中所有元素的乘积
- floor(V)、ceil(V)
- sum(A,1) 求每一列的和(默认) sum(A,2) 求每一行的和
- 求两条对角线之和 flipud(A) 将矩阵A进行垂直翻转
数据绘制
函数图像绘制
- plot(x,y) 绘制y关于x的图像;
- hold on函数让Octave在原有的图像上绘制新的图像,其中plot中的‘r’表示线条的颜色;
- xlable、ylable函数分别为x轴、y轴加上标签,legend('','')标记曲线的内容,title()在图像顶部显示图像标题;
- print -dpng ‘myPlot.png’ 将图像保存到当前路径
- close命令关闭当前图像
- figure(x)为图像标号;
- subplot(m,n,x)将图像分为m*n个格子,使用第x个格子;
- axis([xstart,xend,ystart,yend])设置坐标轴的范围;
- clf命令清除图像;
矩阵图像绘制
- imagesc(A) 用不同颜色来代表不同的值
控制语句:for、while、if语句
for语句
while语句
if语句
定义和调用函数
- addpath('C:\uers') 将路径存储到Octave的搜索路径中
- 定义函数:文件名必须与函数名相同,以.m后缀结尾,如在squareAndCube.m文件中定义一个函数,函数可以返回多个返回值。
function [y1,y2] = squareAndCube(x) y1 = x ^ 2; y2 = x ^ 3;
- 代价函数的定义
在costFunctionJ.m文件中定义代价函数:
function J = costFunctionJ(A,y,theta)
% A is the "design matrix" containing our training examples
% y is the class label
m = size(A,1); % number of training examples
predictions = A * theta; %predictions of hypothesis on all m examples
sqrErrors = (predictions - y) .^ 2; %square errors
J = 1 / (2*m) * sum(sqrErrors);