Basic Operations 基本操作

a =1.0000   15.0000    2.0000    0.5000
% ================format ================
>> format long
>> aa =1.000000000000000  15.000000000000000   2.000000000000000   0.500000000000000
% ================fprintf ================
>> fprintf('%f %f \n',1, 2);
1.000000 2.000000
% ================ ================
>> v=1:0.1:2 % start;步长;endv =1.0000    1.1000    1.2000    1.3000    1.4000    1.5000    1.6000    1.7000    1.8000    1.9000    2.0000>> v=1:6v =1     2     3     4     5     6
% ================help ================
help
A=rand(3,2);
A=randn(3,2);
w = -6 + sqrt(10)*(randn(1,10000));
hist(w); %柱状图
eye();
ones();
zeros(1,3)

Moving Data Around 移动数据

% ================A ================
>> A=[1 2;3 4;5 6]
A =1     23     45     6
% ================ size ================
>>size(A) %返回矩阵维度:行数 列数
ans = 3 2
>>size(A,1) %返回矩阵维度:行数
ans = 3
>>size(A,2) %返回矩阵维度:列数
ans = 2% ================ length================
>>v = [1 2 3 4] %返回矩阵维度:行数
v = 1 2 3 4
>>length(v) %返回矩阵最大维度大小
ans = 4
>>length(A) %返回矩阵最大维度大小
ans = 3% ================ ================
pwd %当前路径
ls %当前路径下的文件
cd %切换目录
% ================ load clear save data ================
data = load('ex1data2.txt');who %当前工作空间的所有变量whos %当前工作空间的所有变量的详细信息clear variablename %删除变量
clear variable %删除当前工作空间的所有变量>> save test.mat A
>> save testtext.txt A –ascii % save as text (ASCII)
% ================ 矩阵 Matrix================
>> A=[1 2;3 4;5 6]
A =1     23     45     6>> A(3,2) %(行,列)ans =6>> A(2,:) %第二行ans =3     4>> A([1 3],:) %select the 1st and 3rd rowans =1     25     6>> A(:,2)=[10,11,12]A =1    103    115    12>> A=[A,[101;102;103]]%append another column vectorA =1    10   1013    11   1025    12   103>> A(:) %put all elements of A into a single vectorans =135101112101102103B=[11,12;13,14;15,16]B =11    1213    1415    16>> C=[A B]C =1    10   101   11    123    11   102   13    145    12   103   15    16A=[1 2;3 4;5 6]A =1     23     45     6>> C=[A;B]C =1     23     45     611    1213    1415    16

Computing on Data 计算数据

% matlab默认 * / 是矩阵操作 .* ./是对每个元素操作
>>A
ans = 1    23    45    6>>A.*B %对应位置的数据相乘,即element productans =11    2439    5675    96>>A.^2 % 对应位置的数据的平方ans =1    49    1625   36>>1 ./A % 对应位置的数据的除法ans =1.00000    0.500000.33333    0.250000.20000    0.16667>>-A % -1 * A
ans =-1    -2-3    -4-5    -6>>abs(A) % 绝对值>> A + 1 % 或者 A + ones(3,2)ans =2     34     56     7>>A'%转置
ans =1     3     52     4     6>> A<3 %小于3的元素对应位置为1(真),否则为0(假)ans = 1     10     00     0>> find(A<3) % A中哪些元素小于3:第一个,第四个(从上到下数,列优先)ans =14A =8     1     63     5     74     9     2>> [r,c]=find(A>=6) %r是行  c是列 所以大于等于6的数的位置是 第一行第一列,第3行第2列。。。r = 1312c =1233>> a=[1 15 2 0.5]a = 1.0000   15.0000    2.0000   0.5000>> [val,ind] = max(a) % val是a中最大的数的值,ind是这个值的位置val =15ind =2>> sum(a)ans = 18.5000>> sum(A) % 默认求每列的和,相当于sum(A,1)
% 1 — Default. Returns sum of elements in each column.
% 2 — sum(A,2)Returns sum of elements in each row.每行的和ans =9    12>> prod(a) %a中元素的乘积ans =15>> prod(A) %求每列的乘积,相当于prod(A,1)
% 1 — Default. Returns prod of elements in each column.
% 2 — prod(A,2)Returns prod of elements in each row.每行的乘积
ans =15    48 >> floor(a) %取下界ans =1    15     2    0>> ceil(a)%取上界ans =1    15     2    1>> rand(3)%创建3*3的random矩阵,每个值在[0,1]之间ans =0.6463    0.2760    0.16260.7094    0.6797    0.11900.7547    0.6551    0.4984>> max(rand(3),rand(3)) %在两个random的3*3矩阵中找对应位置的maxans =0.9597    0.2238    0.50600.5472    0.7513    0.81430.5853    0.8407    0.8909>> A=magic(3)A = 8     1     63     5     74     9     2>> max(A,[],1) %找每列最大值,1表示第一维,即列ans =8     9     7>> max(A,[],2) %找每行最大值,2表示第二维,即行ans =879>> max(A) %defaultis column maxans =8     9     7>> max(max(A)) %A中最大元素ans =9>> A(:)ans =834159672>> max(A(:))ans =9>> A=magic(9) % 行,列,对角线加起来的值相等的9*9矩阵A =47    58    69   80     1    12   23    34    4557    68    79    9    11    22   33    44    4667    78     8   10    21    32   43    54    5677     7    18   20    31    42   53    55    666    17    19   30    41    52   63    65    7616    27    29   40    51    62   64    75     526    28    39   50    61    72   74     4    1536    38    49   60    71    73    3    14    2537    48    59   70    81     2   13    24    35>> sum(A,1)%column sumans =369   369   369  369   369   369  369   369   369>> sum(A,2)%sum each rowans =369369369369369369369369369>> eye(9)ans =1     0     0    0     0     0    0     0     00     1     0    0     0     0    0     0     00     0     1    0     0     0    0     0     00     0     0    1     0     0    0     0     00     0     0    0     1     0    0     0     00     0     0    0     0     1    0     0     00     0     0    0     0     0    1     0     00     0     0    0     0     0    0     1     00     0     0    0     0     0    0     0     1>> A.*eye(9)%takethe element product of the 2 matrixans =47     0     0    0     0     0    0     0     00    68     0    0     0     0    0     0     00     0     8    0     0     0    0     0     00     0    0    20     0    0     0     0    00     0     0    0    41     0    0     0     00     0     0    0     0    62    0     0     00     0     0    0     0     0   74     0     00     0     0    0     0     0    0    14     00     0     0    0     0     0    0     0    35>> sum(sum(A.*eye(9))) %sum(sum(A.*flipud(eye(9))))  ans = 369>> flipud(A) %returns X with the order of elements flipped upside down along the first dimension. 列数据颠倒,第一行的到最后一行,第二行到倒数第二行,以此类推ans =5     63     41     2 >> A=magic(3)A =8     1     63     5     74     9     2>> temp=pinv(A) %矩阵求逆 伪逆矩阵temp =0.1472   -0.1444    0.0639-0.0611    0.0222    0.1056-0.0194    0.1889   -0.1028>> temp*Aans =1.0000   -0.0000   -0.0000-0.0000    1.0000    0.00000.0000    0.0000    1.0000

Plotting Data 绘图数据

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

>> hold on;%plot new figure on the old ones
>> y2=cos(2*pi*4*t);
>> plot(t,y2,'r')

>> xlabel('time') %x坐标标签
>> ylabel('value') %y坐标标签
>> legend('sin','cos') %图例
>> title('my plot')
>> print -dpng 'myplot.png' %save as a file in default catalog
>> cd 'C:\Users\x\Desktop'; print -dpng 'myplot.png' % 保存到相应的路径
>> close %关闭图片

%分别显示两幅图像
>> figure(1);plot(t,y1);
>> figure(2);plot(t,y2)


%一幅图中显示两个subplot figure
subplot(1,2,1); % Divides plot a 1* 2 grid, access fisrt element
plot(t,y1);
subplot(1,2,2);% Divides plot a 1* 2 grid, access second element
plot(t,y2);
axis([0.5 1 -1 1]) %改变正在编辑的图的x坐标范围为[0.5 1]y坐标范围为[-1 1]
clf % clear figure


>> A=magic(5)A =17    24     1     8    1523     5     7    14    164     6    13    20    2210    12    19    21     311    18    25     2     9
>> imagesc(A) %可视化矩阵
>> imagesc(A), colorbar
>> imagesc(A), colorbar, colormap gray; % 逗号运算符,多个命令运行>> a=1;b=2;c=3; %多个命令运行,但不会输出
>> a=1,b=2,c=3 % 逗号运算符,多个命令运行,有输出a =1b =2c =3




Control Statements: for, while, if statement 控制语句:for,while,if 语句

>> v = zeros(10,1)
v =0000000000>>  for i = 1:10,v(i) = 2^i;end;
>> v
v =2481632641282565121024
% ================ ================
>> indices = 1:10;
>> indices
indices =1     2     3     4     5     6     7     8     9    10>>  for i = indices,disp(i);end;12345678910
% ================ ================
>>  i = 1;
>>  while i <=5,v(i) = 100;i = i + 1;end;
>> v
v =100100100100100641282565121024
% ================ ================
>>  i = 1;
>>  while true,v(i) = 999;i = i +1;if i == 6,break;end;end;
>> v
v =999999999999999641282565121024
% ================ ================
>> v(1)
ans =999
>>  v(1) = 2;
>>  if v(1) == 1,disp('The value is one');elseif v(1) == 2,disp('The value is two');elsedisp('The value is not one or two');end;
The value is two
% ================ function 函数 ================
function [y1, y2] = squareAndCubeThisNumber(x)
y1 = x^2;
y2 = x^3;
end[a, b] = squareAndCubeThisNumber(5);
>>b
b = 125
% ================代价函数方程 ================
function J = computeCostMulti(X, y, theta)
%COMPUTECOSTMULTI Compute cost for linear regression with multiple variables
%   J = COMPUTECOSTMULTI(X, y, theta) computes the cost of using theta as the
%   parameter for linear regression to fit the data points in X and y% Initialize some useful values
m = length(y); % number of training examples% You need to return the following variables correctly
J = 0;% ====================== YOUR CODE HERE ======================
% Instructions: Compute the cost of a particular choice of theta
%               You should set J to the cost.J = sum((X * theta - y).^2)/(2*m);% =========================================================================end

Vectorization 向量化

下图右边的是用C++的库:

梯度下降

theta=theta−alpha/m∗X′∗(X∗theta−y);

theta=theta−alpha/m∗X′∗(X∗theta−y);


Normal Equation Noninvertibility 正规方程 不可逆性

不可逆性矩阵:奇异矩阵,退化矩阵
计算逆矩阵有两个函数:pinv 和inv
区别:
- 伪逆函数pinv可以计算出θ\theta,即使 X’ * X 不可逆

不可逆的原因:

  • 特征之间不线性独立
  • 特征数量大于训练集的数量




Stanford公开课机器学习---week2-2.Matlab/Octave 快速教程相关推荐

  1. 【斯坦福公开课-机器学习】1.机器学习的动机和应用(吴恩达 Andrew Ng)

    文章目录 0三个目标 0先修课程要求 基本工具 1-网址 2-邮箱 3-本系列课程链接 1机器学习的定义 1-1非正式定义 1-2正式的定义 2监督学习(Supervised Learning) 2- ...

  2. HTML4基本编译原理,Stanford公开课《编译原理》学习笔记(1~4课)

    课程里涉及到的内容讲的还是很清楚的,但个别地方有点脱节,任何看不懂卡住的地方,请自行查阅经典著作<Compilers--priciples, Techniques and Tools>(也 ...

  3. Stanford公开课《编译原理》学习笔记(2)递归下降法

    [摘要] javascript实现递归下降语法解析 示例代码托管在:http://www.github.com/dashnowords/blogs B站地址:[编译原理] Stanford公开课:[S ...

  4. Stanford公开课《编译原理》学习笔记(1~4课)

    [摘要] 编译原理基础 示例代码托管在:http://www.github.com/dashnowords/blogs B站地址:[编译原理] Stanford公开课:[Stanford大学公开课官网 ...

  5. 虹软android工程师,虹软人脸识别技术公开课开讲!AI工程师如何快速进阶

    原标题:虹软人脸识别技术公开课开讲!AI工程师如何快速进阶 随着刷脸乘坐公交.公租房人脸识别管理系统.景区人证核验入园等创新应用的加速普及,人脸识别技术已经在广泛的行业.领域中得到使用.在见证人脸识别 ...

  6. matlab将每次迭代结果画图,机器学习-线性回归以及MATLAB octave实现

    参考资料: 斯坦福大学公开课 :机器学习课程 [第2集]监督学习应用.梯度下降 http://v.163.com/movie/2008/1/B/O/M6SGF6VB4_M6SGHJ9BO.html h ...

  7. octave运行matlab函数,机器学习-线性回归以及MATLAB octave实现

    参考资料: 斯坦福大学公开课 :机器学习课程 http://v.163.com/movie/2008/1/B/O/M6SGF6VB4_M6SGHJ9BO.html http://blog.csdn.n ...

  8. 免费公开课 | 机器学习的第二次入门

    机器学习第二次入门 AI科技大本营在线公开课第15期 主题:机器学习第二次入门 时间:9月6日 20:00-21:00 扫码添加小助手,备注:机器学习,邀你入群 入群福利:讲师交流+PPT分享+抽奖送 ...

  9. 斯坦福大学公开课机器学习:Neural Networks,representation: non-linear hypotheses(为什么需要做非线性分类器)...

    如上图所示,如果用逻辑回归来解决这个问题,首先需要构造一个包含很多非线性项的逻辑回归函数g(x).这里g仍是s型函数(即 ).我们能让函数包含很多像这的多项式,当多项式足够多时,那么你也许能够得到可以 ...

最新文章

  1. 解决第一个div浮动,后面div覆盖的问题
  2. 如何在生产环境使用Btrace进行调试
  3. php 修改文件访问时间,php获取文件的创建、修改时间及访问时间
  4. python int32 int8_python-使用numpy视图将int32转换为int8
  5. 吴恩达机器学习(十)支持向量机(SVM)
  6. 小米手机访问电脑共享文件_小米随身Wifi让手机共享电脑文件教程
  7. 实现百度语音识别功能
  8. mysql显示1146_MySQL查询报错:ERROR 1146 (42S02): Table 'craw.sitePageConfig' doesn't exist
  9. STEP和IGES模型转换为适用Web的glb格式
  10. 最小费用流算法不完全指南-2017华为软件精英挑战赛
  11. “十问”彻底弄懂APS、ERP、MES的集成问题
  12. 蜘蛛和露珠的故事(得不到的和失去的)
  13. 自己修好了乐视电视!
  14. 拳王虚拟项目公社:拳王的个人IP打造之路,助你百度霸屏,与个人成长学习经历分享
  15. 软件定义的网络(中)
  16. ubuntu 环境搭建问题归纳
  17. 浅析城市交通现状及问题
  18. 电商黑马,集体倒在2019!
  19. Excel---条件格式与公式
  20. “单模型轻量化”技术全新上线——老子云服务开发企业近600家,平台用户超10万

热门文章

  1. Linux网络编程——网络基础[1]
  2. mac android 调试快捷键,android studio mac快捷键
  3. Spring Cloud Feign原理
  4. 测试生命周期、测试过程分为几个阶段,以及各阶段的含义?
  5. 资源任你选,这几个网站你值得收藏
  6. python: 单步调试
  7. 肢体残计算机技术培训学校,浅议如何消除肢体残疾学生的心理障碍
  8. 使用GO代码实现 百度联盟媒体平台的DSA签名
  9. 哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)A-小乐乐的组合数+
  10. Linux----临界区解释