Octave 基础学习
Octave基础
Basic/Logic Operation
- 在CLI窗口中,可以直接输入算术运算或者逻辑运算,可以直接计算
octave:2> 5+6
ans = 11
octave:3> 1==2
ans = 0
octave:4> 1 == 2 % false
ans = 0
% 注意:%为注释符号
% PS1 = ('>>') 将每一步前面加两个尖帽
变量设置:直接设置:
>> a = 3
a = 3
>> a = 3; % 加分号结尾不立即输出
>>
变量或者字符串打印:disp()方法
>> disp(a)
>>3
>>disp(sprintf('2 decimals : %0.2f',a))
>>2 decimals : 3.00
便于打印变量位数的方法: format long/format short
>> a = pi
>> a = 3.1416
>> format long
>> a
>> a = 3.141592653589793
>> format short
>> a
>> a = 3.1416
Matrix and Vector
申明一个矩阵:
>> A = [1 2;3 4; 5 6;]
A =
1 2
3 4
5 6
申明一个列向量:
v = [1;2;3]
v =
1
2
3
快速申明一个固定步长的向量
>> v = 1 : 0.1 :2
v =
1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000 1.8000 1.9000 2.0000
>> v = 1 : 6
v =
1 2 3 4 5 6
其他快速申明矩阵的方法:
% ones(x,y) 输出一个x行 y列 全是1的矩阵
>> ones(2,3)
>> ans =
1 1 1
1 1 1
>> C = 2* ones(3,2) % 快速赋值
C =
2 2
2 2
2 2
% zeros() 同理
申明随机矩阵:
% rand()方法申请一个随机数矩阵(0~1之间)
>> w = rand (2,3)
w =
2.6682e-01 3.7727e-02 9.3895e-03
3.1551e-01 3.0578e-02 4.7607e-01
%randn()方法申请一个高斯随机变量
>> w = randn(2,3)
w =
0.4575 -0.7121 -0.2961
1.0726 -0.8516 0.9097
申请单位矩阵:eye()方法
>> i = eye(4)
i =
Diagonal Matrix
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Little Bit Advanced : )
获得矩阵的大小:size()
% size () 方法可以获得一个矩阵的规格大小
>> A = [1 2;3 4 ;5 6; ]
A =
1 2
3 4
5 6
>> size(A) % 返回的是一个1*2的矩阵
ans =
3 2
>> size(A,1) % 返回第一维度的大小
>> ans = 3
>> size(A,2)
>> ans = 2
获得向量长度的方法:length()
% length() 该方法可以获得向量的长度,也可以获得矩阵最大的那一维度的值
>> v = [1 2 3 4]
v =
1 2 3 4
>> length(v)
ans = 4
读取数据集:load/load()
% pwd 指令可以查看当前所在目录,可使用cd、ls等指令
load filename.dat
load ('filename.dat')
查看当前变量:who(包括读取的文件)
>> who
Variables visible from the current scope:
A C a aA ans i v w
>> whos % 更加详细的展示变量
Variables visible from the current scope:
variables in scope: top scope
Attr Name Size Bytes Class
==== ==== ==== ===== =====
A 3x2 48 double
C 3x2 48 double
a 1x1 8 double
aA 3x2 48 double
ans 1x14 14 char
i 4x4 32 double
v 1x4 32 double
w 2x3 48 double
Total is 59 elements using 278 bytes
数据存储:
>> A
A =
1 2
3 4
5 6
>> e = A(1:3) % 将A的前三个元素存储到e中
e =
1 3 5
% 方便理解,进行了多次测试
>> c = A(1:2)
c =
1 3
>> c = A(1:4)
c =
1 3 5 2
>> c = A(2:4)
c =
3 5 2
>>
% 存储到本地硬盘
>> save hello.txt e % 在当前目录下生成一个hello.txt文件来存储e的数据
操作数据:
>> A (3,2) % 输出第3行2列的值
ans = 6
>> A(1,:) % 输出第一行所有的元素
ans =
1 2
>> A([1,3],:) % 输出索引为1,3的行的所有元素
ans =
1 2
5 6
>> A (:,2) = [10;11;12] % 赋值为新的值
A =
1 10
3 11
5 12
>> A = [A , [100;101;102]] % 在A的右边添加一列向量
A =
1 10 100
3 11 101
5 12 102
>> A(:) %将A中的所有值存到一列向量里去
ans =
1
3
5
10
11
12
100
101
102
>> 1 ./ A % 得到A中所有元素求倒数的矩阵
矩阵组合:
>> A = [1 2;3 4;5 6;]
A =
1 2
3 4
5 6
>> B = [11 22 ; 33 44 ; 55 66 ;]
B =
11 22
33 44
55 66
>> C = [A B] % 并行组合
C =
1 2 11 22
3 4 33 44
5 6 55 66
>> C = [A; B] % 垂直组合
C =
1 2
3 4
5 6
11 22
33 44
55 66
数据计算:
>> log(v) % 将每个元素取对数
>> exp(v) % 求e对应各个元素的幕
>> abs(v) % 求每个元素的绝对值
矩阵操作:
>> A = [1;2;3]
A =
1
2
3
>> A' % 转置矩阵
ans =
1 2 3
>> val = max(A) % 返回A中的最大值(默认是每一列的最大值,想获取最大元素可以max(max(A)))
val = 3
>> A < 3 % 将每一个A中的值与3比较,生成一个相同大小的0,1矩阵,每一个成立输出1,有不成立的输出0
ans =
1
1
0
>> A = [A,[10;11;12]]
A =
1 10
2 11
3 12
>> find (A>2) % 用于找到A中满足条件的元素的索引
ans =
3
4
5
6
>> pinv(A) % 对A求逆
ans =
0.071429 0.142857 0.214286
元素操作:
>> sum (A,1) % 按列求和(first dimention)
ans =
6 33
>> sum(A,2) % 按行求和(second dimention)
ans =
11
13
15
Visualize Data(tools)
绘制图像:
>> t = [0:0.01:0.98];
>> y1 = cos(2*pi*4*t);
>> y2 = sin(2*pi*4*t);
>> plot (t,y1) % 绘制图像
>> hold on % 两个图像绘制在一个坐标轴里
>> plot (t,y2)
>> xlabel('time') % 设置横纵轴标签
>> ylabel('value')
>> title('myplot')
>> print -dpng 'myPlot.png'
>> close
>> figure(1); plot(t,y1) % 分别显示多个图
>> figure(2); plot(t,y2)
>> subplot(1,2,1) % 将一个plot分为两个方格,将两个图像分别以两个坐标轴存放到一起
>> plot (t,y1)
>> subplot(1,2,2)
>> plot (t,y2)
>> clf; % 清除画像
Control Statements(控制语句)
For()循环:
>> v = zeros(10,1)
v =
0
0
0
0
0
0
0
0
0
0
>> for i = 1:length(v), % 从1遍历到length(v)
> v(i) = 2^i;
> end;
>> v
v =
2
4
8
16
32
64
128
256
512
1024
While() :
>> i = 1
i = 1
>> while i<=5,
> v(i) = 100;
> i = i+1;
> end;
>> v
v =
100
100
100
100
100
64
128
256
512
1024
if():
>> if v(1) == 1
> disp('the value is 1')
> else
> disp('the value is not 1')
> end;
the value is not 1
>>
function使用:
% 先在.m后缀的文件内写好所需函数,然后在octave中cd到文件所在文件夹,直接调用即可