机器学习(吴恩达Octave中的方法及代码总结)

在Octave中
+,-,*,/,^,==,&&,||均是正常使用
xor(0,1) %异或 结果:1
~= %表示不等号
% 是注释作用
PS1('>>') %会隐藏Octave命令窗口中每一行的版本信息
; %表示该句在按下回车键后不会输出 抑制打印输出

>>a=3
a=3
>>a=3;
>>a
a=3
------------
>>c=(3>1);
>>c  %输出结果会是c=1  这里的1表示为真
c=1  
------------
>>a=pi;  %pi表示圆周率
>>a
a=3.1416
>>disp(a); %这里的disp相当于打印
a=3.1416
>>disp(sprintf('2 demical is %0.2f',a))
2 demical is 3.14
>>format long 
>>a
a=3.14159265358979
>>format short
>>a
a=3.1416
---------------
A=[1 2;3 4;5 6] %会输出一个3行2列的矩阵,内容是A中的内容,矩阵中的;相当于矩阵中的换行
A=[1 2;
   3 4;
   5 6 
  ]  %同上
A=[1 2 3] %1行3列 内容:矩阵中的内容
A=1:0.1:2 %会得到一个1行11列的矩阵,从1开始,到2结束,中间每次的步长是0.1
>>A=1:6  
A=
   1 2 3 4 5 6
ones(2,3) %生成一个2行3列的矩阵,矩阵中的内容都是1
2*ones(2,3) %生成一个2行3列的矩阵,矩阵中的内容都是2
zeros(2,3) %生成一个2行3列的矩阵,矩阵中的内容都是0
rand(2,3) %生成一个2行3列的矩阵,矩阵中的内容都是从0-1之间的随机数
randn(2,3) %生成一个2行3列的矩阵,矩阵中的内容都是来自三个值:一个平                  值为高斯分布、方差或等于1的标准偏差
w=-6+sqrt(10)*randn(1,1000);
hist(w) %会绘制一个直方图 这里的方差就是10,标准差是10的平方根
hist(w,50) %绘制一个直方图,直方图的的条数为50
eys(4) $会生成44列的单位矩阵
A=[1 2;3 4;5 6]
size(A) %输出A的尺寸大小,3 2
s=size(A) %使用某个变量接收的话,该变量会变成相应的矩阵,内容是A的尺寸大小
size(s) %输出的是s的尺寸大小,1 2
length(A) %会返回最大维度 这里是3
pwd %会输出当前Octave的路径
cd 路径 %会转到指定的路径位置
list %会列出该路径下所有的文件

    >>load 文件名 %会将文件中的内容读到Octave中
    >>load('文件名') %同上
>>who %会显示当前Octave中存储的变量
>>变量名  %会显示该变量中内容,包括刚才读入的文件名,输入文件名的话,会显示文件中内容
>>whos %会显示Otave中存储的变量详细信息,包括:size(维度),Bytes(占据的空间),Class(里面的数据类型)
>>clear 变量名 %会删除指定为变量
可以将指定变量中的内容存储到新的变量中
>>v=Price(1:10) %会将Price中1-10条的内存存储到v中
>>save hello.mat v; %会将v变量中的内容存成一个名为:hello.mat的文件,文件中的内容就是v中的内容
>>clear %按下回车键会清空所有的变量
>>save hello.txt v  -ascii %会将v中的内容按照ascii的形式存储到hello.txt中
        A=[1 2;3 4;5 6]
        >>A(3,2) %索引到第3行第2列,输出6
        >>A(2,:) %会输出第2行所有列的元素
        >>A(:,2) %会输出第2列所有行的元素
        >>A([1 3],:) %会输出第1行、第3行所有列的元素
        >>A(:,2)=[10;12;13] %会将第2列替换成10;12;13
        >>A=(A,[100;200;300]) %会在最右边添加一列,100;200;300
        >>A(:) %会输出A中的所有元素,并放入同一列中进行输出

        A=[1 2;3 4;5 6]
        B=[11 12;13 14;15 16]
        >>C=[A B] %会将AB横向连接起来
        >>C=[A;B] %会将AB纵向连接起来
        [A,B][A B] 结果一样

        A=[1 2;3 4;5 6]
        B=[11 12;13 14;15 16]
        C=[1 1;2 2]
        >>A*C %表示A,C两个矩阵相乘
        >>A .*B %表示A矩阵中的内容和B矩阵中的内容对应相乘
        >>A .^2 %表示A中元素的平方 .一般表示元素位运算
        >>1 ./A %表示对A中的元素求倒数
        >>exp(A) %表示以A中的元素为基准,求每个e的次方
        >>abs(A) %对A中的每个元素求绝对值
        >>-A %相当于-1*A
        >>A+ones(length(A),2) %对A中的所有元素加1 length(A)是求的A的最大维度
        >>A+1 %也是相当于A中的没个元素加1

        >>A' %A的转置。这里的单引号是左单引号

        a=[1 15 2 0.5]
        >>val=max(a) %输出的就是该矩阵中元素的最大值
        val=15
        >>[val,ind]=max(a) %输出的是矩阵中的最大值以及最大值的索引
        val=15
        ind=2
        >>a<3 %将矩阵中的元素分别和3进行比较,小于3为真,输出1;大于3为假,输出0
        ans=
            1 0 1 1
        >>find(a<3) %将会返回输出小于3的索引下标
        ans=
            1 3 4

        >>A=magic(3) %会输出一个3行3列的矩阵,成为魔幻矩阵,但是这个矩阵的每一行、每一列、每
                %条对象上的元素加起来均相等

        a=[1 15 2 0.5]
        >>sum(a) %求和
        >>prod(a) %求矩阵中元素的乘积
        >>floor(a) %将矩阵的元素向下四舍五入
        >>ceil(a) %将矩阵的元素向上四舍五入

        >>rand(3) %生成一个3行3列的矩阵,内容:0-1
        >>max(rand(3),rand(3)) %生成一个3行3列的矩阵,但是每一元素去的是相同位置上的最大值

        A=[8 1 6;3 5 7;4 9 2]
        >>max(A,[],1) %输出每一行(第一维度)的最大值
        ans=
            8 9 7
        >>max(A,[],2) %输出每一列(第二维度)的最大值
        ans=
            8
            7 
            9
        >>max(A) %没有指出,默认情况是输出每一列的最大值
        >>max(max(A)) %输出的矩阵的中的最大的一个值
        同样可以先把矩阵的中内容转换成一列,再求矩阵中的最大值
        >>max(A(:))

        对于这个魔幻矩阵
        >>sum(A,1) %求解的是的第一维度(每行)的和
        >>sum(A,2) %求解的是的第二维度(每列)的和
        至于每一个对角线的和的求法如下:
        >>eye(3) %先创建一个3*3的单位矩阵
        >>A .*eye(3) %矩阵中对应位置的内容相乘,得出矩阵对角线上的内容
        >>sum(sum(A .*eye(3))) %就会求出矩阵对角线上的和 这是求得是从左上到右下对角线的和
        >>sum(sum(A .*flipub(eye(3)))) %求的是左下到右上的对角线的内容  flipub作用就是将对角线反转

        >>temp=pinv(A) %求的是A的逆矩阵
        >>temp*A %会求出一个单位矩阵
-----------------------------------
        -----------------------------------
        >>t=[0:0.1:0.98]
        >>y1=sin(2*pi*4*t)
        >>plot(t,y1) %会画出几个sin的正弦函数
        >>y2=cos(2*pi*4*t) 
        >>plot(t,y2) %会画出几个sin的余弦函数
        但是这两个函数并不会同时存在,后面的会覆盖上一个
        下面是将两个函数同时画在一张图上
        >>plot(t,y1)
        >>hold on;
        >>plot(t,y2,'r') %r 表示红色  此时两幅图就会显示在同一图上
        >>xlabel('time') %设置x轴的标签名
        >>ylabel('value') %设置y轴的标签名
        >>legend('sin','cos') %会在合适分别为两幅图的进行区分表明
        >>title('my plot') %设置该图的名字
        >>cd C:\User\Desktop; print -dpng 'myPlot.png' %会先转到桌面,并将该图片存储为png格式
        >>close %会关闭打开的图

        >>figure(1);plot(t,y1) %绘制第一张图,并打开
        >>figure(2);plot(t,y2) %绘制第二张图,并打开
        >>subplot(1,2,1); %将图分成1行两列的小格子,现在是占据第一个格子
        >>plot(t,y1) %将会在第一个格子上显示相应的图
        >>subplot(1,2,2); %将图分成1行两列的小格子,现在是占据第二个格子
        >>plot(t,y2) %将会在第二个格子上显示相应的图
        >>axis([0.5 1 -1 1]) %会将此图横轴坐标范围变成0.5~1 纵轴坐标范围变成-1~1
        >>clf; %会清空整个图像上的所有内容

        >>A=magic(5)
        >>imagesc(A) %会绘制一个5*5的色彩格子,每个格子对应不同的坐标范围
        >>imagesc(A),colorbar,colormap gray; 会绘制一张图,同时在右侧有一个颜色柱,该柱是灰色的
============================
        循环:
        >>for i=1:10,
        >     v(i)=2^i
        > end;
        >>v %就会纵向输出v的值

        >>indices=1:10
        >>indices %就会横向输出1~10的值
        >>for i=indices,
        >     disp(i)
        > end; %此时的输出结果和上面的相同

        >>i=1
        >>while i<+5,
        >     v(i)=100;
        >     i=i+1;
        > end;
        >>v %前五项输出100,将上面的v的强五项覆盖

        >>i=1
        >>while true,
        >     v(i)=999;
        >     i=i+1;
        >     if i==6,
        >          break;
        >     end;
        > end;
        >>v %前五项输出999,将上面的v的强五项覆盖

        >>v(1)=2
        >>if v(1)==1,
        >      disp('this is one');
        > elseif v(1)==2,
        >      disp('this is two');
        > else
        >      disp('this is three')
        > end;
        this is two
        退出Oatave的话可以使用:exit或quit

猜你喜欢

转载自blog.csdn.net/ShaoDu/article/details/82312612
今日推荐