Octave
数据处理
- size(A,1)可以输出矩阵A第一维度的大小,也就是m维度(行数)。
- size(A,2)能够输出矩阵A第二维度的大小,即n维度(列数)。
- length()命令通常对向量使用,对矩阵使用容易造成误解。
- 使用who可以查看所有的变量,whos可以查看所有变量的详细信息。
- 利用clear+变量名的形式可以清除具体的变量,利用clear直接回车能够清空所有的变量信息。
- 使用load X.dat命令能够加载数据到矩阵X中,前提是当前工作目录内包含有X.dat这个文件。
- V=Y(1:10)这个命令可以将Y变量内前10条数据赋值给V,这里的前10条数据指的是纵列的前10条数据。比如Y是一个4*2的矩阵,那么前5条数据就是第一列的4个数据再加上第二列开头第一个数据,最后得到的V是一个行向量。
- 将变量保存至硬盘save hello.mat v;这行命令可以把变量v保存到mat文件内,mat文件是用来存储二进制的,即使v变量有大量的数据,mat文件也可能会被压缩的很小。如果想将数据存储成为人类可以理解的形式,可以使用下面的命令save hello.txt v -ascii。
操作数据
- A(3,2)能够获得第三行第二列的数据。
- A(3,:)表示获得第三行的所有元素。
- A(:,2)表示第二列的所有元素。
- A([1 3],:)表示得到A中索引为1、3行的所有元素。
- Octave中向量、矩阵的索引都是以1开始的。
- 利用A([1,2,3],[1,2,3])这样的命令可以对矩阵进行任意行,任意列的分割。
- 假设v是一个33的矩阵,k是一个13的行向量,那么v=[k;v]的含义是在v的最上面增加一行k,v=[v;k]的含义是在v的最下面增加一行k。
- 若j是一个3*1的列向量,那么v=[j,v]的含义就是在v的最左侧增加一列j,同样的在v最右侧增加一列j使用命令v=[v,j],将逗号换成空格也可以,因为空格代表列向量输入,分号代表换行。
- A(:)表示将A中所有的元素放在一个列向量中。
- A.*B的意思是将A与B对应的元素一一相乘(矩阵需要同型才行)。
- A.^2表示对A矩阵内所有的元素进行乘方。
12.** 可以将“.”符号理解为针对元素进行的运算。**
- log(x),x可以是向量、矩阵、单元素变量,实际计算过程中是以e为底进行对数运算的。
- exp(x),x可以是向量、矩阵、单元素变量,计算过程中是以e为底进行的指数运算。
- 将向量v内每个元素都增加1的方法如下,ones(2,3)能够生成一个2行3列的矩阵(元素全都是1)。
v+ones(length(v),1)
- 可以利用find(a<3)函数来返回a矩阵内所有小于3的元素,返回的结果是列向量。
- magic函数能够返回幻方矩阵,任意行、列对角线中的元素加在一起都等于一样的值。
- [r,c]=find(A>=7)这里的r和c分别表示行索引和列索引,r与c的第i对元素就是第i各满足A>=7条件的元素坐标。
- sum(a)会对a内所有的元素进行求和。
- prod(a)会对a内所有的元素进行乘积。
- floor(a)会对a内所有的元素进行向下取整。
- ceil(a)会对a内所有的元素进行向上取整。
- rand(3)能够返回一个3*3的随机矩阵。
- max(rand(3),rand(3))能够取得两个rand中比较大的元素组成的矩阵。
- max(A,[],1)能够得到每一列的最大值,这里的1指的是用第1维度去取值,也就是说把每一列的最大值存储在一个行向量内。如果把1换成2的话,那么就是用第二维度去取值,也就是max(A,[],2)能够获得每一行的最大值,最后的结果是一个列向量。
- max(max(A))可以获得矩阵内最大的元素,也可以使用max(A(??)。
- sum(A,1)表示对矩阵内每一列进行求和,最后放在一个行量内。
- sum(A,2)表示对每一行进行求和,最后放在一个列向量内。
- 求矩阵对角线的和
sum(sum(eye(3).*A))
- 对矩阵的副对角线求和,需要使用垂直翻转命令flipud
sum(sum(A.*flipud(eye(3))))
- pinv是求解伪逆的命令,A*pinv(A)的主对角线上的元素都约等于1,除了主对角线上的元素外,其余部分都可以看为0。
绘图
- plot(x,y),其中y是因变量,x是自变量。
- xlabel(‘time‘)能够给x轴增加标签
- legend(‘sin‘,‘cos‘)能够增加图例
- print -dpng ‘name.png’可以保存图像到本地
- close命令能够直接关闭图像。
- figure(1)可以增加一个图像窗口(窗口名称是Figure 1)
- subplot(1,2,1)命令的含义是将图像分为两个格子(前两个参数1*2是矩阵的长宽,第三个参数是表示使用Figure 1窗口)
- axis([0.5 1 -1 1])可以将图中横轴区间设置成0.51,纵轴区间设置成-11
- clf命令可以清空一个figure图像
- imagesc(A)命令能够生成矩阵对应的色块图像。
- imagesc(),colorbar,colormap gray;三个命令同时运行,能够生成一个灰度图像,事实上使用逗号连接三个命令就是让这三个命令一次执行而已。
语句与函数
for循环、while循环、if判断如下:
for i=1:10,
v(i)=2^i;
end;
while i<5,
v(i)=100;
i=i+1;
end;
while true,
v(i)=999;
i=i+1;
if i==6,
break;
end;
end;
函数定义
function J=costFunctionJ(X,y,theta)
%X is the design matrix containing our training examples.
%y is the class labels
m=size(X,1);
predictions=X*theta;
sqrErrors=(predictions-y).^2;
J=1/(2*m)*sum(sqrErrors);
向量化
机器学习入门(二)
原文:https://www.cnblogs.com/mirage-mc/p/14347040.html