Octave简明教程
吴恩达的机器学习课程的作业可以使用Matlab或者octave,这里记录一下octave的基本操作。
Contents
符号
符号 | 解释 |
---|---|
% | 注释 |
~= | 不等于 |
; | 结束符 |
> | 大于 |
< | 小于 |
= | 等于 |
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
‘ | 转置 |
> , < , =这些符号可以应用到矩阵中,可以将矩阵中的每一个元素和符号后的数字进行比较,最终判断成立返回1, 判断错误返回0.
示例:
>> 1+1 |
矩阵
矩阵初始化
>> a = [1 2 3; 4 5 6; 7 8 9] |
注:;
代表的是换行,每一行中可以拿,隔开也可以不用,直接空开就可以。
特殊矩阵初始化
单位阵:
>> eye(3) |
全一阵:
>> ones(3,3) % 前一个3为行数,后一个3为列数 |
全零阵:
>> zeros(2,3) |
随机矩阵:
>> rand(3,3) |
魔法矩阵:每行,每列,对角的和都相等的矩阵
>> magic(3) |
矩阵索引
:
冒号表示从…到…,单独的冒号表示所有
︋>> a = [1 2 3; 4 5 6; 7 8 9] |
矩阵变化
以下示例均使用a = [1 2 3; 4 5 6; 7 8 9]
重新赋值
>> a(1,:) = [7 8 9] %将第一行改为 7 8 9 |
添加到新行/列
>> a = [a, [10; 11; 12]] %添加列 |
矩阵向量化
按照列的顺序排布:
>> a = [1 2 3; 4 5 6; 7 8 9]; |
如果想按行排布,可以使用转置:
>> a'(:) |
矩阵计算
矩阵相加减
>> a+1 |
矩阵相乘除
>> a *a %叉乘:线性代数中的叉乘 |
矩阵运算
>> a.^2 %幂运算 |
内建函数
length():返回的是长度,有可能是行的个数有,可能是列的个数。这取决于那个时候更大
>> length(a)
ans = 3
>> length(rand(5,7))
ans = 7max():对于向量来说会返回其中最大的一个数字,对矩阵来说会返回一个向量,向量的每一列对应原来矩阵每一列的最大值
>> max([ 7 8 9 ])
ans = 9
>> max(a)
ans =
7 8 9
>> max(a, [], 2) %第三个参数表示按行找最大值(若为1则是按列找,默认为1)
ans =
3
6
9floor():向下取整
ceil():向上取整>> floor(10.12)
ans = 10
>> ceil(10.12)
ans = 11sum():按行/列相加
︋>> sum(a,1) %第二个参数为1时,按列加(默认为1)
ans =
12 15 18
>> sum(a,2) %第二个参数为2时,按行加
ans =
6
15
24flipud():将矩阵上下颠倒
>> flipud(a)
ans =
7 8 9
4 5 6
1 2 3rank():求矩阵的秩
>> rank(a)
ans = 2rref():将矩阵化为行最简
>> rref(a)
ans =
1.0000 0 -1.0000
0 1.0000 2.0000
0 0 0pinv():求矩阵的逆矩阵
>> a=[3,4;2,16]
a =
3 4
2 16
>> pinv(a)*a
ans =
1.0000 -0.0000
0 1.0000
>> pinv(a)
ans =
0.400000 -0.100000
-0.050000 0.075000reshape():将向量矩阵化
>> a = ones(10,1); %初始化一个10维向量
>> reshape(a, 5, 2) %第二个参数是矩阵的行数, 第三个是矩阵的列数
ans =
1 1
1 1
1 1
1 1
1 1
画图
>> x = -1:0.1:1; |
hold on %若要保留上一次的结果就hold on |
% 加标签 |
语法
for循环:
for i=1:10 |
while循环:
a = 10; |
if/else:
> if a > 1 |
创建函数:
function val = func(x, y) %x,y是函数传入的参数,val是返回值 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LP瞎逼逼!
评论