Octave简明教程

作者: Pan231 | 来源:发表于2018-04-24 14:04 被阅读1987次

    这里就不介绍octave是什么了,如果你真心想学习ML的话,octave是一个可以帮助你进行计算的强大工具

    符号

    % 注释

    ~= 不等于

    ; (注意半角) 结束符号,命令行中可以不print出来

    >, < , =值得一提的是这些符号可以应用到矩阵中,可以将矩阵中的每一个元素和符号后的数字进行比较,最终判断成立返回1, 判断错误返回0,比如这样

    PS1(">> ") 可以把命令行的开始符号变成>>


    命令

    sprintf("%0.2f", a) 类似c语言中的输出
    disp() 显示字符串


    矩阵

    v = 1:0.1:2 1是开始,0.1是步长,2是结束,包括1.0,所以有11个数

    矩阵初始化
    a  = [1 2 3; 4 5 6; 7 8 9] 
    
    矩阵a

    注意一下,;代表的是换行,每一行中可以拿,隔开也可以不用,直接空开就可以。

    特殊矩阵初始化

    以下矩阵创建中第一个参数都是行,第二个都是列

    1矩阵 0矩阵 随机矩阵 方差标准差都为1的矩阵 魔法矩阵

    这个矩阵特别有意思,以第一行第一个为例,sum(第一行) = sum(第一列) = sum(第一个元素所在对角线)

    单位矩阵
    矩阵索引
    a(1,1)
    >> 1 
    a(1,2)
    >> 2 
    

    这里需要用圆括号扩起来,第一个数字是行,第二个是列,octave中是从1开始数数的而不是0

    矩阵变化

    继续拿上面的a为例吧

    重新赋值
    将第一行的值替换成10 11 12

    参数意义还是不变的,第一个代表行,第二个代表列,:表示的是所有

    添加新行/列
    添加到新列 添加到新行

    如果你仔细观察的话就会发现新列是用,(空格也行)隔开的,而新行是用;隔开的,很符合我之前提到的;换行规则吧~ 需要注意的是添加新的矩阵兼容性

    矩阵向量化

    矩阵计算

    继续拿上面的a为例吧

    矩阵相加
    全部加1
    矩阵相减
    全部减1

    矩阵相乘

    叉乘

    需要注意的是矩阵的兼容性

    点乘
    矩阵除法

    指的是给矩阵中每一个元素都除以一个相同的数字


    矩阵幂运算
    矩阵指数运算

    矩阵对数运算

    e为底的
    以2为底的

    这里用的例子还是原来的3 X 3例子并使上面的e e e


    以10为底的

    自行把2换成10就可以了


    函数

    length()

    length返回的是长度,有可能是行的个数有,可能是列的个数。这取决于那个时候更大

    max()

    对于向量来说会返回其中最大的一个数字

    对行向量来说会返回最大的一个数字

    对矩阵来说会返回一个向量,向量的每一行对应原来矩阵每一行的最大值

    返回矩阵中最大的一个数值

    返回一个行向量,对应该列最大的数,1代表列

    返回一个向量,对应该行最大的数,2代表行

    floor()

    向下圆整

    ceil()

    向上圆整

    sum()

    返回一个行向量,将每一列相加,1代表列

    返回一个向量,将每一行相加,2代表行

    flipud()

    将矩阵上下颠倒


    画图

    简单图像

    画一个二次函数吧!

    hold on %比如说我们还想在原来的基础上画一个图像
    y2 = -x .^ 2 + 1;
    plot(x, y2, 'r');
    
    % 加标签
    xlabel("x value");
    ylabel("y value");
    legend("x^2", "-x^2+1"); % 对应图中的颜色线条注释
    title("first plot");
    cd Desktop; print -dpng "firstPlot.png" %会保存到桌面上
    
    画多个图
    figure(1); plot(x, y1);
    figure(2); plot(x, y2);
    
    subplot()
    subplot(1, 2, 1);
    

    第一个和第二个参数代表的是把图分为 1 X 2, 第三个参数是使用第一个部分。

    subplot(1,2,1); %使用第一部分
    plot(x,y1); 
    subplot(1,2,2); %使用第二部分
    plot(x,y2,'r');
    
    axis([0.5 1; -1 1]);
    

    这个可以改变轴的长度,前两个是x轴,后两个是y轴,从起始长度到结束长度。

    clf

    清楚之前画过的图像

    彩色矩阵图矩阵图
    a = magic(10);
    imagesc(a);
    
    额外参数
    imagesc(a), colorbar, colormap gray;
    

    colorbar指的是右边的棒状色卡,colormap "color"指的是画面的颜色


    基本语法

    for
    for i=1:10
      disp("Hello world");
    end;
    

    不像python,octave中的for不需要缩进, 其次是赋值1:10,需要end

    while
    a = 10;
    while a > 0
      disp("HI");
      a -= 1;
    end;
    

    需要end

    if/else
    > if a > 1
    >   disp("a is bigger than 1");
    > else
    >   disp("a is smaller than 1");
    > endif;
    
    >> a is smaller than 1
    

    结束的时候是endif.

    相关文章

      网友评论

        本文标题:Octave简明教程

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