012 正规方程及不可逆性
通过brew 安装octave
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
/bin/bash -c "$(curl -fsSL --insecure https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
brew update
brew install octave
octave:1> 3*1
ans = 3
octave:2> 12/2
ans = 6
octave:3> 23+3
ans = 26
013 Octave 基本教程
Octave是一种很好的原始语言(prototyping language),使用Octave你能快速地实现你的算法。
PS1('>> ')
# 修改为空字符。当然也可以使用其他的字符更改。
octave:12> a = 3
a = 3
octave:14> a =3;
# 此时就没有输出了
1. 简单数学运算
基本数学运算、逻辑运算
2. 矩阵
通过分号分离矩阵元素建立
A = [1 2; 3 4; 5 6]
# 输出
A =
1 2
3 4
5 6
列向量为
octave:36> C =[1;2;3]
C =
1
2
3
行向量为
octave:35> B = [2 3 1]
B =
2 3 1
通过指令构建矩阵
octave:37> a = ones(2,3)
# 建立 2x3 矩阵,且元素都为1
a =
1 1 1
1 1 1
octave:38> v = [1:2:10]
# 建立行向量,从1-10,且间隔为2
v =
1 3 5 7 9
octave:42> rand(2,2)
# 生成2x2 矩阵,元素在0-1 取值
ans =
0.366373 0.258291
0.030356 0.630887
octave:46> eye(3)
ans =
Diagonal Matrix
1 0 0
0 1 0
0 0 1
hist(1,3)
014 在octave 中移动数据
octave:49> size(A)
# A为3x2 矩阵
ans =
3 2
octave:50> A
A =
1 2
3 4
5 6
octave:55> size(A,1)
# 返回矩阵的第一个元素(矩阵的行)。
# ps:矩阵的列为第二个元素。也即size(A,2) 会返回2
ans = 3
-
在向量中使用length()返回长度。一般不在矩阵中使用。
octave:56> B = [1:6]
B =
1 2 3 4 5 6
octave:57> length(B)
ans = 6
load(' ')
# 加载文件xxx
who
# 显示当前环境下变量
whos
# 显示当前环境下变量及其基本参数,attr, name, size, bytes, class
save XXX.xxx v
# 保存变量v到文件XXX中
save hello.txt v -ascii
# 将文件保存为ascii形式
C = [A B]
# 将矩阵B直接加在矩阵A的左边(需满足A、B矩阵行数相同)
C =[A;B]
# 将矩阵B直接加在矩阵A的下方(需满足A、B矩阵列数相同)
014 Octave 计算数据
-
通过.x(运算符号)实现元素间的运算
如 3X2 矩阵和 3X2矩阵直接相乘
A*B
会报错。但可以通过
A.*B
计算元素之间的运算(相同规格的矩阵)。
B =
2 3
4 5
6 7
A =
1 2
3 4
5 6
octave:88> A.*B
ans =
2 6
12 20
30 42
log(v)
# 对数
exp(v)
# 幂
v+1
# 元素均+1,也可以构造和v同规格矩阵,相加即可
A =
1 2
3 4
5 6
octave:98> A'
ans =
1 3 5
2 4 6
[val, ind] =max(a)
# 将a矩阵中每列元素中最大值保存为1*n的矩阵存入val中(n为a矩阵列数)。
#并将最大值的索引(最大值所在的行数)存入ind并保存为1*n的矩阵。
a<3
# 遍历a中所有元素,满足返回1,否则为0
find(a<3)
# 返回满足条件的a中的元素的值
magic(3)
# 生成3X3的矩阵,并满足行列对角线加和数值均相等。
-
求矩阵的逆
若A与a为逆,则A*a = I(单位矩阵)
a = pinv(A)