机器学习Class 5:Octave/Matlab编程

目录

5-1 基本操作

1.基本运算

2.逻辑运算

 3.变量赋值

4.向量与矩阵

5-2 移动数据 

1.测量数据长度

2.数据存取

5-3 计算数据

5-4  数据绘制

5-5 控制语句

1.for循环

2.while循环

3.if语句

4.if-else语句

5.定义函数

5-6 矢量


5-1 基本操作

1.基本运算

5+6

ans =

    11

>> 3-2

ans =

     1

>> 5*8

ans =

    40

>> 1/2

ans =

    0.5000
    2^6

ans =

    64

2.逻辑运算

 1==2 %false

ans =

  logical

   0

>> 1~=2 %true

ans =

  logical

   1

>> 1&&0 %AND

ans =

  logical

   0

>> 1||0 %or

ans =

  logical

   1

 3.变量赋值

>> a=3; %变量
>> b='in'; %字符串
>> disp(a) %显示
     3

>> disp(sprintf('2 decimals:%0.2f',a))
2 decimals:3.00
>> disp(sprintf('2 decimals:%0.6f',a))
2 decimals:3.000000

4.向量与矩阵

 A=[1 2;3 4;5 6] %生成三行两列的矩阵

A =

     1     2
     3     4
     5     6


V=[1 2 3] %生成行向量

V =

     1     2     3


>> W=[1;2;3] %生成列向量

W =

     1
     2
     3


V=1:0.1:2 %从1起始每间隔0.1列写一个数,直到2
V =

    1.0000    1.1000    1.2000    1.3000    1.4000    1.5000    1.6000    1.7000    1.8000    1.9000    2.0000


>> ones(2,3) %2行3列的1矩阵

ans =

     1     1     1
     1     1     1



>> zeros(1,3) %1行3列的零矩阵

ans =

     0     0     0


>>  rand(1,3) %随机值在0~1之间的随机变量矩阵

ans =

    0.8147    0.9058    0.1270


>> randn(1,3) %高斯随机变量矩阵

ans =

    0.8622    0.3188   -1.3077


>> eye(5) %单位矩阵

ans =

     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0
     0     0     0     1     0
     0     0     0     0     1

5-2 移动数据 

1.测量数据长度

size(A) %返回矩阵大小
size(A,1) %返回矩阵行数
size(A,2) %返回矩阵列数

length(V) %返回向量长度

2.数据存取

>> pwd  %文件所在路径

ans =

    'C:\Users\by\Desktop'

cd %改变路径

who %显示变量 

whos %显示变量的详细内容
 
save hello.mat V; %在桌面保存一个.mat后缀的文件
load hello.mat; %加载已经保存的文件

save hello.txt V -ascii %将数据保存为ascii编码的文档

%获取数据
>> A=[1 2;3 4;5 6]

A =

     1     2
     3     4
     5     6

>> A(3,2) %获取第三行第二列的数

ans =

     6

>> A(2,:) %第2行所有元素

ans =

     3     4

>> A(:,2)=[1,3,5] %给第二列赋值

A =

     1     1
     3     3
     5     5

>> A=[A,[1;3;5]] %增加1列

A =

     1     1     1
     3     3     3
     5     5     5

>> A=[A,[1;3;5]]

A =

     1     1     1
     3     3     3
     5     5     5

>>  A(:) %A中所有元素放入一个列向量

ans =

     1
     3
     5
     1
     3
     5
     1
     3
     5

5-3 计算数据

>> A=[1 2;3 4;5 6]

A =

     1     2
     3     4
     5     6

>> B=[11 12;13 14;15 16]

B =

    11    12
    13    14
    15    16

>> C=[1 1;2 2]

C =

     1     1
     2     2

>> A*C %矩阵相乘

ans =

     5     5
    11    11
    17    17

>> A.*B %矩阵内元素相乘

ans =

    11    24
    39    56
    75    96

% .表示元素运算
 
A' %A的转置

V=[1;2;3]
max(V) %向量V最大值

>> V<3  %判断向量与设定条件大小比较

ans =

  3×1 logical 数组

   1
   1
   0

find(V<3) %找到V中所有小于3的值,返回其索引
  
magic(3) %生成幻方矩阵

>> sum(V) %向量元素求和

ans =

     6

sum(A,1) %每一列的和
sum(A,2) %每一行的和

>> prod(V) %向量元素求积


ans =

     6

a=[1;0.5;1.5;2]

a =

    1.0000
    0.5000
    1.5000
    2.0000

>> floor(a)  %向下取整
ans =

     1
     0
     1
     2

>> ceil(a)   %向上取整
ans =

     1
     1
     2
     2

rand( )  %随机矩阵

pinv( )  %逆矩阵

5-4  数据绘制

定义一个向量t及变量y1

>> t=[0:0.01:0.98];
>> y1=sin(2*pi*4*t);

若需绘制以t为横轴,y1为纵轴的曲线,则

plot(t,y1)

得到正弦曲线

 

若要绘制余弦曲线,需输入cos( )

若要两个曲线并列显示,则

>>  hold on;
>> y2=cos(2*pi*4*t);
>> plot(t,y2)

 得到

>> xlabel('time')                            %横轴标记
>> ylabel('value')                           %纵轴标记
>> legend('sin','cos')                       %曲线标记
>> title('plot')                             %图名标记
>> print -dpng 'my plot.png'                 %保存图像

 

关闭图像时使用close

 使用以下代码绘制两个图像

>> figure(1);plot(t,y1)
>> figure(2);plot(t,y2)

>> subplot(1,2,1);  %在一个1*2大小的第一个格子中绘图
>> plot(t,y1)
>> subplot(1,2,2);  %在一个1*2大小的第二个格子中绘图
>> plot(t,y2)

axis([0.5 1 -1 1]) %限定图中坐标轴范围

 

还有一些对矩阵直观感受的图

>> 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)

colorbar  %色卡
colormap gray %灰度地图

 

         

5-5 控制语句

1.for循环

>> V=zeros(10,1);
>> for i=1:10
  V(i)=2^i;
end;
>> V

V =

           2
           4
           8
          16
          32
          64
         128
         256
         512
        1024

2.while循环

>> i=1;
>> while i<=5,
V(i)=100;
i=i+1;
end;
>> V

V =

         100
         100
         100
         100
         100
          64
         128
         256
         512
        1024

3.if语句

>> i=1;
>> while true,
  V(i)=999;
i=i+1;
if i==6,
break;
end;
end;
>> V

V =

         999
         999
         999
         999
         999
          64
         128
         256
         512
        1024

4.if-else语句


>> V(1)=2;
>> if V(1)==1.
disp('the value is 1');
elseif V(1)==2,
disp('the value is 2');
else 
disp('not 1 or 2');
end;
the value is 2

5.定义函数

function y=squarethisnumber(x)   %编辑器定义函数
y=x^2;
%------------------------------------------------
>> squarethisnumber(5)

ans =

    25

5-6 矢量

设有一个线性回归假设函数

等同于

未向量化代码

>> prediction=0.0;
>> for j=1:n+1,
prediction=prediction+theta(j)*x(j)
end;

向量化代码

>> prediction=theta'*x;

梯度下降: 

 可以写为向量形式,使算法更为高效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值