概述
Matlab 是一款专门用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括了 Matlab 和 Simulink 两大部分。
本场 Chat,我将带大家快速入门 Matlab,从最基础的桌面基础知识、矩阵和数组到线性代数的基础讲解,一层层地深入 Matlab。
通过本场 Chat,你们将收获:
- 线性代数基础知识;
- Matlab 的桌面基础知识;
- Matlab 在数学领域上的一些应用,包括二维三维图的绘制;
- 快速上手并入门 Matlab。
一、为什么选择 MATLAB
MATLAB 是美国 MathWorks 公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括 MATLAB 和 Simulink 两大部分。在官网的介绍中,使用 MATLAB 执行深度学习的速度比 TensorFlow 最多快 7 倍,比 Caffe2 最多快 4.5 倍,当然只是告诉咱们它很快,具体有没有,不知道。
本场 chat 的主角是 MATLAB,我使用的版本是 MATLAB R2018a,一开始下载安装的时候,全选了所有产品,结果当然是被下一页的安装大小 18+G 给吓了一跳,毕竟我这小电脑才 256G 的硬盘,勉勉强强容下了这尊大佛,他的安装也是傻瓜式的一直 next。
有一次我的舍友问我,你干嘛全部都装啊,装两个主要的和几个 tool 不就好了,我哑然一笑:“这玩意,你这样装也是要 8+G,要是以后有需要的部分还得麻烦一趟,倒不如全选了。”
一开始学 MATLAB 的目的是很简单的,指导我机器学习的导师给我俩选择 Python 和 MATLAB,因为大多数的机器学习均使用 Python,教程也是容易搜到,有个机会去接触其他语言,还有个老师随时可以询问,倒也乐得其所。
不得不说,MATLAB 的数学建模真的是让我仿佛置身在万千个函数中无法自拔,实在是太惊艳了!
这就是数学之美吧,往圣先辈苦心孤诣地发现那么多美好的公式,幻化出来的是自然的本原。接下来让我们进入 MATLAB 的入门操作。
二、MATLAB 的入门操作与线性代数:
上图就是 MATLAB 的整个界面,我觉得挺友好,当前文件夹、命令行窗口、工作区三足鼎立,上面的控制区域也是清晰明地描述了它们各自的功能。
1.使用 clc
和 clear
清空命令行窗口和工作区。当然你也可以在上面的窗口找到 “清除工作区” 和 “清除命令”,可咱们毕竟是程序员嘛,就要用程序员的手法来快速清空。
2.矩阵的输入:a=[1 2 3;4 5 6;7 8 10]
值得一提的是,中间使用分号分隔的话,a 矩阵为三行三列的方阵;中间使用逗号分隔的话,a 矩阵为一行九列的行矩阵。如果一串命令行后面紧跟 “;”,那结果将不会显示在命令行窗口中。看到这里肯定有朋友要问了,为什么 a 矩阵不直接 7,8 后面跟着 9,而要用 10,这个问题我们待会到线性代数的时候再说。对于矩阵的操作还有
a=zeros(3,3)
生成三行三列的零矩阵a=ones(3,3)
生成三行三列的全 1 矩阵a=rand(3,3)
生成三行三列的在 (0,1) 区间内均匀分布的随机阵a=eye(3)
生成三行三列的单位阵b=inv(a)
求 a 的逆矩阵并赋给 bb=a'
求 a 的转置矩阵并赋给 b ....... 3.对矩阵进行运算的方法。MATLAB 提供了大量的运算方式,其中对矩阵的操作就有若干,这里我们讲讲四则运算:
4.加减法:拿我们刚刚的那个 a 矩阵 a=a+10
即对 a 矩阵进行逐元素加 10 的操作,减法同理;现在有设 b,c 两个维数相等的矩阵,两矩阵相减,则是对应元素相减,加法同理。
b=[1 2 3;4 5 6]; c=[7 8 9;9 8 7]; b-c
5.乘除法: 在matlab中,乘法分为乘与点乘以及特殊的点乘方;除法分为左除、右除、点除;点乘、点除、点乘方的运算都是对矩阵中的每个元素分别进行相对应运算。比如:
a=[1 2 3;4 5 6]; A=a.*3
b=[1 2 3;4 5 6]; c=[6 5 4;3 2 1]; z=b./c
而乘与除则是矩阵运算,这里我们来复习一下线性代数。设有A,B两个三行三列的矩阵。
那现在讲解完乘法后,就进入到了除法的世界里啦,矩阵除法有两种,左除和右除,但在介绍这俩兄弟之前,咱们要来说说非奇异方阵,因为只有当A矩阵是非奇异方阵时,AB和B/A的运算才能实现。好!那什么是非奇异方阵呢?
若n阶方阵A的行列式不为零,即|A|≠0,则称A为非奇异方阵或满秩矩阵,否则为奇异方阵或降秩矩阵,而且只有非奇异矩阵A,才有inv(A),这也是为什么上面我用了10,而不是9的原因。
了解了这个概念之后,我们接着谈谈除法。课本上有句话这样说:如果A矩阵是非奇异方阵时,则AB和B/A的运算可以实现。AB等效于A的逆左乘B矩阵;而B/A等效于A的逆右乘B矩阵。
用代码表示如下:
`inv(A)*B` AB`B*inv(A)` B/A
有兴趣的读者可以试着上手玩玩,这数学的世界啊,奇妙无穷。
6.图像的绘制
我还记得我高中的时候,老师天天叫我们画各种函数图象,画到手软,那会儿就在想,要是有个能输入函数自动画图的软件该有多好啊!于是上网咻咻咻,当当当当——MATLAB 了解一下!
好啦,我拿上面这个复合图做个代码清单:
x1=-5:0.005:5;y1=x1.^2;plot(x1,y1,'blue')hold onx2=-3:0.005:3;y2=x2.^3;plot(x2,y2,'red')x=-5:0.005:5;y=0_x;plot(x,y,'black')y=-30:0.005:30;x=0_y;plot(x,y,'black')xlabel('x');ylabel('y');legend('x.2','x.3');
由此便得到上面这个图像了。
那要怎么做出一开始那样精美的数学三维图啊?别急,我这就贴出代码清单:
[x,y]=meshgrid(-2:0.05:2);z=x.*exp(-x.^2-y.^2);surf(x,y,z)
不禁想吟一句“镜里镜外山相似”,下句诗由读者接!
三、结语
本次 chat 分享到这里就告一段落啦,等我过段时间把蝴蝶分类识别搞定了,再开个 chat 和大家分享心得体会。我也是前几日初学 matlab,借鉴了 MATLAB 的官方文档以及网络上的一些文章,自己总结出了点儿 tips,由于是快速入门,所以很多很细的东西没有深入去讲。MATLAB 是一门很棒的数学建模语言,也希望这场 chat,可以让大家体会到数学之美,进而喜欢上数学。如果有哪些不足之处,大家可以在读者圈里跟我提出来,浅浅会虚心接受的。
本文首发于GitChat,未经授权不得转载,转载需与GitChat联系。
阅读全文: http://gitbook.cn/gitchat/activity/5ada77ddecbdde7d991cfcc0
您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。
最后
以上就是忧心发箍为你收集整理的快速入门 Matlab 与线性代数的全部内容,希望文章能够帮你解决快速入门 Matlab 与线性代数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复