Octive语言
1、基本语法
(1)数学运算
>>5+5
ans = 10
>> 3-2
ans = 1
>> 2^6
ans = 64
(2)逻辑运算
>> 11==2 %逻辑运算
ans = 0
>> 2==2
ans = 1
>> 1~=2 %不等于
ans = 1
>> xor(1,0) %异或
(3)变量
>> x = 7; %加分号可抑制自动打印
>> x %不加则打印出结果
x = 7
>> x = pi;
>> disp(sprintf('4 decimals: %0.4f', x)); %转为字符串,保留后4位小数
4 decimals: 3.1416
>> disp(sprintf('14 decimals: %0.14f', x)); %转为字符串,保留后14位小数
14 decimals: 3.14159265358979
format long %控制输出长短格式的快捷命令
>> x
x = 3.14159265358979
>> format short
>> x
x = 3.1416
(4)向量&矩阵
>> v = [1 ; 2 ; 3]
v =
1
2
3
>> m = [1 : 0.1 : 1.4; %表示步幅为0.1的从1到1.4
2 : 0.1 : 2.4;
3 : 0.1 : 3.4]
m =
1.0000 1.1000 1.2000 1.3000 1.4000
2.0000 2.1000 2.2000 2.3000 2.4000
3.0000 3.1000 3.2000 3.3000 3.4000
>> w = randn(2,3) %(高斯)随机生成2by3的矩阵
w =
-0.63858 0.95909 -0.70297
-0.64368 0.28263 -0.32134
生成直方图
>>w = rand(10,9);
>> hist(w) %生成直方图
生成单位矩阵
>>i = eye(3)
i =
Diagonal Matrix
1 0 0
0 1 0
0 0 1
2、移动数据
(1)size
>>A = [1 2; 3 4; 5 6]
size(A) %返回A的尺寸,一个1*2的矩阵[m,n],表示m行n列,测试
size(size(A))
size(A,1) %返回矩阵的行数
size(A,2) %返回矩阵的列数
length(A) %返回矩阵的最大维度,此时返回3,但通常对向量执行length命令
(2)文件操作
>>pwd %%打印当前路径
ans = F:\octave-4.2.1
>>cd'目录' %进入某目录
如:
>>cd 'intel'
>>pwd
ans = C:\Users\ADMINI~1\intel
>>ls %列出当前目录和文件
load 文件名 %加载文件,注意文件编码文ANSI,不支持中文
load('文件名') %以函数的形式
如:
load featuresX.dat
load priceY.dat
(3)查看删除变量
who %显示当先工作空间储存的变量
whos %详细显示当先工作空间储存的变量
clear x %删除变量
clear %删除所有变量
(4)变量赋值
v = priceY(1:10); %将priceY变量的前10个元素存入v中
(5)保存到本地文件
save hello.mat v; %将变量v保存到文件中,以二进制形式
load hello.mat; %读取文件
sace hello.txt; %将变量v保存到文件中,以文本文件形式
(6)访问和更改矩阵行列和元素
A(3,2) %访问矩阵A的第3行第2列的元素
A(2,:) %访问矩阵A的第2行的所有元素,结果也是一个矩阵
A(:,2) %访问矩阵A的第2列的所有元素,结果也是一个矩阵
A([1 3],:) %访问矩阵A的第1和3行的所有元素
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的所有组成一列
1
10
100
3
11
101
5
12
102
C = [A B] %将矩阵直接连在一起,A在左边,B在右边;或者写成 [A, B]
C = [A; B] %将矩阵直接连在一起,A在上边,B在下边(;意味着换行)
3、数据计算
(1)矩阵乘法
A = [1 2; 3 4; 5 6]
B = [11 12; 13 14; 15 16]
C = [1 1; 2 2]
A*C
A^2 %矩阵的自身乘法(必须是方形矩阵)
(2)按元素计算
A .* B %按元素乘 %若B为标量,可以写成*
A .^ 2 %每个元素二次方,不可以简写成 ^,因为^2表示自身相乘
v = [1;2;3]
1 ./ v %v中每个元素取倒数
(3) 元素单元操作
log(v) %对每个元素取自然对数
exp(v) %每个元素作为e的指数的值
abs(v) %对每个元素取绝对值
-v %对每一位取相反数
(4)元素双元操作
>>v = [1 ;
2 ;
3];
>>length(v)
ans = 3
ones(3,1)
ans =
1
1
1
>>v + ones(length(v), 1) %等于v + [1;1;1] 等价于v + 1; v .+ 1
ans =
2
3
4
(5)矩阵的转置、翻转
A' %转置
filpud(a) %上下翻转
filplr(a) %左右翻转
(6)最大,最小,求和,乘积,取整
>> a = [1 15 2 0.5]
>> val = max(a) %对于行矩阵,取矩阵中的最大元素的值
val = 15
>> [val,idx] = max(a) %把矩阵a中最大的元素赋值给val,得到索引ids
val = 15
idx = 2
若不是行矩阵
max(a) %得到每一列的最大值,返回矩阵
max(a, b) %矩阵A、B相同位置的元素相比取大的一个(ab矩阵同大小)
max(a,[],1) %求每一列的最大值
max(a,[],2) %求每一行的最大值
sum(a) %所有元素相加得到的值
sum(a,1) %按列求和
sum(a,2) %按行求和
prod(a) %同一列的元素相乘
floor(a) %对所有元素向下取整
ceil(a) %对所有元素向上取整
(7)元素逻辑运算
a < 3 %对矩阵每个元素计算逻辑结果,输出由0和1组成的同大小矩阵
(8)查找元素
find(a < 3) %返回行矩阵满足逻辑运算的的元素的索引
[r,c] = find(A>=7) %r为满足条件的元素的行号,c为满足条件的元素的列号
(9)magic方法
A = magic(3) %生成行/列/对角 相加都等于同一值的3*3矩阵(并卵)
(10)求逆
pinv(A) %求逆,pinv(A)*A = eye(n)
4、绘制及可视化数据
(1)绘制函数
t = [0:0.01:0.98]; %定义横坐标
y1 = sin(2*pi*4*t); %定义纵坐标
plot(t, y1) %绘制二维图形,t为横坐标,y1为纵坐标
若把纵坐标改成
y2 = cos(2*pi*4*t);
plot(t, y2) %重新绘制图形,t为横坐标,y2为纵坐标
二维图被替换成了新的
此时若要同时显示两个,则
plot(t, y1) %先绘制出一个
hold on %保持图像
plot(t, y2, 'r') %绘制第二个,颜色为红
(2)给函数图添加标注
保持hold状态时,
xlabel('time') %x轴的标签
ylabel('value') %y轴的标签
legend('sin', 'cos') %给两个曲线添加标注
title('my plot') %图的标题
(3)将图保存到本地
print -dpng 'myPlot.png' %将图保存到本地
close %关闭图像
(4)将2个图像用2个窗口显示
figure(1) ;plot(t, y1);
figure(2) ;plot(t, y2);
(5)将2个图像用1个窗口显示
subplot(1,2,1); %将窗口生成1*2的格子,接下来使用第1个格子,绘制出坐标系
plot(t,y1);
subplot(1,2,2) %将窗口生成1*2的格子,接下来使用第2个格子,绘制出坐标系
plot(t,y2);
clf %清除窗口里的所有图像
(6)改变坐标系范围
axis([0.5 1 -1 1]) %横坐标范围为0.5~1,纵坐标的范围为-1~1
(7)使用色块可视化矩阵
A = magic(5) %创建幻方
imagesc(A) %使用色块绘制幻方
imagesc(A), colorbar, colormap gray %使用色块绘制矩阵A, 添加色标,将颜色映射到灰色
6、流程控制与函数
(1)基本结构与语句
控制语句 控制条件,
循环体;
end;
if else if判断语句
if 条件1,
%语句;