Octave语法
基础操作
1.注释%
2.次方^
2^6
3.逻辑判断相等==
4.逻辑判断不等~=
5.与&&
6.或||
7.异或 xor()
xor(1,0)
8.赋值=
a=3;
b='hi';
c=3>=1;
9.变量显示disp()
或直接输出变量
a=pi;
disp(a);
disp(sprintf('2 decimals:%0.2f',a))
format long
a
10.向量与矩阵
a=[1 2;3 4;5 6] %三行两列矩阵
a=[1;2;3] %三行一列矩阵 或 三维列向量
a=[1 2 3] %三列一行矩阵 或 三维行向量
a=[1:0.1:2]%从1到2 ,步长为0.1,绘制坐标轴时有用
a=1:6 %从1到6,步长为1
a=ones(1,3) %[1 1 1]
a=2*ones(2,3) %[2 2 2;2 2 2]
a=zeros(1,3) %[0 0 0]
a=rand(1,3) %生成随机值为0到1的一行散列矩阵
a=randn(1,3) %矩阵所有值服从均值为0,方差为1的正态分布(normal distribution)
a=-6+sqrt(10)*(randn(1,10000)) %均值-6,方差 10
hist(a) %绘制10个方块的直方图(histogram)
hist(a,50) %绘制50个方块的直方图
a=eye(4) %四行四列的单位矩阵(identity matrix)
数据操作
1.维数显示size()
sz=size(a) %显示矩阵维数 [行数 列数]
sz=size(A,1) %返回显示行数
sz=size(A,2) %返回显示列数
length(a) %行、列最长的维数
2.加载数据load
load xxx.dat
3.显示所有变量who
who %显示所有工作环境中设置的变量
whos %同上,但包括具体信息
4.删除变量clear varname
5.删除所有变量clear
6.转存数值
v=priceY(1:10) %将priceY的前十个数据存到v中
7.存储数据到工作目录
save filename v
save filename v -ascii %存储为文本文件
8.索引
a(3,2) %索引(行,列),即第三行,第二列
a(2,:) %第二行所有元素 ':'表示该维所有元素
a([1 3],:) %显示第一、三行
a(:,2)=[10;11;12] %对第二列赋值
a=[a,[100;101;102]] %添加列元素
a(:) %将所偶元素转放入一个列向量
c=[a b] %将a、b两个矩阵连接在一起为c,左右排列
c=[a;b] %将两个矩阵连接在一起,上下排列
数据运算
1.矩阵乘*
a*c
2.矩阵点乘.*
a .* b %矩阵点乘,对应各个元素相乘,要求两个矩阵大小相同
3.矩阵元素乘方.^
a .^ 2
4.元素倒数./
1 ./ a %每个元素元素倒数
5.对数log()
log(a)
6.e的幂exp()
exp(a)
7.绝对值abs()
abs()
8.负数-
-a
9.加法
a+ones(length(v),1) %同v+1
10.转置'
a' %得到a的转置矩阵
11.函数操作
a=[1 15 2 0.5];
val=max(a) %返回最大值
[val,ind]=max(a) %val为最大值,ind为最大值的索引
b=[1 2;3 4]
val=max(b) %若b是矩阵,则返回每列最大元素
%a=[1 15 2 0.5]
a<3 %返回小于3的判断,0为假,1为真
find(a<3) %返回小于3的索引
A=magic(3) %产生一个3*3的魔方阵,矩阵所有行、列、对角线之和相同
%A= [8,1,6;3,5,7;4,9,2]
[r,c]=find(A>=7) %返回符合条件的元素的行列,r c 分别以列向量存储
sum(a) %求和
prod(a) %求乘积
floor(a) %去下整
ceil(a) %去上整
max(rand(3),rand(3)) %返回较大的矩阵
max(b,[],1) %返回每列最大元素,同max(b)
% [8,9,7]
max(b,[],2) %返回每行最大元素
%[8;7;9]
max(max(b)) %返回矩阵最大元素
sum(b,1) %返回每列相加值
sum(b,2) %返回每行相加值
sum(sum(b .* eye(9))) %对角线元素求和
sum(sum(b .* flipud(eye(9)))) %斜对角线元素和flipud上下翻转
12.矩阵求逆pinv()
pinv(b) %同inv(b'*b)*b'
绘图
%plotting
t=[0:0.01:0.98];
y1=sin(2*pi*4*t);
plot(t,y1); %绘图
y2=cos(2*pi*4*t);
plot(t,y2);
hold on; %在上一图中继续绘图,hold off关闭
plot(t,y2,'r') %用不同颜色绘图
xlabel('time')
ylabel('value')
legend('sin','cos')
title('my plot')
print -dpng 'myplot.png'
close
figure(1);plot(t,y1);
figure(2);plot(t,y2);
figure(1);clf; %指定某个图,clf-清空图
subplot(1,2,1) %分成1*2的图,访问第一个图
plot(t,y1);
subplot(1,2,2) %分成1*2的图,访问第二个图
plot(t,y2);
axis([0.5 1 -1 1]) %改变坐标轴x的范围为 0.5-1 y坐标轴范围 -1 - 1
%绘制矩阵
A=magic(5)
imagesc(A)
1.绘图plot()
2.在上一图中继续绘图hold on
,hold off
关闭
3.标记X坐标轴xlabel()
4.标记Y坐标轴ylabel()
5.标记图中曲线legend()
6.标记图标题title()
7.保存.png图片到工作目录print -dpng 'filename'
8.关闭图像close
9.指定图像标号figure()
10.在同一个窗口里分割为多个图像subplot()
11.改变坐标轴的范围axis()
12.绘制矩阵imagesc()
控制语句
v=zeros(10,1);
for i=1:10,
v(i)=2*i;
end;
% u can use 'break' 'continue' inside for and while loops to control execution
%while
i=1;
while i<=5,
v(i)=100;
i=i+1;
end;
%break
i=1;
while true,
v(i)=999;
i=i+1;
if i==6,
break;
end;
end;
if v(1)==1,
disp('the value is one');
elseif v(1)==2,
disp('the value is two');
else
disp('the value is not one or two')
end;
函数定义
每个函数定义在一个文件中,例如,”squareThisNumber.m”。
【注】文件名与函数名要一致
function y=squareThisNumber(x)
y=x^2;
调用函数
* 改变工作目录
cd path
* add search path
addpath('path')
savepath
* Octave可以返回多个值
function [y1,y2]=squareandCubeThisNo(x)
y1=x^2
y2=x^3