吴恩达机器学习(四)——Octave(Matlab)语言2

Octave(Matlab)语言

本文中的所有Octave语言均适用于Matlab语言,很多语言和Linux命令语言类似,可以结合学习,内容较多但是很详细,适合初学者,建议收藏。很多学习笔记都在代码行注释里面了,都是心血啊~~

  • 1. 矩阵运算
  • 2.可视化数据
  • 3.控制语句
  • 4.向量化计算

1. 矩阵运算

>>A*C           %矩阵A乘矩阵B
>>A .* B        %矩阵A与矩阵B每一个对应的元素相乘,在Octave(Matlab).一般就表示元素位运算
>>A .^2         %表示矩阵A中每个元素进行平方
>>1 ./A         %表示矩阵A中每个元素取倒数
>>log(A)        %表示矩阵A中每个元素取对数
>>exp(A)        %表示矩阵A中每个元素e的幂运算
>>abs(A)        %表示矩阵A中每个元素取绝对值
>>-A            %表示矩阵A中每个元素取负数
>> v = [1;2;3]  
v =

   1
   2
   3

>> v + ones(length(v),1)  %表示对v加上(3131列且元素均为1的矩阵
ans =

   2
   3
   4
>> v + 1                  %同上效果
ans =

   2
   3
   4
>> v'                     %求矩阵的转置
ans =

   1   2   3
>> max(v)                 %返回矩阵中每一列的最大的元素值
ans =  3
>> A
A =

   11   22   33   44
   11    1   33   11
   22    3   55   22
   33    5   66   33

>> [val,ind] = max(A)     %返回矩阵中每一列的最大的元素值,以及该值对应的索引
val =

   33   22   66   44

ind =

   4   1   4   1
>> a = rand(3,4)
a =

   0.515514   0.147951   0.496869   0.184304
   0.887234   0.219841   0.457777   0.045529
   0.890830   0.192137   0.786436   0.016426

>> a < 0.1                 %判断矩阵中每个元素是否符合条件,符合返回1,否则返回0
ans =

  0  0  0  0
  0  0  0  1
  0  0  0  1
>> find(a<0.1)             %返回矩阵中第几个元素符合条件
ans =

   11
   12
>>A = migic(3)             %生成一个每行每列对角线相加都相等的矩阵 
A =

   8   1   6
   3   5   7
   4   9   2

>> [r,c] = find(A >=7)     %表示第r行第c列的元素符合条件
r = 

   1
   3
   2

c =

   1
   2
   3
>> sum(a)                     %把a中的每一列元素相加 
>> prod(a)                    %把a中的每一列元素相乘
>> floor(a)                   %把a中的元素向下四舍五入
>> ceil(a)                    %把a中的元素向上四舍五入
>> max(rand(3),rand(3))       %返回两个随机生成的矩阵对应元素相对较大的值的矩阵
>> max(A,[],1)                %取每一列的最大值
>> max(A,[],2)                %取每一行的最大值
>> max(max(A))                %求矩阵A的最大值
>> max(A(:))                  %同上,求矩阵A的最大值
>> pinv(A)                    %对矩阵A求(伪)逆

2. 可视化数据

>> t = [0:0.01:0.98];       %每隔0.01生成一个00.98的矩阵
>> y1 = sin(2*pi*4*t);      %sin函数
>> plot(t,y1)               %生成上面sin函数的图像
>> y2 = cos(2*pi*4*t);
>> plot(t,y2)
>> plot(t,y1)
>> hold on ;                %把上面的cos函数图像覆盖到sin函数图像上面
>> plot(t,y2,'r');          %把上面的cos函数图像覆盖到sin函数图像上面,'r'为使用的颜色,也可以是
>> xlabel('time')           %加横坐标名称为“time”
>> ylabel('value')          %加纵坐标名称为“value”
>>legend('sin','cos')       %对曲线进行标记说明
>> title('my plot')         %加标题 
>> print -dpng 'myplot.png' %在当前路径下,保存格式为png
                            %注意:如果保存其他路径,则在前面需要加上 cd '保存路径';
>> close                    %关闭图像
>> figure(1);plot(t,y1);    %前面加上figure()就不会覆盖掉之前的图像,而是会重新打开一个图像
>> figure(2);plot(t,y2);

吴恩达机器学习(四)——Octave(Matlab)语言2_第1张图片

>> subplot(1,2,1);plot(t,y1)     %把图像分成两部分,可以放两个图像
>> subplot(1,2,2);plot(t,y2)
>> subplot(2,2,1);plot(t,y1)
>> axis([0.5 0 -1 1])            %改变坐标轴刻度
>> clf;                          %清除图像为空白

吴恩达机器学习(四)——Octave(Matlab)语言2_第2张图片

>> A = magic(5)
A =

   17   24    1    8   15
   23    5    7   14   16
    4    6   13   20   22
   10   12   19   21    3
   11   18   25    2    9

>> imagesc(A)                          %5*5的彩色方格图像
>> imagesc(A),colorbar,colormap gray;  %5*5的灰度方格图像

吴恩达机器学习(四)——Octave(Matlab)语言2_第3张图片

3. 控制语句

基本语句:
>> v = zeros(10,1)
v =

   0
   0
   0
   0
   0
   0
   0
   0
   0
   0

>> for i =1:10;
v(i)=2^i;
end;
>> v
v =

      2
      4
      8
     16
     32
     64
    128
    256
    512
   1024

>> indices=1:10;
>> indices
indices =

    1    2    3    4    5    6    7    8    9   10

>> for i = indices,
disp(i);
end;
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
>> i = 1;
>> while i <=5;
v(i)=1000;
i=i+1;
end;
>> v
v =

   1000
   1000
   1000
   1000
   1000
     64
    128
    256
    512
   1024

>> i = 1;
>> while true;
v(i)=99;
i=i+1;
if i==6;
break;
end;
end;
>> v
v =

     99
     99
     99
     99
     99
     64
    128
    256
    512
   1024

函数调用:
调用所在路径的函数文本(.m文件)

>> addpath('路径')   %将路径添加到Octave中的搜索路径中

4.向量化计算

向量化计算会使程序运行速度更快,代码也更加优化。例如下图中,把求和转换成矩阵的转置乘矩阵。

吴恩达机器学习(四)——Octave(Matlab)语言2_第4张图片

你可能感兴趣的:(机器学习,Matlab(Octave))