5.1 基本操作
5.1.1 PS1(‘>>’);
5.1.2 看手册
5.2 移动数据
pwd %显示Octave当前路径lsload featuresX.datload priceY.dat')%也可以写成load('featuresX.dat')load('priceY.dat')who %显示Octave中所有的变量whos %显示Octave中所有的变量的详细信息clear featuresX %删除变量featuresXv = priceY(1:10) %将priceY的前10个元素赋值给vsave hello.mat v;clear %清楚Octave中的所有变量save hello.txt v -ascii;%储存成text(ASCII)A = [1 2;3 4;5 6]A(3,2) %索引A中第3行第2列的元素A(2,:) %该行/列的所有元素A(:,1) %该行/列的所有元素A([1 3],:) %第1,3行的所有元素A(:,2)=[10;11;12] %对第2列元素进行赋值A = [A,[100;101;102]]; %在右侧增加一列元素A(:) %将所有元素放入一个单独的列向量C = [A B] %将两个矩阵放在左右两边赋值给CC = [A; B] %将两个矩阵放在上下两边赋值给C
5.3 计算数据
两个矩阵的乘积,比如说,我只需键入AC,这是一个 3×2 矩阵乘以 2×2矩阵,得到这样一个3×2矩阵
也可以对每一个元素,做运算方法是做点乘运算A.B,这么做Octave将矩阵中的每一个元素与矩阵
中的对应元素相乘:A.B
一个矩阵,这里我输入A.^2,这将对矩阵
中每一个元素平方。
我们设[1; 2; 3] 是列向量,你也可以输入1./A,得到每一个元素的倒数,所以这样一来,就会分别算出 1/1 1/2 1/3
对数运算,也就是对每个元素进行求对数运算,log(A)
以e为底的对数运算,exp(A)
我还可以用abs(A)来对的每一个元素求绝对值
A+1也就等于把中的每一个元素都加上
矩阵如果你想要求它的转置,那么方法是用A’
A=[1 15 2 0.5],这是一个1行4列矩阵,val=max(A),这将返回矩阵中的最大值15。还可以写 [val, ind] =max(a),这将返回
矩阵中的最大值存入val,以及该值对应的索引,元素15对应的索引值为2,存入ind,所以 ind =2。特别注意一下,如果你用命令 max(A),
是一个矩阵的话,这样做就是对每一列求最大值。
我们还是用这个例子,这个矩阵A=[1 15 2 0.5],如果输入A<3,这将进行逐元素的运算,所以元素小于3的返回1,否则返回0。
如果我写 find(A<3),这将告诉我中的哪些元素是小于3的,并返回索引
A = magic(3),magic函数将返回一个矩阵,称为魔方阵或幻方 (magic squares),它们具有以下这样的数学性质:它们所有的行和列和对角线加起来都等于相同的值。
[r,c] = find(A>=7),这将找出所有矩阵中大于等于7的元素,r和c分别表示行和列,第一行第一列的元素大于等于7,第三行第二列的元素大于等于7,第二行第三列的元素大于等于7。
键入 sum(a),就把 a 中所有元素加起来了。
键入 prod(a),prod 意思是product(乘积),它将返回所有元素的乘积。
floor(a) 是向下四舍五入,因此对于中的元素0.5将被下舍入变成0。
ceil(a),表示向上取整,所以0.5将上舍入变为最接近的整数,也就是1。
max(rand(3),rand(3)),结果是返回两个3×3随机矩阵中逐元素相比较,取最大值所构成的矩阵。
max(A,[],1),这将得到每一列的最大值,这里的1表示取A矩阵第一个维度的最大值。max(A,[],2),这将得到每一行的最大值,这里的2表示取A矩阵第二个维度的最大值。特别注意一下,如果你用命令 max(A),默认对每一列求最大值。
取整个矩阵中的最大元素 max(max(A)),也可以用max(A(:)),这样做就是把当做一个向量,并返回
向量中的最大值。
eye(9),生成9×9的单位矩阵
flipud(A),纵向反转矩阵
pinv(A),伪逆矩阵
Apinv(A)可以尝试运算一下,回得到近似的单位矩阵
5.4 数据绘制
plot(x,y,'r')hold onxlable('time')ylable('value')legend('sin','cos')title('my plot')cd ' c:\users\ang\Desktop'; print -dpng 'myPlot.png'help plotclose %关闭图像figure(1);plot(t,y1);figure(2);plot(t,y2);subplot(1,2,1); %1×2的格子,现在使用第一个plot(t,y1);subplot(1,2,2);plot(t,y2);axis([0.5 1 -1 1])help axisclf; %清除图像A = magic(5) %幻方矩阵imagesc(A)imagesc(A), colorbar, colormap gray;imagesc(magic(15)), colorbar, colormap gray;a=1,b=2,c=3 %可以用,连接多条语句,并打印出变量的值,这与;连接有什么区别?
5.5 控制语句和函数
5.5.1 控制语句for,while,if语句





最后,提醒一件事:如果你需要退出 Octave,你可以键入exit命令然后回车就会退出 Octave,或者命令quit也可以。
5.5.2 函数 (functions)
在调用一个编写好的函数之前,要添加路径。例如在桌面上,那么可以cd ‘C:\Users\ang\desktop’添加路径,也可以直接添加路径addpath(‘C:\Users\ang\desktop’)
Octave还有一个其他许多编程语言都没有的概念,那就是它可以允许你定义一个函数,使得返回值是多个值或多个参数
5.6 向量化
是简化算法的重要方式,运行速度更快。 实现的方式越简单,代码出现问题的有可能性也就越小。
举例:这是一个常见的线性回归假设函数:
未向量化的实现方式: 向量化后:

尝试使用向量化将下式一步实现:
