您的位置:首页 > 其它

机器学习笔记第2周第6课octave教程和向量化

2016-07-27 17:36 507 查看

octave基本教程

不等于:~=

异或: xor(1,0)

基本操作:

>>a = pi;
>>a
a = 3.1416
>>disp(a);
3.1416
>>disp(sprintf('2 decimals: %0.2f', a))
2 decimals: 3.14
>>disp(sprintf('2 decimals: %0.6f', a))
2 decimals: 3.141593
>>fromat long
>>a
a=3.14159265358979
>>format short
>>a
a=3.1416>>A = [1 2; 3 4; 5 6];  %矩阵
>>A = [1 2;
>3 4;
>5 6];
>>
>>v = 1:0.1:2;  % 以0.1为间隔建立行向量v=[1.0,1.1,...,1.9,2.0]
>>v = 1:5;      % v=[1,2,3,4,5]
>>
>>ones(2,3)     % 二行三列的矩阵,所有元素都是1
>>c = 2*ones(2,3);
>>zeros(1,3)    %所有元素都是0
>>rand(1,3)     %随机生成元素,0到1之间的小数
>>randn(1,3)    %均值为0方差为1的高斯(正态)分布
>>
>>w = -6 + sqrt(10)*(randn(1,10000))
>>hist(w)       %画出直方图
>>hist(w,50)    %50个柱子的直方图
>>
>>eye(4)        %生成4*4的单位矩阵
>>
>>%帮助
>>help eye
>>help rand
>>help help%% dimensions
>>sz = size(A)  % 返回1x2的矩阵: [行数 列数]
>>size(A,1)     % 行数
>>size(A,2)     % 列数
>>length(v)     % 返回 max(行数,列数)

%% loading data
>>pwd           % 输出当前所在路径
>>cd 'C:\Users\ang\Octave files'   % 改变路径
>>ls                % 列出当前路径下所有文件
>>load q1y.dat      % 加载文件
>>load('q1y.dat')   % 同上
>>load q1x.dat
>>who    % 列出所有变量
>>whos   % 列出所有变量的详细信息
>>clear q1y     % 删除变量
>>clear         %删除所有变量
>>v = q1x(1:10);        % q1x的前十个元素
>>save hello.mat v;     % 把v存入文件hello.mat
>>save hello.txt v -ascii; % save as ascii
% fopen, fread, fprintf, fscanf also work  [[not needed in class]]

%% indexing
>>A(3,2)    % 索引 (row,col)
>>A(2,:)    % 获得第二行
% ":" means every element along that dimension
>>A(:,2)    % 获得第二列
>>A([1 3],:)    % 第一行和第三行的所有元素

>>A(:,2) = [10; 11; 12]     % 给第二列重新赋值
>>A = [A, [100; 101; 102]]; % 在右侧添加一列
>>A(:) % 把所有元素放入一个列向量,按列一次存入

% Putting data together
>>A = [1 2; 3 4; 5 6]
>>B = [11 12; 13 14; 15 16] % same dims as A
>>C = [A B]     % 左右连接A和B
>>C = [A, B]    % 左右连接A和B
>>C = [A; B]    % 上下连接A和B %% 初始化变量
>>A = [1 2;3 4;5 6]
>>B = [11 12;13 14;15 16]
>>C = [1 1;2 2]
>>v = [1;2;3]

%% 矩阵操作
>>A * C     % 矩阵相乘
>>A .* B    % 点乘,A中的每个元素与B中的相应元素相乘
% A .* C  或 A * B 会报错,因为维度错误
% .号一般表示元素位运算
>>A .^ 2    % A中的每个元素求平方
>>1./v      % 对每个元素求倒数
>>log(v)    % 每个元素求对数
>>exp(v)    % e的次方
>>abs(v)    % 求绝对值
>>-v        % -1*v

>>v + ones(length(v), 1)  % v中的每个元素加1
>>v + 1                   % 同上

>>A'        % A的转置矩阵

%% misc useful functions

% max  (or min)
>>a = [1 15 2 0.5]
>>val = max(a)          % a中的最大值,val = 15
>>[val,ind] = max(a)    % a中的最大值及其索引,val = 15,in = 2
>>val = max(A)          % if A is matrix, returns max from each column
>>max(A)               % 对每一列求最大值

% compare values in a matrix & find
>>a < 3        % 检查每个元素是否小于3,返回[1 0 1 1]
>>find(a < 3)  % 返回小于3的元素索引,[1 3 4]
>>A = magic(3) % 生成魔方阵,所有的行和列和对角线的元素加起来都等于相同值
>>[r,c] = find(A>=7)  % 返回大于7的元素索引,r和c都是列向量,r存放行数,c存放列数

% sum, prod
>>sum(a)    % 所有元素相加
>>prod(a)   % 所有元素相乘
>>floor(a)  % 向下舍入
>>ceil(a)   % 向上舍入
>>max(rand(3),rand(3))  %随机生成两个3*3矩阵,逐元素比较,返回结果为一个3*3矩阵
>>max(A,[],1)   % 每一列的最大值,返回值为1*n矩阵
>>max(A,[],2)   % 每一行的最大值,返回值为m*1矩阵
>>max(A)        % 每一列的最大值
>>max(max(A))   % A中的最大元素
>>max(A(:))     % 同上

>>A = magic(9)
>>sum(A,1)      % 每一列求和,返回值为1*9矩阵
>>sum(A,2)      % 每一行求和,返回值为9*1矩阵
>>sum(sum( A .* eye(9) ))           % 求对角线的和
>>sum(sum( A .* flipud(eye(9)) ))   % 另一个对角线的和
% flipup/flipud表示向上/向下翻转

% 矩阵求逆(伪逆)
>>pinv(A)        % 伪逆矩阵
>>inv(A'*A)*A'%% 绘图
>>t = [0:0.01:0.98];
>>y1 = sin(2*pi*4*t);
>>plot(t,y1);           % 画正弦图
>>y2 = cos(2*pi*4*t);
>>hold on;              % 保留正弦图,"hold off" to turn off
>>plot(t,y2,'r');       % 用红线画余弦图
>>xlabel('time');       % x轴显示label
>>ylabel('value');      % y轴显示label
>>legend('sin','cos');  % 标记两条曲线,右上角显示
>>title('my plot');     % 图的标题
>>plot(..., 'rx');      % 散点图
>>plot(..., 'rx', 'MarkerSize', 10);    % 散点图,调节点的大小为10

>>print -dpng 'myPlot.png'  % 保存图片
>>help plot             % 查看帮助,保存成其他格式
>>close;                % 关闭图片,or,  "close all" to close all figs
>>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]);   % 改变x轴和y轴的范围,x轴[0.5,1],y轴[-1,1]
>>clf;                  % 清除图像

%% display a matrix (or image)
>>imagesc(magic(5))     %绘制一个5*5的彩色格图,不同颜色对应矩阵中的不同值
>>imagesc(magic(15)), colorbar, colormap gray;  % colorbar:显示bar(不同颜色对应数值);colormap gray:黑白

% 逗号和句号
>>a=1,b=2,c=3   % 输出a=1 b=2 c=3
>>a=1;b=2;c=3;  % 不输出%% for
>>v = zeros(10,1);
>>for i=1:10,
>    v(i) = 2^i;
>end;
% Can also use "break" and "continue" inside for and while loops to control execution.

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

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

%%if
>>if v(1)==1,
>  disp('The value is one!');
> elseif v(1)==2,
>  disp('The value is two!');
> else
>  disp('The value is not one or two!');
> end;

%%函数
function y = squareThisNumber(x)
y = x^2;

%%调用函数
>>cd /path/to/function
>>functionName(args)

%%设置搜索路径,不用cd调用函数
>>addpath('/path/to/function/')
>>functionName(args)

%%返回多个参数的函数
function [y1, y2] = squareandCubeThisNo(x)
y1 = x^2
y2 = x^3
%%调用
>>[a,b] = squareandCubeThisNo(x)

向量化

使程序和计算更简单:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习