我们数字信息处理的老师给我们顺带讲了一下MATLAB,我发现它很好用,而且很有用,对数学专业的学生至少很有用,而且功能实在强大。
MATLAB很容易上手,至少我这么认为,做软件的有一大忌:上手难,不管什么软件,系统软件,应用软件都是这样,就像微软用一只小老鼠横扫个人电脑市场一样,它赢就赢在‘那实在是太容易操作了’,让计算机这么一个半个世纪前还只能被少数精英掌握的东西现在却如此普及!难道你要在你卖电脑的时候,给用户解释,计算是怎么组成的啊,什么是磁盘啊,什么是文件啊,操作系统又是什么,哦,太多问号了,我不买了~~~~呵呵
发现现在中文著的《MATLAB教程》之类的书很多,其实没必要,这款软件也非常容易上手,简直是太容易了,并没有你想的那么难用。从网上抓个MATLAB7下来,装进你的计算机,大概要2G左右的,然后进‘开始’-‘程序’-‘MATLAB7’-开始你的奇幻数学旅行吧!打开手,它有欢迎窗口,然后会提示,你是First time user吗?是的,OK,点Getting start with matlab!,多么好的一本多链接式电子书啊,而且写得很好,也有sample,相当简单。
MATLAB的名字是两个词的缩写‘Matrix’和‘Labrary’,也就是‘矩阵实验室’,照帮助你的解释,也就是说,在这里,你最好把任何东西都想像成‘矩阵’,这里全是‘矩阵’,运算符也大部分是面向矩阵的,矩阵也就是一个元素集E的E^(n*m)空间,从本质上看它和E^N空间是对等的,只是思考的方式不同,比如如果n=1或者m=1就是一个数组,一个向量,如果n=m=1就可以‘看成’一个元素。
MATLAB不算是严格意义上一门语言,应该看成一个工具,但是它也可以写代码,它的程序语法比较简单,语法80%像C,20%像BASIC,也可以觉得是综合了各自的优点,反正目的只是为了让它更容易和更简单的表达,它的M函数很强大,让你轻轻松松做出很复杂的事来。
比较喜欢它的绘图功能,今天写了一个函数:
function earth(n,m,tag)
if(nargin < 2 || nargin > 3)
error('Format error! earth(n,m,tag)');
return
end
th=(0:n)'./n*(pi);
ph=(0:m)./m*(2*pi);
x=sin(th)*cos(ph);
y=sin(th)*sin(ph);
z=cos(th)*ones(size(ph));
if nargin == 2
mesh(x,y,z);
elseif nargin == 3
if strcmp(tag,'plot3')
plot3(x,y,z);
elseif strcmp(tag,'mesh')
mesh(x,y,z);
elseif strcmp(tag,'surf')
surf(x,y,z,'FaceColor','red');
elseif strcmp(tag,'surfl')
surf(x,y,z,'FaceColor','red','EdgeColor','none');
camlight left;
lighting phong;
end
end
它原来是想设计用来画球体的,你可以用sphere.m提供的来画,当然,它也是一个M函数,你可以看到它的代码。我这个功能差不多,三个参数的意义是,n是纬线的条数-1,包括极点的那个‘圈’,m是经线的条数,你适当控制n和m会画出一些意想不到的图形,而tag是以某种方式生成3D图形,plot3是条线,拆线,mesh是网格,surf是四边形表面,surfl差不多,只是打了光的效果。
earth(2,3,'surf')
可以证明它是正六面体吗?
earth(20,3) %默认是mesh
把纬线增加,相当于让它均匀化,这个形状挺好看的
earth(40,3,'surfl')
看清楚样子了吗?
earth(2,4,'surf')
应该是正八面体,我想。
earth(20,4,'plot3')
plot3是画拆线,这个像不像CCTV的图标?是两个圈套在一起的形状。
earth(2,40,'surfl')
像陀螺,两个圆锥面倒装在一起。
earth(20,20)
网格球体,像地球仪吧。
earth(20,20,'surfl')
光溜些。
好了,不玩了,睡觉了,那个程序很简单,从球坐标系变过来就行了。