相比于其它的语言如 NumPy ,Octave用于数学运算方面,的确好使!
一行更比六行强?
octave:9> 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
octave:18> V = 1:6
V =
1 2 3 4 5 6
%与其它编程语言不大一样的一点在于步长项在中间,这样子的确比较好理解;
%与其它的编程语言一样,步长这一项是可以忽略的,但是这样一下子把中间项给忽略了,就比较难受
octave:19> ones(2,3)
ans =
1 1 1
1 1 1
octave:20> 2*ones(2,3)
ans =
2 2 2
2 2 2
octave:21> zeros(2,3)
ans =
0 0 0
0 0 0
octave:22> rand(2,3)
ans =
0.089023 0.089996 0.108733
0.808496 0.961550 0.508956
%如果我们给只出一个参数,那么它会自动生成一个n*n 的一个矩阵
octave:1> rand(3)
ans =
0.65676 0.64577 0.53442
0.11735 0.23649 0.45517
0.70716 0.46710 0.84682
octave:26> w = -6 + sqrt(10)*(randn(3,2)) %生成一个以-6为均值的10为方差的3*2矩阵
w =
-1.6360 -3.2193
-3.5828 -3.4949
-5.7931 -11.9905
octave:24> hist(w)
octave:28> eye(3)
ans =
Diagonal Matrix
1 0 0
0 1 0
0 0 1
octave:32> who
Variables in the current scope:
A B C V a ans w
octave:35> whos
Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
A 3x2 48 double
B 2x3 48 double
C 1x3 24 double
V 1x6 24 double
a 1x1 8 double
ans 1x1 8 double
w 3x2 48 double
Total is 29 elements using 208 bytes
octave:33> size(A)
ans =
3 2
同时外面还可以索引出相应的维度数
octave:34> size(A,1)
ans = 3
octave:36> clear(A)
error: clear: all arguments must be strings
octave:36> clear A
clear %这将会删除所有的变量
B =
2 2 2
2 2 2
octave:40> D = B(1:2)
D =
2 2
octave:41> D = eye(3)
D =
Diagonal Matrix
1 0 0
0 1 0
0 0 1
octave:42> save hello.mat D
octave:46> load hello.mat D
octave:47> D
D =
Diagonal Matrix
1 0 0
0 1 0
0 0 1
octave:48> clear D
octave:49> load hello.mat A
error: load: empty name keyword or no data found in file 'hello.mat
%可以看出,就算是重新加载文件也不能随便的乱赋值的
octave:53> save hello.txt D -ascii
%此命令使得文件以可见的形式进行存储了
octave:54> A = [1 2 ; 3 4 ;5 6]
A =
1 2
3 4
5 6
octave:55> A(3,2)
ans = 6
% :代表一行或者一列
octave:56> A(:,2)
ans =
2
4
6
octave:57> A(3,:)
ans =
5 6
%高级用法,取出第1,3行的所有数据
octave:59> A([1 3],:)
ans =
1 2
5 6
%在矩阵的右面再加一列的操作
octave:61> A = [A,[30;40;50]]
A =
1 10 30
3 11 40
5 12 50
%赋值给索引,实现列数增加,这种方法比较好理解
octave:60> A(:,2) = [10,11,12]
A =
1 10
3 11
5 12
octave:62> A(:)
ans =
1
3
5
10
11
12
30
40
50
C = [A B] %将B拼在A的右面
C = [A,B] %将B拼在A的右面(这样比较好理解)
C = [A ; B] %将B拼在A的下面
octave:64> -A
ans =
-1 -10 -30
-3 -11 -40
-5 -12 -50
octave:67> abs(-A)
ans =
1 10 30
3 11 40
5 12 50
octave:65> log(A)
ans =
0.00000 2.30259 3.40120
1.09861 2.39790 3.68888
1.60944 2.48491 3.91202
octave:69> A + 2*ones(size(A,1),size(A,2))
ans =
3 12 32
5 13 42
7 14 52
octave:71> A+2
ans =
3 12 32
5 13 42
7 14 52
octave:72> A'
ans =
1 3 5
10 11 12
30 40 50
octave:73> (A')'
ans =
1 10 30
3 11 40
5 12 50
octave:76> B = A(:)
B =
1
3
5
10
11
12
30
40
50
octave:77> [val,ind] = max(B)
val = 50 %第一位表示的是最大值
ind = 9 %第二位表示的是最大值所在列的位置
%如果是取矩阵的最大值,那么实际上是得到每一列的最大值
octave:78> max(A)
ans =
5 12 50
octave:80> A<12
ans =
1 1 0
1 1 0
1 0 0
octave:83> B = magic(3)
B =
8 1 6
3 5 7
4 9 2
%可以看出实际上(r,c)代表find到的数的坐标
octave:85> [r,c]=find(A<12)
r =
1
2
3
1
2
c =
1
1
1
2
2
%可以看出实际上是返回的各列的和
octave:87> sum(A)
ans =
9 33 120
%可以看出实际上是返回的各列的乘积
octave:88> prod(A)
ans =
15 1320 60000
octave:89> A+0.5
ans =
1.5000 10.5000 30.5000
3.5000 11.5000 40.5000
5.5000 12.5000 50.5000
octave:90> floor(A)
ans =
1 10 30
3 11 40
5 12 50
octave:94> ceil(A)
ans =
2 11 31
4 12 41
6 13 51
octave:15> pinv(b)
ans =
0.147222 -0.144444 0.063889
-0.061111 0.022222 0.105556
-0.019444 0.188889 -0.102778
octave:24> t = [0:0.01:0.98]; %生成横坐标
octave:25> y1 = sin(2*pi*4*t); %正弦函数
octave:26> y2 = cos(2*pi*4*t); %余弦函数
octave:27> plot(t,y1); %绘图
octave:28> hold on; %在原图像基础上进行绘图
octave:29> plot(t,y2,'r'); %绘制余弦函数图像并设置颜色为红色
octave:30> xlabel('time') %设置x轴标签为time
octave:31> ylabel('value') %设置y轴标签为value
octave:32> legend('sin','cos') %为图像添加标记
octave:34> title('My Plot') %设置图像的标题
octave:35> pwd %查看当前的目录
ans = C:\Users\浜庢捣娲
octave:36> cd 'E:\AI' %更改目录
octave:37> pwd
ans = E:\AI
octave:39> print -dpng 'My Plot.png' %以png的形式存储图片
octave:43> figure(1):plot(t,y1)
ans = [](1x0)
octave:44> figure(2):plot(t,y2) %可以实现同时绘制两个图
ans = [](1x0)
octave:45> figure(yo):plot(t,y2) %另外()里面需要数字
error: 'yo' undefined near line 1 column 8
octave:46> subplot(1,2,1) %把显示窗口分为1*2 的样式,取第一块
octave:47> plot(t,y1) %绘制正弦图
octave:48> subplot(1,2,2) %把显示窗口分为1*2 的样式,取第二块
octave:49> plot(t,y2,'r') %绘制余弦图
octave:50> axis([0.5 1 -1 1]) %修改x,y轴的刻度
octave:52> a=1,b=3 %同时执行多条语句,并展示
a = 1
b = 3
octave:53> a=1;b=3
b = 3
octave:54> a=1;b=3; %同时执行多条语句,不展示
octave:55> a=1,b=3;
a = 1
%可以看出后面带了分号就不会展示了