1基础
octave:44> A = [1 2; 3 4; 5 6]
A =
1 2
3 4
5 6
sz = size(A)
3行2列
size(A, 1) 表示行,3行。size(A, 2)表示列,2列。
v = [1 2 3 4]然后键入 length(v),这个命令将返
回最大维度的大小,返回 4
加载文件load(‘featureX.dat’) 或者load featureX.dat
V= priceY(1:10)这表示的是将向量 𝑌的前 10 个元素存入 𝑉中。
save hello.mat 𝑉 命令,这个命令会将变量𝑉存
成一个叫 hello.mat 的文件
save hello.txt V -ascii 存成文件
𝐴设为 A = [A, [100; 101;102]]这样做的结果是在
原矩阵的右边附加了一个新的列矩阵,就是把 𝐴矩阵设置为原来的 𝐴 矩阵再在右边附上一
个新添加的列矩阵
A =
1 2 100
3 4 101
5 6 102
A(😃,这样我们就得到了一个 9×1 的向量,这些元素都是
𝐴 中的元素排列起来的
2矩阵计算
A = [1 2; 3 4; 5 6]
A =
1 2
3 4
5 6
B = [11 12; 13 14; 15 16]
B =
11 12
13 14
15 16
C=[1 1;2 2]
C =
1 1
2 2
矩阵相乘
octave:49> A*C
ans =
5 5
11 11
17 17
点乘运算 A.*B,这么做 Octave 将矩阵 𝐴中
的每一个元素与矩阵 𝐵 中的对应元素相乘:A.*B
octave:51> A.*B
ans =
11 24
39 56
75 96
元素原地操作
A.^2这将对矩阵𝐴中每一个元素平方。
octave:52> A.^2
ans =
1 4
9 16
25 36
octave:53> V= [1; 2; 3]
V =
1
2
3
1./V,得到每一个元素的倒数
1./A 得到𝐴中每一个元素的倒数
函数也是针对每一个元素操作
log(V)
log(A)
自然数𝑒的幂次运算,就是以𝑒为底,以这些元素为幂的运算
exp(V)
abs(V)
每个元素相加1
octave:54> V+ones(3,1)
ans =
2
3
4
可以这样写:v+1,v + 1 也就等于把 𝑣 中的每一个元素都加上 1
3高级操作
A’转置
octave:55> a=[1 15 2 0.5]
a =
1.0000 15.0000 2.0000 0.5000
octave:56> val=max(a)
val = 15
[val, ind] =max(a),这将返回𝐴矩阵中的最大值存入𝑣𝑎𝑙,以及该值对
应的索引,元素 15 对应的索引值为 2,存入𝑖𝑛𝑑,所以 𝑖𝑛𝑑 = 2。这里索引从1开始
用命令 max(A),𝐴是一个矩阵的话,这样做就是对每一列求最
大值
𝑎 矩阵 a=[1 15 2 0.5],如果输入 a<3,这将进行逐元
素的运算,所以元素小于 3 的返回 1,否则返回 0。
octave:57> a<3
ans =
1 0 1 1
find(a<3),这将告诉我𝑎 中的哪些元素是小于 3 的。返回的是索引序列
octave:58> find(a<3)
ans =
1 3 4
magic 函数将返回一个矩阵,称为魔方阵或幻方 (magic squares),
它们具有以下这样的数学性质:它们所有的行和列和对角线加起来都等于相同的值。
octave:59> A = magic(3)
A =
8 1 6
3 5 7
4 9 2
[r,c] = find(A>=7),这将找出所有𝐴矩阵中大于等于 7 的元素
prod(a),prod 意思是 product(乘积),它将返回这四
个元素的乘积
最大值问题:
max(A,[],1),这样做会得到每一列的最大值。
max(A,[],2),这将得到每一行的最大值。
默认情况下max(A)返回的是每一列的最大值
单位矩阵
octave:5> eye(3)
ans =
Diagonal Matrix
1 0 0
0 1 0
0 0 1
𝐴逐点乘以这个单位矩阵,除了对角线元素外,其他元素都会得到 0。
sum(sum(A.*eye(9))
翻转操作
flip/flipud 表示向上/向下翻转。
octave:12> A
A =
8 1 6
3 5 7
4 9 2
octave:13> flip(A)
ans =
4 9 2
3 5 7
8 1 6
上面的行和下面的行交换了
逆矩阵
pinv(A),通常称为伪逆矩阵,你就把它
看成是矩阵 𝐴 求逆,因此这就是 𝐴矩阵的逆矩阵。
4绘图操作
octave:4> y1=sin(2pi4t);
octave:5> plot(t,y1)
继续画图会覆盖原图,如
octave:6> y2=cos(2pi4t);
octave:7> plot(t,y2);
使用hold on函数,即可同时显示两幅图像:
octave:9> hold on
octave:10> plot(t,y1);
octave:11> plot(t,y2,‘r’)#红色折线
octave:12> xlabel(‘time’)#x轴标记
octave:13> ylabel(‘value’)#y轴标记
octave:14> legend(‘sin’,‘cos’)#图例标注
print –dpng ‘myplot.png’ #保存图片
命令 close 会让这个图像关掉
子图操作
octave:29> subplot(1,2,1)
octave:30> plot(t,y1)
octave:31> subplot(1,2,2)
octave:32> plot(t,y2)
octave:1> A= magic(5)
A =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
octave:2> imagesc(A)
A =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
octave:13> imagesc(A)
libpng warning: iCCP: cHRM chunk does not match sRGB
octave:14> colorbar
octave:15> colormap gray
5控制语句
for i=1:10,v(i)=2^i;end;
octave:25> for i=1:10,v(i)=2^i;
end;
octave:26> v
v =
2 4 8 16 32 64 128 256 512 1024
octave:31> while i<=5,
v(i)=100;
i=i+1;
end;
addpath “C:\Users”
添加了路径之后,不要切换工作目录,这个目录下的东西就可以用了
octave:8> squareThisNumber(5)
ans = 25
这样就可以直接使用了。
代价函数举例:
octave:1> X = [1 1;1 2;1 3]
X =
1 1
1 2
1 3
octave:2> Y = [1;2;3]
Y =
1
2
3
octave:3> theta = [0;1]
theta =
0
1
octave:12> J=costFunctionJ(X,Y,theta);
octave:13> J
J = 0
调用很简单,使用函数即可。