机器学习笔记第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)
向量化
使程序和计算更简单:相关文章推荐
- 用Python从零实现贝叶斯分类器的机器学习的教程
- My Machine Learning
- 机器学习---学习首页 3ff0
- Spark机器学习(一) -- Machine Learning Library (MLlib)
- 反向传播(Backpropagation)算法的数学原理
- 关于SVM的那点破事
- 也谈 机器学习到底有没有用 ?
- #ML-SDN
- TensorFlow人工智能引擎入门教程之九 RNN/LSTM循环神经网络长短期记忆网络使用
- TensorFlow人工智能引擎入门教程之十 最强网络 RSNN深度残差网络 平均准确率96-99%
- TensorFlow人工智能引擎入门教程所有目录
- Tensorflow 杂记
- 如何用70行代码实现深度神经网络算法
- 量子计算机编程原理简介 和 机器学习
- 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)
- 已经证实提高机器学习模型准确率的八大方法
- 初识机器学习算法有哪些?
- 机器学习相关的库和工具
- 10个关于人工智能和机器学习的有趣开源项目
- 机器学习实践中应避免的7种常见错误