博文

投影,向量投影

图片
以下大部分内容摘自 小班得瑞 的博客,地址为: http://blog.csdn.net/a130098300/article/details/7661548 。 本文的主要内容源自 Strang教授的公开课【 麻省理工公开课:线性代数 】,公开课链接为: http://v.163.com/special/opencourse/daishu.html 。 投影,一个向量(b)在另一个向量(a)上的投影: 实际上就是寻找在a上离b最近的点。如果我们把p看作是a的估计值,那么我们定义e = b - p,称e为误差(error)。 现在,我们的任务是找到这样的p,我们可以规定p = xa(x是某个数),那么e = b - xa,因为e与p也就是a垂直,所以有aT(b - xa) = 0,展开化简得到: 将x代入到p中,得到: 我们发现,如果改变b,那么p相对应改变,然而改变a,p无变化。 有了上面的背景知识,我们可以正式进入主题了,投影矩阵(projection matrix): p = Pb, 显然这里有: 这里我们最需要关注的是投影矩阵的两个性质: 1)P' = P; 2)P ^ 2 = P; 对于第一个,很容易理解,因为P本身就是个对称阵。第二个,直观的理解就是投影到a上后再投影一次,显然投影并没有改变,也就是二次投影还是其本身。 这个投影到底有什么用呢,从线性代数的角度来说,Ax = b并不一定总有解,这在实际情况中会经常遇到(m > n)。所以我们就把b投影到向量p上,求解Ax = p。 接下来,我们可以考虑更高维度的投影,三维空间的投影是怎么样的呢,我们可以想象一个三维空间内的向量在该空间内的一个平面上的投影: 我们假设这个平面的基(basis)是a1, a2.那么矩阵A = [a1 a2]的列空间就是该平面。假设一个不在该平面上的向量b在该平面上的投影是p,那么我们就有下面这个表达式 p = x1a1 + x2a2 = Ax, 我们的任务就是找到这样的x。这里有一个关键的地方:e = b - Ax与该平面垂直,所以a1'(b - Ax) = 0且a2' (b- Ax) = 0.用矩阵的形式表达就是: A'(b - Ax) = 0. 从上面这个式子我们可

Latex编辑总结(图形大小调整+数学公式大小调整)

图片
1.控制插入图形的形状 可以首先使用 \centering 来规定图形是插入在页面的正中间。 使用 [scale=1]. 这里的scale指的是整个图形的放缩大小倍数,这里为1表示用的是原来图形的大小。 使用 [width=1cm, height=1cm]. 此命令能更加精细地控制图形形状,指定了图形的宽度和高度。 2.调整数学公式的字体大小 使用\tiny, \small, \huge 等命令来控制字体大小。具体代码如下: \begin{small} \begin{equation} \...... \end{equation} \end{small} 其中\tiny, \small, \huge相对应的字号对照表如下: \abovedisplayskip= 3pt  或者 \belowdisplayskip= 3pt 用在公式之前,可以用来控制公式距离上、下文本的距离 该方法同样适用于对于普通文本的字体大小设定 3. Beamer中使用  \hyperlink 命令进行不同frame之间的跳转 \hyperlink 的命令定义:\hyperlink{name}{text},具体实例如下: \begin{frame}[label=onelabel]   \begin{itemize}   \item<1-> 1onelabel   \item<2-> 2onelabel   \item<3-> 3onelabel   \end{itemize}   \end{frame}   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  \begin{frame}[label=twolabel]   \begin{itemize}   \item<1> First item. twolabel   \hyperlink{onelabel<3>}{\beamergotobutton{Jump to onelabel slide}}  \item<2-> Second item. twolabel

控制Matlab自启动+Matlab自动运行Parallel Computing

1.本地控制Matlab开机启动 这里主要是使用了window自带的命令: 打开运行对话框(win键+R),输入命令 shell:startup,  会直接弹出启动项对应的目录 找到自己想加入开机启动项的应用程序,以iexplore为例,在iexplore应用程序点击右键->发送到->桌面快捷方式 然后在桌面上就有了想加入开机启动项的应用程序快捷方式,到第4步时会使用到 把第3步产生的应用程序快捷方式剪切(或者复制)并粘贴到第一步打开的目录中 完成 2.启动Matlab时自动运行Parallel Computing 在Matlab的启动目录(例如,我的当前的启动目录为:D:\Program Files\MATLAB\R2016b\bin)下创建一个新的脚本文件 startup.m 在  startup.m 中输入一行命令:  parpool      即可。  完成 3.在服务器(Server)或者普通Windows版本上选择特定账户开机登入 运行注册表编辑器(WIN+R==> regedit.msc ),依次展开 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon ] 分支,然后在右侧窗口双击 “DefaultUserName“ , 接着输入你的登录用户名。如果没有预设的用户名称,可以在注册表编辑器的菜单栏点 选“编辑→新建→字符串值 (s)→DefaultUserName” 来添加这个项目,注意要区分大小 写字母。  同样在该分支下,在注册表编辑器的右侧窗口中双击 “DefaultPassword” , 然后在空白栏内输入你的密码。假如未发现“ DefaultPassword” 一项,可按上面的步骤 来新建该字符串值。 接下来在右侧窗口中双击 “AutoAdminLogon” ,将数值设置为 “1” 。假如未 发现“ AutoAdminLogon” ,可按上面的步骤来新建。 完成  4. 远程控制Windows重新启动,重启后Matlab 会跟随Windows一起启动,并自动运行Parallel Computing 按第一步配置 按第二步配置 按第三步配置 远程控制计算机重

Matlab使用技巧(expand函数+数据输出为txt格式+char函数)

1. expand()函数 这个函数能将括号内相乘的多项式(一般是用syms定义的变量)进行展开,方便查看每一项展开后的形式。 e.g. :  expand(diff(FinalFormula,p11)) 2. matlab中将数据输出保存为txt格式文件的方法 比较有效的一种方法是:fopen()+fprintf() e.g. 1: >> 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 ]; >> fid = fopen('b.txt','wt'); fprintf(fid,'%g\n',a);       % \n 是  换行  命令 ,\t是 换列 命令 fclose(fid) 介绍一下fopen()函数和fprintf()函数: 1) fopen()函数 语法1:FID= FOPEN(filename,permission) FID:是此file的ID,只是用于存储在matlab中的一个标识,可以任意 filename:即要打开的文件名称 permission:是打开方式参数。 打开方式参数由以下字符串确定:  r             读出 w             写入(文件若不存在,自动创建) a             后续写入(文件若不存在,自动创建) r+            读出和写入(文件应已存在) w+            重新刷新写入,(文件若不存在,自动创建) a+            后续写入(文件若不存在,自动创建) w             重新写入,但不自动刷新 a             后续写入,但不自动刷新 文件的存储格式:文件打开的默认方式是:二进制。以文本方式打开,可以在方式参 数“permission”中加入“t”文件将,如“rt”,“wt+” 2)fprintf()函数 fprintf函数可以将数据按指定格式写入到文本文件中。 其调用格式为: 数据的格式化输出:fprintf(fid, format, variables) 按指定的格式将变量的值输出到屏幕或指定文件 fid为文件句