美文网首页
Octave命令

Octave命令

作者: glassyw | 来源:发表于2017-09-03 23:39 被阅读147次

    基本操作:

    操作 注释
    ~= 不等于
    xor 异或
    ps1('>> '); 隐藏版本信息
    a=3; 加上;后不打印
    % 注释
    disp() 更复杂的输出
    disp(sprintf('2 decimals:%2f',a) 输出字符串
    format long 输出长字符串(小数点后十六位)
    format short 输出短字符 (小数点后四位)
    A=[1 2; 3 4; 5 6] 输入一个矩阵A(2x3),一行一行输入
    V=[1 2 3] 输入一个向量V(也可以说是一个1x3的矩阵)
    V=[1;2;3] 输入一个列向量
    V=1:0.1:2 从1开始,每次增长0.1一直到2,生成向量V=[1.00000000000000 1.10000000000000 1.20000000000000 ... 2.00000000000000]
    V=1:6 生成1到6的数形成向量,即V=[1 2 3 4 5 6]
    ones(2,3) 生成全是1的2x3的矩阵
    c=2*ones(2,3) 生成全是2的2x3矩阵
    w=zeros(1,3) 生成全是0的1x3的矩阵/向量
    w=rand(1,3) 生成全是随机数的1x3的向量/矩阵(数值0到1之间)
    w=randn(1,3) 生成平均值为0的高斯分布
    hist(w) 打印直方图(比如画出一个1x1000的随机变量w)
    hist(w,50) 打印直方图(50个条)
    eye(4) 生成一个单位矩阵I(4x4)4阶

    移动数据

    操作 注释
    size(A) 返回矩阵A的大小(3x2之类的返回[3 2])
    size(A,1) 返回矩阵A的行数
    length(A) 返回最大维数(ps:一般对向量用)
    pwd 返回当前运行所在path
    ls 可以当前path的所有目录
    load input.txt 加载数据文件
    load('input.txt') 同上
    who 显示当前Octave储存的变量
    input (这只是我的input文件名,此时成了一个变量名)显示input文件内容
    size(input) 查看input这个文件的大小
    whos 显示当前Octave存储变量的具体信息(数据类型、size、Bytes之类的)
    clear input 可以删除input这个变量
    v=input(1:3) 返回v=[1 3 5],也就是input文件的前3个数存储在向量v中
    save outputtest.txt 将数据写入硬盘,并且名字叫outputtest
    clear 清除所有变量
    A(3,2) A矩阵里第3行第2列的数
    A(2,:) A矩阵里第2行的所有数
    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左右排列)
    C=[A;B] 连接矩阵A和B形成新的矩阵C(A、B上下排列)

    ps:[A B] 与[A,B]的写法是一样的

    对数据进行运算

    操作 注释
    A*B 矩阵乘法
    A .*B A矩阵里的数乘以B矩阵里对应的数(a11 * b11)

    ps: .符号在Octave一般表示元素位运算

    操作 注释
    A .^2 A矩阵里每个元素都做平方运算
    1 ./ V 对V向量里的每一个元素求倒数
    1 ./ A 对矩阵,同上
    log(A) 对矩阵里的每个元素做对数运算
    exp(V) 对向量里的每个数做幂次运算(e为底,V里面的元素为幂)
    abs(V) 对向量里的每个数都求绝对值
    -V 取相反数
    V+ones(length(V),1) 对向量的每一个元素都+1
    V+1 同上
    A' A矩阵的转置
    max(A) 对矩阵的每列求最大值,向量就是最大值
    [val,ind]=max(a) 找出每列里面最大的并且返回索引
    A<3 对每个元素进行比较,返回0/1的矩阵
    find(A<3) 返回哪些符合条件的元素的索引
    magic(3) 生成3阶幻方(或者说魔方阵,magic square,它的所有行、列、对角线加起来都是同一个值)

    ps:这在机器学习上基本没用,但是可以很快生成一个n阶方阵哇:D

    操作 注释
    [r,c]=find(A>=7) 找出A矩阵里比7大的数的索引(r是行数,c是列数)
    help find 以后只要不记得语法就可以用help+操作命令就可以查看文档
    sum(A) 把A里面的所有元素都相加(向量),矩阵的话就是每列的相加结果
    prod(A) 把A矩阵每列的数都相乘得到一个数
    floor(A) 对A的每个元素都向下四舍五入(ps:0.9 -> 0;0.5->0)
    ceil(A) 对A的每个元素都向上四舍五入(ps:0.1->1;0.5->1)
    max(rand(3),rand(3)) 随机生成3阶随机数矩阵,每个元素都比较,每个元素都在两个矩阵中取对应的较大的那个形成新的矩阵
    max(A,[],1) A矩阵里每一列的最大值(1表示取A矩阵第一个维度的最大值)
    max(A,[],2) A矩阵里每一行的最大值
    max(A) 默认情况下,返回的是每一列的最大值
    max(max(A)) 找出矩阵里所有元素里的最大值
    A(:) 将矩阵变为列向量,一列一列排起来
    max(A(:)) 把A当成向量,找出最大值
    sum(A,1) 把每一列的数相加
    sum(A,2) 把每一行的数相加
    A .* eye(3) 得到A的对角线,其余都是0的矩阵
    sum(sum(A .* eye(3))) 得到A矩阵对角线的总和
    sum(sum(A.* flipud(eye(3)))) 得到副对角线的总和
    filpud() 向下翻转
    filpup() 向上翻转
    pinv(A) 求A的伪逆矩阵(就算不可逆也能计算)

    绘制图像

    t=[0:0.01:0.98]
    y1=sin(2pi4*t);
    plot(t,y1) #绘制x轴为t的函数图
    hold on #将新图画在旧图上
    plot(t,y2,'r') #画一条新的线在原图上,并且用红色绘制
    xlabel('time') #给x轴命名
    ylabel('value') #给y轴命名
    legend('sin','cos') #为绘制的线标记名字
    title('my plot') #为图加上标题
    print -dpng 'myplot.png' #打印绘制的图病保存为图片
    close #关闭文件
    figure(1); plot(t,y1) #给绘制的图片添加编号
    subplot(1,2,1); #将图像变成1x2的格子,前面两个参数可以调整坐标轴的大小,伸缩
    subplot(1,2,2); #在同一个平面上绘制第二张图,第三个参数为绘制的图的索引
    axis([0.5 1 -1 1]) #前两个参数设置了X轴的刻度范围,后两个参数设置了Y轴的刻度范围
    clf; #清除图像
    imagesc(A) #绘制矩阵A
    imagesc(A),colorbar,colormap gray #将绘制的图变成灰度分布图(colorbar在右边增加了一个颜色条)

    循环控制语句

    for i=1:10,
    v(i)=2*i;
    end; 遍历1到10,每次乘以2

    indices=1:10;
    for i= indices,
    disp(i);
    end; 效果同上

    i=1;
    octave:2> while i<=5,
    v(i)=100;
    i=i+1;
    end; while写法

    i=1;
    octave:7> while true,
    v(i)=999;
    i=i+1;
    if i==6,
    break;
    end;
    end; 添加了if的while

    if v(1)==1,
    disp('1');
    elseif v(1)==2,
    disp('2')
    else
    disp('else')
    end; else-if写法

    相关文章

      网友评论

          本文标题:Octave命令

          本文链接:https://www.haomeiwen.com/subject/psbfdxtx.html