Octave是一种编程语言,旨在解决线性和非线性的数值计算问题。Octave为GNU项目下的开源软件,早期版本为命令行交互方式,4.0.0版本发布基于QT编写的GUI交互界面。Octave语法与Matlab语法非常接近,可以很容易的将matlab程序移植到Octave。同时与C++,QT等接口较Matlab更加方便。
一.Octave的简单使用
变量的赋值
%后内容表示注释 ~=为不等号 &&逻辑与 ||逻辑或 xor( , )逻辑异或 format long/short控制输出格式 PSI('>>'); %简化命令行显示 a=3 %变量赋值 a=3; %末尾;可以抑制打印输出 disp(a); %打印变量值,或者直接输出字母a disp(sprintf('2 decimals: %0.2f',a)) %类似C语言的形式输出两位小数 A=[1 2;3 4;5 6] %定义一个矩阵 V=1:0.1:2 %定义一个1行11列矩阵 C=2*ones(2,3) %定义一个2行3列的矩阵,所有元素都是2 W=zeros(1,3) %定义一个1行3列的矩阵,所有元素都是0 rand(3,3) %随机赋值3*3矩阵 randn(3,3) %随机赋值3*3矩阵,符合高斯分布,平均值为0,方差为1 w=-6+sqrt(9)*(randn(1,1000)); 变量w赋值,w是一个均值为-6,方差为3的矩阵 hist(w) %画直方图,hist为统计函数,默认统计10个区间中,出现w的个数,纵轴值为个数 eye(4)%设置4阶单位矩阵
数据的处理
pwd命令显示当前路径 cd命令转换路径 ls命令显示文件列表 who命令显示工作空间中的变量 whos命令显示变量的详细信息 clear features X删除变量X 导入数据命令load featuresX.dat或load('featuresX.dat') clear命令清空工作空间中所有变量 size(A) %求矩阵的维数,返回的值也是一个矩阵,也可用于求向量的维数 length(v) %求向量的维数,一般不用于矩阵 v=priceY(1:10) %将priceY中前10个数据存入v中 save hello.mat v; %将v的数据存入硬盘中,.mat格式文件按照二进制形式存取,占用空间小 save hello.txt v -ascii %将v中的数据按照字符形式进行存储 A(3,2) %矩阵A3行2列的元素值 A(2,:) %矩阵A2行上所有元素的值 A([1 3],:) %矩阵A中1,3行所有元素的值 A(:,2)=[10;11;12] %对矩阵A第二列所有元素重新赋值 A=[A,[1;2;3]] %矩阵A新增一列 A(:) %将矩阵A中元素按列拼接,输出一个向量 C=[A B] %将矩阵A,B左右拼接 C=[A;B] %将矩阵A,B上下拼接 A.*B %矩阵A,B同阶,对应元素相乘 A.^2 %矩阵A中元素做平方 1./A %矩阵A中元素取到数 log(v) %求自然对数,e为底 exp(v) %求指数 abs(v) %求绝对值 A`为A的转置 pinv(A)为A的逆 val=max(a) %返回向量中的最大值 [val ind]=max(a) %返回向量中的最大值和最大值的索引 a<3 %该操作对向量中的元素逐个进行比较 find(a<3) %显示满足条件的下标 A=magic(3)%生成一个3*3维的magic matrix,每行每列值的和相等 [r,c]=find(A>7) %返回满足条件的行列向量索引 sum(a) %将向量所有元素值相加 prod(a) %求向量所有元素值的乘积 floor(a) %将所有元素指向下取整 ceil(a) %将所有元素值向上取整 max(A,[],1) %求每列最大值 max(A,[],2) %求每行最大值 max(max(A)) %求矩阵A中的最大值,也可写为max(A(:)) sum(A,1) %求矩阵A每列的和 sum(A,2) %求矩阵A每行的和 sum(sum(A.*eye(9))) %计算对角线值的和 sum(sum(A.*flipud(eye(9)))) %计算反向对角线的和