Octave常用操作函数和技巧汇总


% 注释标识

基本运算
逻辑运算: 
1==2 返回0,即false
~= 不等于
&&  ||  XOR()

输出或打印控制:
赋值后加分号将不在屏幕上打印任何内容如, 比较a=3; a=3 的区别
Disp(sprint(‘2 decimals: %0.2f’,a)))  或命令行中 format long,  format short

矩阵生成:
A=[1,2; 3,4;5,6]  V=[1,2,3]

  V=1:6  -->  [1,2,3,4,5,6]
  V=1:0.5:2  --> [1,1,5,2]      % ::中间的为步长
  Ones(2,3) , Zeros(2,3)      %2*3 元素数均为1或0的矩阵
  Rand(3,3)       % 3*3 数值介于0~1的矩阵
  Randn(1,3)     %均值为0,方差为的高斯分布变量

  Eye(3)             %生成单位矩阵,对角线上是1 

获取矩阵属性:
Size(A)   %行列值,如3*2 的3,2
Size(A,1)     %行数
Size(A,2)     %列数
Length(A)    %最大维度的大小,如3
Length([1;2;3;4;5])   %返回5, 这里数据是向量,不是矩阵


加载或保存数据:已有一些保存数据的文件,如mydata.dat
到保存文件的路径中,命令行中输入  mydata.dat 或load(“mydata.dat”)

Who     %显示当前workspace中的变量名
Whos    %显示当前workspace中的变量名、维度、容量及统计信息
Clear var_name   %清除某个变量名
Clear            %清除workspace中所有变量

V=mydata.dat(1:10)    %取前10个数据存在V中
Save hello.mat V       %保存变量V到hello.mat文件中
Save hello.txt v –ascii     %保存成文本文档

作数据:A为3*2矩阵
A(3,2)      %第三行第二列的元素
A(2,:)      %第二行的所有元素,A(:,2) 第二列的所有元素,:冒号表示该行或列的所有元素
A([1,3],:)    %A中第一个索引值为1和3的元素
A(2,:) = [4,6]    % 为第二行赋值
A=[A,[3,5,7]]     %在A右边新增一列,变成3*3
A(:)            %把A中所有元素变成一个单独的列向量,即6*1(未扩展右边一列的情况下)
C=[A B] 或[A,B] %A 3*2, B3*2, C为3*4, 矩阵合并
C=[A;B]          %C为6*2, 分号表示换到下一行
D=A+ones(length(A),1)    %A的每个元素加1,或 D=A+1

Val=max(A)       % 每列的最大值形成的向量给val
[val, index] = max(A)   %j最大值给val, 对应的index给indiex
Max(A,[],1),  max(A,[],2)  %分别返回每一列、行的最大值,最后形成向量
Max(max(A))   %整个矩阵的最大值, 或max(A(:))  把A转化为向量再max
Sum(sum(A.*sys(length(A)))   %求对角线的和

A < 3            %逐个元素比较,小于3的返回0,大于的返回1
[r,c]Find(a<3)       %小于3的index,行列index分别存于r,c中
A=magic(4)
Sum(A), prod(A),  %求和,求积
Sum(A,1), sum(A,2)  %每列,每行求和,1对应列,2对应行

floor(A), ceil(A)     %向上向下四舍五入

temp=pinv(A)           % 求逆,temp*A=单位矩阵

矩阵计算:
C=A*B     %满足乘法对维数的要求
C=A.*B     %元素点乘,ABC的维数相同
C=A.^2      %A的每个元素平方
C=1./A       %点除
还可以对元素使用不同的数学函数,如log(C), exp(A), abs(A), -C, 



绘图:
直方图:hist(w), hist(w, 50)   % w=-6+sqrt(10)*randn(1,10000))  符合正态分布的矩阵


Plot(x,y1), hold on,  plot(x,y2)    % hold on 将在y1的图上再画y2
Plot(x,y,’r’)   %’r’表示红色,不同字母代表不同颜色
Xlabel(‘time’), ylabel(‘value’), legend(‘sin’,’cos’), title(‘myplot’)   %x,y轴名称,图例名称,标题 
Print –dpng ‘myplot.png’   %把画的图保存下来
Close  将关掉这个图像 

Figure(1); plot(t,y1)   %显示第一张图,绘制t,y1
Figure(2); plot(t,y2)   %显示第一张图,绘制t,y2
Subplot(1,2,1)        %根据参数把图像分为1*2的格子 
Subplot(1,2,1); plot(t,y1)   %在第一个格子中画t,y1
Subplot(1,2,2); plot(t,y2)   %在第一个格子中画t,y2
Axis([0.5 1 -1 1 ])    %调整x,y的范围为x (0.5~1), y (-1~1)
Clf                    %清除一张画像

颜色格图:
Imagesc(A); colorbar,  colormap gray   %生成颜色图像,灰度分布图,并在右边加一个颜色条

逗号与分号的区别:
逗号:将多条命令写在同一行中,也可理解为连续执行;
分号:间隔为单独一条命令

控制语句:
For while if  break   continue end 
For i=1:10,  v(i)=2^I;  end;  v; 
或indices=1:10; for i=indices, disp(i);end;  

If v(1)==1, xxxxx; elseif v(2)==2 xxx; else xxxx; end; exit;    %执行完退出Octave,或quit

函数:
SquareThisNumber.m 文件
Function y = squareThisNumer(x) 
Y=X^2
或function [a,b] = squareAndCubeThisNumber(x)
a=X^2; b=x^3;

函数的搜索路径:addpath可添加相关路径; search path 进行搜索比如squareThisNumber这个函数

向量化:
H(theta)=theta(T)* X     %向量化可大大提高计算效率

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值