21 May 2009

查看网页最后更新日期

用JavaScript查看网页最后更新日期

在浏览器栏输入下面代码,运行即可



javascript:alert(document.lastModified)

MATLAB主要命令

MATLAB主要命令
不可多得的总结资料



1、常用信息

•         help:在线帮助(显示在命令窗)。

•         helpwin:在线帮助(独立窗口显示)。

•         ver:MATLAB及工具箱的版本信息。

2、管理工作区命令

•         who:显示当前变量。

•         whos:显示当前变量具体信息。

•         clear:从内存中清楚变量和函数。

•         quit:退出MATLAB。

3、管理命令和函数

•         what:显示当前目录下的MATLAB 文件。

•         edit:编辑M文件。edit(建立编辑新文 件);edit+文件名(编辑已有的文件)。

•         which:找出函数和文件的位置。

•         type:显示M文件内容。Type+文件名。

•         Inmem:显示内存中的函数。

4、操作系统命令

•         dir:显示目录。

•         pwd:显示当前工作目录。

•         delete:删除文件。Delete+文件名。

•         web:打开页面浏览器加载文件。

5、数据类型

•         double:双精度类型

•         sym:符号型

•         Inline:内联对象

•         char:字符数组或字符串。

•         uint8:无符号8位整数(unsigned   integer)

6、数据基本操作

•         max:最大元素。向量为数,矩阵为向量

•         min:最小元素。类似max.

•         mean:求平均值。mean(a),a为向量时得到向量平均值,结果为一个数;a为矩阵时,进行每列平均,得到一个向量。

•         sum:元素和。 sum(a),a为向量时得 到该向量各元素之和,结果为一个数;a为矩阵时,进行每列求和,得到一个向量。

•         prod:元素积。prod(a)当a为向量和 矩阵时的情况,类似于max(a)。

•         cumsum:元素累和。cumsum(a),a可为向量,也可为矩阵。

•         cumprod:元素累积。a可为向量, 也可为矩阵。

7、基本矩阵函数

•         zeros:零矩阵函数。

•         ones:全1矩阵。

•         eye:单位矩阵。

•         rand:随机数、向量、矩阵.

•         linspace:线性等分向量。

8、基本数组操作

•         size:矩阵大小。

•         length:数组长度。

•         isempty:判断是不是空矩阵。

•         isequal: 判断数组是否相等。  isequal(a,b)。

•         isnumeric:判断是否为数值矩阵。

•         reshape:矩阵重置。

•         tril:抽取下三角部分。

•         triu:抽取上三角部分。

•         fliplr:左右方向翻转矩阵(flip:翻转)。

•         flipud:上下方向翻转矩阵。

•         rot90:逆时针把矩阵旋转90度。

9、专用变量和常量

•         ans:最新答案。

•         pi:圆周率。

•         i,j:复数单位。

•         inf:无穷大。

•         NaN:不定数。

•         isnan:判断不定数。

•         isinf:判断无穷大元素。

•         isfinite:判断有限大元素。

10、指数、对数函数

•         exp:e指数函数。

•         pow2:以2为底的幂函数。

•         sqrt:平方根函数。

11、舍入函数和剩余函数

•         fix:朝零方向舍入为整数。

•         floor:朝负方向舍入为整数。

•         ceil:朝正方向舍入为整数。

•         round:四舍五入为整数。

•         sign:符号函数。

•         mod:无符号求余函数。mod(3,2)=1

•         rem:带符号求余函数。

12、复数函数

•         abs:求模。

•         conj:求共轭函数(conjugate)。

•         angle:相角函数。

•         imag:复矩阵虚部。

•         real:复矩阵实部。

•         isreal:实矩阵判断函数。

12、矩阵函数

•         norm:矩阵或向量范数。

•         normest:向量、矩阵2范数。

•          rank:矩阵的秩。

•          det:矩阵行列式的值。

•          trace:矩阵的迹(主对角线元素之和)。

•          inv:矩阵逆。

13、特征多项式、特征值

•          poly:特征多项式。

•          poly2sym:多项式表示。

•          eig:特征值和特征向量。

•         eigs:特征值。

14、矩阵函数

•         expm:矩阵指数。

•         logm:矩阵对数。

•         sqrtm:矩阵平方根。

15、坐标转换

•         cart2sph:转换直角坐标为球坐标。

•         cart2pol:转换直角坐标为极坐标。

•      pol2cart:转换极坐标为直角坐标。

•      sph2cart:转换球坐标为直角坐标。

16、坐标轴控制

•      axis:控制坐标轴范围。

•      grid on/off:栅格线保持、取消。

•      hold on/off:图形保持/取消。

•      box on/off:图形四周都显示/常规坐标轴。

例1、

•      [x,y]=meshgrid(0:0.5:10);

•      z=y.*sin(x.^2)+cos(y);

•      surf(x,y,z)

•      v=[-20,10,-20,10,-10,50];%坐标轴范围控制

•      axis(v)%注意该语句必须在图形显示语句的后面

说明:二维图形是类似的。

例2、axis(‘控制字符串’):可以选择

不同的字符串完成对坐标轴的操作。

控制字符串有:

(1)auto:自动模式,使得图形的坐标范围满足图中一切图元素。

(2)axis:将当前坐标设置固定,使

用hold命令后,图形仍以此作为坐标界限。

(3)manual:以当前的坐标限定绘制。

(4)tight:将坐标限控制在指定的数据范围内。

(5)equal:使坐标轴分度相等。

(6)off:取消对坐标轴的一切设置,包括系统的自动设置。

(7)on:恢复对坐标轴的一切设置。

•         [x,y]=meshgrid(-1:0.1:1,-1:0.1:1);

•         z=x.^2+y.^2;

•         surf(x,y,z)

•         box on



17、基本二维图形

•         plot:线性绘图。

•         loglog:双对数坐标图。

•         semilogx:半对数(x)坐标图。

•         semilogy:半对数(y)坐标图。

•          polar:极坐标图。

•          subplot:分割图窗

•          refline(slope,intercept):加参考线

18、图形注解

•          legend:图形标签.

•          xlable:x轴标签。

•          ylable:y轴标签。

•          title:图形题目。

•          text:文字注解。

19、特殊二维图形

•          bar:条形图。

•          barh:水平柱图。

•          ezplot:符号函数图。

•          fplot:绘制字符串指定的函数名的函数图。如fplot(‘sin(x)’,[2,3])。

•         pie:饼图。

•         plotmatrix:绘矩阵点图。

•         stem:2维火柴杆图。

•         stem3:3维火柴杆图。

20、等高线图和向量图

•         contour:等高线图。

•         contour3:三维等高线图。

•         quiver:向量图。

例

[x,y] = meshgrid(-2:.2:2,-1:.15:1);

z = x .* exp(-x.^2 - y.^2);

[px,py] = gradient(z,2);

contour(x,y,z),

hold on

quiver(x,y,px,py)

hold off



21、特殊三维图形

•          comet3:三维彗星轨线(comet(x,y)画二维彗星线)。

 t = -10*pi:pi/500:10*pi    

 comet3(sin(t),cos(t),t)

•          meshc(x,y,z):画出三维网格与等高线 图,类似sutfc。

•          meshz(x,y,z):增加边界面屏蔽。

•          stem3:三维火柴干图。

•          例  a=rand(3);

stem3(a);

22、固体模型

•          cylinder:生成圆柱。格式为[x,y,z]= cylinder(r,n),r为母线半    径,N为显示的母线条数 mesh(x,y,z)或surf(x,y,z)显示单位 高度柱面。

t = -1*pi:pi/20:1*pi;

r=5+cos(t);

[x,y,z]=cylinder(r,30)

surf(x,y,z)

•          sphere: 生成单位球面。例

[x,y,z]=sphere(40)  %40为子午线条 数,sphere默认为20条。

mesh(x,y,z)或surf(x,y,z)  %画球面

axis(‘equal’)     %坐标轴刻度相同

例、绕地球运动的飞行物

•         [x,y,z]=sphere(50);

•         mesh(x,y,z);

•         hold on

•         v=[-6,6,-6,6,-6,6];

•         axis(v);

•         axis('off')

•         t= 0:pi/1000:200*pi;

•         x=6*sin(t);

•         y=2*cos(t);

•         z=zeros(size(t));

•         comet3(x,y,z)

23、四维表现图

 对于三维图形自变量是二维的,对于三个自变量的函数w=fx,y,z),其其图形应该是四维的,由于我们所处的空间和思维的局限性,在计算机屏幕上只能表现出三维空间。为了表现四维图像,可利用三维实体的四维切片色图,用三维实体上的颜色来描述函数值的变化情况。

•         MATLAB中用slice函数来完成

 (1)slice(x,y,z,w,sx,sy.sz):绘制向量sx,sy,sz中的点沿x,y,z轴方向的切片图,v的大小决定了每一点的颜色。

 (2)slice(x,y,z,w,x1,y1,z1):按数组x1,y1,z1切片(按坐标轴单位)。

 (3)slice(w,x1,y1,z1):按数组x1,y1,z1切片(按x,y,z的网格单位进行切片。

 (4)slice(w,sx,sy,sz):按x,y,z的网格单位进行切片。

例、程序如下:

[x,y,z]=meshgrid(-2:0.2:2,-2:0.25:2,-2:0.16:2);

w=x.^2+y.^2+z.^2;

%slice(x,y,z,a,x,y,z)

x1=1:15;

y1=1:10;

z1=1:10

subplot(2,2,1),slice(x,y,z,w,1,1,[0,1]);

subplot(2,2,2),slice(w,1,1,[0,1]);

subplot(2,2,3),slice(x,y,z,w,x1,y1,z1);hold on

subplot(2,2,4),slice(w,x1,y1,z1);

colorbar %色轴,它可以标注颜色与数值之间的关系



24、数据文件

(1)Save(‘x1’,‘变量1’, ‘变量2’,…):把变量1,变量2,…的数据保存到名字为x1.mat的数据文件中;当变量缺省时,保存所有变量的数据。数据文件自己起名字,变量为程序中的已赋值的变量。

请看下面例子

w='Xingtai College'

x=[0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1];

y=[0.002,0.114,0.189,0.316,0.394,0.434,0.427,0.409,0.379,0.327,0.254];

a=x'*y;

save(‘x1’)%所有的变量全部保存

save(‘x2’,‘w’)%只保存w变量的数据

save('x3','w','x') %保存w,x变量的数据

save(‘x4’,‘w’,‘x’,‘y’,‘a’) %保存w,x,y,a变量的数据

%用load(‘文件名’)可把数据文件调入内存。

25、时间函数

(1)calendar:返回当前日历

(2)calendar(year, month):反回指定的年月日历。

(3) calendar(data):返回公元0000年算起的天数(data)的日历。

(4)cputime:以秒返回cpu当前时间。

(5)tic,toc启用、关闭计时器。

(6)clock: [year month day hour minute seconds]

%计算运行程序所用的时间

•         t1=clock

•         ….

•         t2=clock

•         etime(t2,t1)%elapsed time from t1 to t2或者

•         tic%打开计时器

•         …

•         toc%关闭计时器,且显示所用的时间

•         或者

•         T1=cputime

•         …

•         T2=cputime

•         E=T2-t1



说明:通过计算程序所用的时间可以来

衡量解决同样的一个问题的所编写的不

同程序的优劣。

例1、

•         t1=clock;

•         for k=1:m

•         x0=[1;0];

•         T=0.2;

•         m=1000;

•         f=inline('[-sin(t);cos(t)]');

•             x1=x0+f((k-1)*T)*T;

•             x0=x1;

•             x(k)=x1(1);

•             y(k)=x1(2);

•         end

•         comet(x,y)

•         t2=clock;

•         t=etime(t2,t1)

•         t1=clock;

•         x0=[1;0];

•         T=0.2;

•         m=1000;

•         f=inline('[-sin(t);cos(t)]');

•         for k=1:m

•             x1=x0+f((k-1)*T)*T;

•             x0=x1;

•             x(k)=x1(1);

•             y(k)=x1(2);

•         end

•         comet(x,y)

•         t2=clock;

•         t=etime(t2,t1)

Printf()输出格式控制

Printf()输出格式控制

python中也可以使用



1.转换说明符
%a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99)
%c 字符
%d 有符号十进制整数
%f 浮点数(包括float和doulbe)
%e(%E) 浮点数指数输出[e-(E-)记数法]
%g(%G) 浮点数不显无意义的零"0"
%i 有符号十进制整数(与%d相同)
%u 无符号十进制整数
%o 八进制整数 e.g. 0123
%x(%X) 十六进制整数0f(0F) e.g. 0x1234
%p 指针
%s 字符串
%% "%"



2.标志
左对齐:"-" e.g. "%-20s"
右对齐:"+" e.g. "%+20s"
空格:若符号为正,则显示空格,负则显示"-" e.g. "% 6.2f"
#:对c,s,d,u类无影响;对o类,在输出时加前缀o;对x类,在输出时加前缀0x;
对e,g,f 类当结果有小数时才给出小数点。



3.格式字符串(格式)
[标志][输出最少宽度][.精度][长度]类型
"%-md" :左对齐,若m比实际少时,按实际输出。
"%m.ns":输出m位,取字符串(左起)n位,左补空格,当n>m or m省略时m=n
e.g. "%7.2s" 输入CHINA
  输出" CH"
"%m.nf":输出浮点数,m为宽度,n为小数点右边数位
e.g. "%3.1f" 输入3852.99
输出3853.0
长度:为h短整形量,l为长整形量

14 May 2009

Matlab基本用法小结

Matlab基本用法小结

目录:
一、 说明
二、数据类型及基本输入输出
三、流程控制
四、循环
五、数组、数组运算和矩阵运算
六、M脚本文件和M函数文件、函数句柄
七、文件
八、数据和函数的可视化
##CONTINUE##

本文转自:
http://asc.2dark.org/node/44
BY:比邻星


一、说明
看了奚啸翔同学写的Fortran基本用法小结后觉得Fortran的语法既有matlab的特色也有C的
特色。于是就套用了奚啸翔同学文章的格式,写了这篇matlab基本用法小结。目的是想和
Fortran的语法有个对比,学起来更快。其实学过C、Fortran和matlab中任何一个的同学要
学其他两种语言的语法都是非常容易上手的,一天就能搞定了。有兴趣的同学还可以看看
百合Fortran版上的C、Fortran、matlab语法对比,一定能有不少收获。
此外,尽管这三种语言的语法有很多相近的地方,matlab作为数学软件有其强大的图形用
户界面操作、数据和函数的可视化和数值计算功能,且自带很多现有的函数和工具包。而
本文只涉及一些比较系统的基本操作,在最后附带介绍一些基本的数据和函数的可视化命
令。建议要用的时候再利用matlab自带的帮助文档来搜索有用的函数和工具包。matlab的
函数和命令都是比较人性化的,比如想要搜索读取fits文件的函数,搜索fits就能够搜到
fitsread函数;需要将读出的fits数据重新做图,搜索image就可以找到imagesc函数。从
书和别人的文档都只能学到有限的比较系统的操作,看帮助文档能发现更多的东西并整理
出自己的使用方法。
最后要说明的是,C必须用循环才能做到的事情Fortran和matlab用矩阵和数组运算就能做
到,相对效率提高了很多;而对于一些运算量非常大的程序还是推荐用Fortran,因为相比
之下matlab的运算速度比Fortran慢很多;而网上很多现有的天文软件包都是用fortran写
的(比如由宇宙学参数计算模拟数据的CAMB程序和宇宙模型可能性预测LIKELIHOOD程序)
,虽然matlab也有很多天文软件包,但相对fortran还是逊色不少。
二、数据类型及基本输入输出
1、数据类型,声明及赋初值
matlab中存储的数据类型(class)有以下几种:
而实际上matlab不需要对变量做声明,当它发现一个新的变量名时,将默认将其为双精度
浮点类型(double)并分配内存空间。(这比C和 Fortran方便了许多,但在完成大运算量的
程序时就显得浪费存储空间了)
当需要把变量a从double转为其他类型的时候,比如要转为int16型,可以使用以下命令:
a=int16(a)
当需要创建一个字符型变量x并对其赋初值时,用以下格式:x='字符串';
注意:
(1)在命令后加“;”表示不在command window中显示结果,而对上例来说如果不加“;”
则会显示所赋字符串内容。
(2)所有的命令必须在英文输入状态下,如果使用中文输入状态下全角的“;”,将被处
理为非法字符。
其中logical,cell和structure为逻辑,元胞和构架数组类型,将在后面的数组部分提到
;function handle为函数句柄类型,将在后面的“M脚本文件和M函数文件、函数句柄”部
分提到;java类供JAVA API应用程序接口使用,本文不进行说明。
最后说明一下,matlab也支持复数操作,赋值的时候直接输入即可,比如:a=1+2i;
2、基本输入输出
输入:v=input('message') %将用户输入的内容赋给变量v
v=input('message','s') %将用户输入的内容作为字符串赋给变量v
keyboard %用户可以从键盘输入任意多个指令
v=yesinput('prompt',default,possib)
%prompt为文字提示,default为缺省设置“值”,possib为设置值的范围。
%该指令无法在notebook中运行。
输出:disp(a)
%显示变量a的内容,另一种显示变量内容的方法是输入变量名,但是这样显示的结果带有
“a=”。
三、流程控制
1、运算符
(1)关系操作符
== ~= > >= < <=
(2)涉及相互关系的集合运算符
& | ~ xor
% xor 相异元素返回1,相同元素返回0
2、IF
(1) 基本 :
if 逻辑判断式
……
end
(2) 多重判断:
if 逻辑判断式
......
else if 逻辑判断式
......
else 逻辑判断式
......
end
end
end
3、switch-case结构
和C的switch语句一样
switch 变量
case数值1
……
case数值2
……
case 数值k %当变量等于数值k的时候,执行本组命令,然后跳出该结构。
……
otherwise
…… %该命令可以不存在,在变量不等于前面所有的检测值的时候,执行此组命
令。
end case
4、try-catch结构
try %只有当matlab执行本组命令发生错误时,后一组命令才会被执行
……
catch
…… %如果此组命令执行又出错,matlab将终止该结构。
end
%可以调用lasterr函数查询出错原因。如果函数的运行结果为一个空串,则表明这组命令
被成功执行了。
四、循环
1、while
while 表达式
……
end
2、for
for x=数值
……
……
end
%其中的数值可以是数组;或者是类似下面的表达“1:4”,表示从1到4循环;还可以是“
1:0.1:4”,表示以0.1为步长从1到4循环。
五、数组、数组运算和矩阵运算
1、 数值数组
matlab中数组不需要声明。
(1)对一维数值数组赋初值
逐个元素输入:
x=[1 2 pi/2]
冒号生成:
x=1:0.1:4
定数线性采样法:
x=linspace (a,b,n)
%相当于第一个数为a,最后一个数为b,以n为采样点数等间距采样。
x=logspace(a,b,n)
%相当于第一个数为10a,最后一个数为10b,以n为采样点数等间距采样。
(2)对一维数值数组的寻访
x(3) %寻访第三个元素
x([1 2 3]) %寻访第1,2,3个元素
x(1:3) %寻访第1到3个元素
x(3:-1:1) %由前三个元素倒排成子数组
x(find(x>0.5)) %由大于0.5的元素构成的子数组
(3)对二维数值数组赋初值
逐个赋值:
x=[1,2,3; 3,4,6; 7,8,9]
%“;”为二维数组“行”的分隔符号,而“,”和空格为同一行元素的分隔符。
整列赋值:
x(:,[4,5])=4 %第4、5列赋值为4
元素重排:
A=reshape(1:9,3,3)
%将1到9重新排列成一个(3*3)矩阵,注意matlab是列“优先”,即先排第一列再排第二
列,而不是按行来排。
(4)二维数组元素的标识和寻访
“全下标”标识:
A(3,5) %第3行第5列元素
“单下标”标识:
对于一个(m*n)维数组A中第r行第c列元素,其“单下标”表示为:A(l)
%这里l=(c-1)*m+r
2、数组运算和矩阵运算
(1)数组运算
指令
含义
A.'
相当于conj(A'),conj的作用help一下吧……
A=s
把标量s赋给A的每个元素
s+B
标量s分别与B元素之和
s-B,B-s
标量s分别与B元素之差
s.*A
标量s分别与A元素之积
s./B,B.\s
s分别被B的元素除
A.^n
A的每个元素自乘n次
A.^p
对A的各个元素分别求非整数幂
p.^A
以p为底,分别以A的元素为指数求幂
A+B
对应元素相加
A-B
对应元素相减
A.*B
对应元素相乘
A./B
A的元素被B的对应元素除
B.\A
同上
exp(A)
以e为底,分别以A的元素为指数求幂
log(A)
对A的各个元素求对数
sqrt(A)
对A的各个元素求平方根
f(A)
求A各个元素的函数值
A#B
对应元素的关系运算,#代表关系运算符
A@B
对应元素的逻辑运算,@代表逻辑运算符
(2)矩阵运算
指令
含义
A'
共轭转置
s*A
标量s分别与A元素之积
S*inv(B)
B阵的逆乘s
A^n
A阵为方阵时,自乘n次
A^p
方阵A的非整数乘方
p^A
A阵为方阵时,标量的矩阵乘方
A+B
矩阵相加
A-B
矩阵相减
A*B
矩阵相乘
A/B
A右除B
B\A
A左除B
expm(A)
A的矩阵指数函数
logm(A)
A的矩阵对数函数
sqrtm(A)
A的矩阵平方根函数
funm(A,'FN')
一般矩阵函数
3、逻辑数组
看例子就明白了:
A=zeros(2,5); %预生成一个(2*5)全零数组
A(:)=-4:5; %运用“全元素”方法向A赋值
L=abs(A)>3 %产生一个与A同维的“0 -1”逻辑值数组
islogical(L) %判断L是否逻辑值数组。输出若为1,则是
X=A(L) %把L中逻辑值为1对应的A元素取出
4、字符串数组
(1)字符串数组赋初值
S=['aa'
'bb']
或者:
S=char('aa','bb')
还可以:
S=str2mat('aa',' ','bb') %这里空串会产生空行
而:
S=str2cat('aa',' ','bb') %这里空串不会产生空行
(2) 字符串操作函数
int2str %把整数数组转换为串数组
num2str %把非整数数组转换为串数组
mat2str %把数值数组转换为串数组
%请使用help搜索其他的字符串操作函数。
5、元胞数组
元胞数组和一般数值数组和字符串数组不同,其元素可以是任意类型和大小的对象。这
和C的结构型数组有些类似。
(1)创建元胞数组
有以下两种创建方式:
外标识元素赋值:
a=char('aa' 'bb');
b=1:9;
c=2:5;
d=[1+2i];
A(1,1)={a}; A(1,2)={b}; A(2,1)={c}; A(2,2)={d};
内涵的直接赋值:
a=char('aa' 'bb');
b=1:9;
c=2:5;
d=[1+2i];
A{1,1}=a; A{1,2}=b; A{2,1}=c; A{2,2}=d;
(2)元胞数组内容的调取
注意在这里()访问的是元胞,用{}访问的是元胞中存储的内容。
比如:a=A(1,1)
显示:
a=
[12 char]
而:a=A{1,1}
显示:
a=
aa
bb
所以用{}而不是()调取元胞数组内容。
6、构架数组
构架数组和元胞数组类似,但其每个构架(地位相当于元胞数组的元胞)必须划分“域”
后才能使用。看下面的例子:
green_house(2,3).name='六号房';
green_house(2,3).param.temperature=30;
green_house(2,3).param.humidity=10;
green_house
屏幕显示:
23 struct array with fields:
name
param
注意:
(1)在一个构架上进行的增减域的操作会影响到整个数组。
(2)增减子域不会影响到其他构架。
7、空数组
(1)有下面几种产生空数组的方法:
a=[]
b=ones(2,0) %ones的作用原本是产生一个全1的数组
c=zeros(2,0) %zeros的作用原本是产生一个全0的数组
d=eye(2,0) %eye的作用原本是产生一个对角元全为1的数组
f=rand(2,3,0,4) %rand的作用原本是产生随即数组。
(2)空数组可用于子数组的删除和数组大小的收缩
A(:,2)=[]
六、M脚本文件和M函数文件、函数句柄
m文件分两种:函数和脚本。
1、matlab script file:
脚本文件没有输入输出,对工作空间(workspace)中的变量进行操作。
任何可执行的matlab命令都可以写入脚本文件。先来看一个简单的例子:
例1: 产生一个20元素的一维随机数组并画出。
解: 新建一个m文件命名为randplt.m(或者任何你喜欢的名字), 在其中加入如下两行代码
:
data=randn(1,20);
plot(data);
保存后选择debug/run菜单或按F5键运行,观察workspace中多出了一个变量data。
脚本文件执行时, 就如同将文件中的每一条命令依次输入到matlab命令行中一样, 顺次执
行。你可以尝试在command history窗口中按住ctrl键选择几行执行过的命令并单击鼠标右
键在快捷菜单中选择creat M file来快速创建一个m文件。
2、matlab function
函数文件可以接受输入和给出输出,当然也可以没有,就像c语言的函数。matlab函数最大的
书写特点(同C比起来)是它的输出变量定义在函数名前面。看一例:
例2: matlab内部函数std给出数组的标准差std=sqrt(sum(X)/N),编写函数stderr求实验误
差err=sqrt(sum(X)/(N*(N-1))), 代码如下:
function err=stderr(arr)
%实验误差(标准差估计)
%caculate along each column of arr
err=std(arr)./sqrt(size(arr,1)-1);
文件存为stderr.m, 运行时输入a=[1;2;3];建立一个列数组a, 然后输入stderr(a)则给出
a的方差。(若输入行数组则发散,因N-1=0)
此例中输入变量为arr, 函数名为stderr, 输出变量err, 此三者皆写在关键字function后
面同一行。无需再使用return将err的值返回。
注意:
(1)函数文件的命名要使用文件内主函数声明的名称,否则出错。
(2)函数内部可以嵌套子函数并为该文件的主函数调用,只需将子函数写在主函数代码后
面。
(3)一个函数可以有多个输入输出。如function [y1,y2]=myfun(x1,x2,x3)
例1中的m文件可在第一行前插入一行:
function randplt
保存后则该文件成为一个没有输入输出宗量的函数。
一般来说matlab中执行同样的任务使用函数文件比脚本文件的效率高。
3.函数句柄的使用
函数句柄起到c语言中函数指针的作用。
例3: 编写函数求出数组arr1和arr2的标准差(std)以及误差(stderr)。
解: 编写如下文件并保存为erreval.m
function [s1,s2]=erreval(err,arr1,arr2)
% err为所调用的误差函数,s1,s2分别返回arr1和arr2的误差.
s1=feval(err,arr1);
s2=feval(err,arr2);
此文件的输入包含"函数变量", 通过函数句柄实现函数变量err的赋值。
运行时先运行如下命令建立数组arr1,arr2:
arr1=[1;2;3];
arr2=[10;20;30];
然后输入
[std1,std2]=erreval(@std,arr1,arr2)
[stderr1,stderr2]=erreval(@stderr,arr1,arr2)
执行后返回四个误差值。
@std,@stderr为两误差函数的函数句柄。
七、文件
打开文件:
fid = fopen(filename,permission)
%其中的permission为打开类型,具体可查阅matlab的帮助文档。
读文件:
[A,count] = fread(fid,size,precision)
%A 为存放读入数据的变量。
%count 为可选参数,存放成功读取的数据个数。
%fid 为文件指针。
%size 为要求读入的数据量大小,缺省状态下读到文件末尾。
%presision 为读出数据格式。
写文件:
count = fwrite(fid,A,precision)
八、数据和函数的可视化
图像的精细控制大有文章可做,这里只介绍一些做图最常用的基本命令。
1.二维数据的可视化
设x,y为两等长的一维数组,若要将x,y对应位置的元素做图,可使用以下命令:
plot(x,y);
如果使用:
plot(x);
就相当于:
s=size(x);
plot(x,[1:s(2)]);
我们可以对线型和色彩做控制,比如plot(x,y,'.r')画出的是红色点线。
线型和色彩控制值如下表:
线型
符号
-

-.
--
含义
实线
虚线
点划线
双划线
色彩
符号
b
g
r
c
m
y
k
w
含义

绿


品红



2.三维数据的可视化
plot3最容易理解:
plot3(X,Y,Z);
另外的两个基本命令是:
mesh(X,Y,Z) %画网线图。
mesh(Z) %以Z矩阵列行下标为x,y轴自变量画网线图。
surf(X,Y,Z) %画曲面图。
surf(Z) %以Z矩阵列行下标为x,y轴自变量画曲面图。
3.图像控制命令
figure %打开新的作图窗口
axis([0,pi,-1,1]) %控制坐标轴的范围
title('pic') %为图像增加标题
grid on %显示坐标网格
legend %显示图例
hold on %在画下一幅图的时候,保留之前的图。
hold off %停止保留之前的图。
colorbar %显示颜色条
box on %显示三维图的长方体边框
%全文结束。

11 May 2009

Firefox - 自己打造双击关闭标签栏

不知道为什么,firefox一直没有双击关闭标签栏这个功能,非常不方便
为了它安装一个tab mix plus,又不想.毕竟插件安装多了,firefox会非常臃肿.

Do It Yourself - Using double-click to close tab in firefox without add any plug-ins.

修改方法如下:



1,打开firefox目录,再进入chrome目录,打开browser.manifest,修改

1,Enter the directory of firefox,cd to chrome,open the file named browser.manifest,change the following:
content browser jar:browser.jar!/content/browser/ xpcnativewrappers=yes contentaccessible=yes

to:
content browser file:browser/content/browser/ xpcnativewrappers=yes contentaccessible=yes


2,解压缩browser.jar到browser文件夹,然后进入..\firefox\chrome\browser\content\browser\,修改tabbrowser.xml,找到onTabBarDblClick方法:

2,upzip browser.jar to browser directory,then cd ..\firefox\chrome\browser\content\browser\,change the file named tabbrowser.xml,find the method named onTabBarDblClick(see picture shown below):

<method name="onTabBarDblClick">
        <parameter name="aEvent"/>
        <body>
          <![CDATA[
            // See hack note in the tabbrowser-close-button binding
            if (!this._blockDblClick && aEvent.button == 0 &&
                aEvent.originalTarget.localName == "box") {
              // xxx this needs to check that we're in the empty area of the tabstrip
              var e = document.createEvent("Events");
              e.initEvent("NewTab", true, true);
              this.dispatchEvent(e);
            }
          ]]>
        </body>
      </method>

给if后面增加else语句,变为

add Else condition after if statement like:
<method name="onTabBarDblClick">
        <parameter name="aEvent"/>
        <body>
          <![CDATA[
            // See hack note in the tabbrowser-close-button binding
            if (!this._blockDblClick && aEvent.button == 0 &&
                aEvent.originalTarget.localName == "box") {
              // xxx this needs to check that we're in the empty area of the tabstrip
              var e = document.createEvent("Events");
              e.initEvent("NewTab", true, true);
              this.dispatchEvent(e);
            } else { this.removeTab(this.mCurrentTab);
            }
          ]]>
        </body>
      </method>


3,保存tabbrowser.xml,重新打开Firefox浏览器即可.

3,save tabbrowser.xml,restart your Firefox and Enjoy.

8 May 2009

Firefox播放real和QuickTime的办法

firefox播放嵌入real和QuickTime的页面,总是提示下载插件,却不能安装.
又不想为了这个安装庞大的real player和QuickTime,方法如下.


让Firefox 播放 real media, quicktime media

##CONTINUE##

1. Real Alternative
让firefox 支持 Real media
点击下载

2. QuickTime Alternative
让firefox 支持 quicktime media。安裝 QT Lite 版够用了。
点击下载
Quicktime 7 Professional 注册码:
Name: CORE MAFIA
S/N: DFXY-5TJN-HU3N-DQXF-WDQ3

3. K-Lite Code Pack
K-Lite Code Pack。K-Lite Codec Pack,你只需要安裝它,就可以利用Windows MediaPlayer或其他常见的播放器播放各种格式的影片了.安裝 Standard 版就够了。因版权问题,Mega 版只包含 Real Alternative, 沒有 QuickTime Alternative,所以需要另外安裝 QT Alternative。
点击下载

VMware瘦身+关闭后台进程

前两天从6.0.2更新到6.5.1,结果只要运行虚拟机就会有VMware-tray.exe进程,
还必须手动终止.非常郁闷.6.0的时候一切正常.

没办法,只要手动干掉.捎带着给VMware瘦身一下.



1,删除help文件夹下一切东西,用不着;
2,pkg文件夹整个删除,这是备份文件,删除完全没有影响;
3,直接给VMware-tray.exe改名,我改成VMware-tray.exe.bak,运行虚拟机.关闭后没有启动进程,一切正常.

5 May 2009

Python Tips - 迅雷,快车,qq下载地址转换

可以转换迅雷,快车和qq下载地址的模块

迅雷,快车和qq下载都有专用的地址,其转换规则如下:

1、普通地址转换为迅雷地址
在原地址前面加”AA”,后面加”ZZ”(注:不包括引号),即AAhttp://**ZZ
然后用base64编码后,在地址前加thunder://.

2、普通地址转换为快车地址
在原地址前后都加上”[FLASHGET]“(注:不包括引号),地址变为
[FLASHGET]http://**[FLASHGET]
用base64编码后,在地址前加flashget://,后面还要加上”&字符串”,字符串随便什么都行.

3、普通地址转换为旋风地址
旋风相对就简单多了,将原地址直接base64编码,然后在地址前加qqdl://

逆向及反着来一次.


python地址转换代码如下:

#! /usr/bin/env python
# PyThunder.py
# transfer special download address to the normal http address
# including thunder, flashget and qq download
# http://52xenos.blogspot.com

from base64 import decodestring, encodestring

def decThunder(strThu):
""" Thunder decode """
if strThu.startswith('thunder://'):
strHttp = strThu[strThu.index('thunder://')+len('thunder://'):]
strHttp = decodestring(strHttp)
if strHttp.startswith('AA') and strHttp.endswith('ZZ'):
strHttp = strHttp[len('AA'):len(strHttp)-len('ZZ')]
return strHttp
else:
return 'Wrong'
else:
return 'Wrong'

def encThunder(strHttp):
""" Thunder encode """
if strHttp.startswith('http://'):
strThu = 'AA' + strHttp
strThu += 'ZZ'
strThu = encodestring(strThu)
strThu = 'thunder://' + strThu
return strThu
else:
return 'Wrong'

def decFlash(strFla):
""" Flashget decode """
if strFla.startswith('flashget://'):
strHttp = strFla[strFla.index('flashget://')+len('flashget://'):strFla.index('&')]
strHttp = decodestring(strHttp)
if strHttp.startswith('[FLASHGET]') and strHttp.endswith('[FLASHGET]'):
strHttp = strHttp[len('[FLASHGET]'):len(strHttp)-len('[FLASHGET]')]
return strHttp
else:
return 'Wrong'
else:
return 'Wrong'

def encFlash(strHttp):
""" Flashget encode """
if strHttp.startswith('http://'):
strFla = '[FLASHGET]' + strHttp + '[FLASHGET]'
strFla = encodestring(strFla)
strFla = 'flashget://' + strFla
strFla += '&test'
return strFla
else:
return 'Wrong'

def decQQ(strQQ):
""" QQdown decode """
if strQQ.startswith('qqdl://'):
strHttp = strQQ[strQQ.index('qqdl://')+len('qqdl://'):]
strHttp = decodestring(strQQ)
return strHttp
else:
return 'Wrong'

def encQQ(strHttp):
""" QQdown encode """
if strHttp.startswith('http://'):
strQQ = encodestring(strHttp)
strQQ = 'qqdl://' + strQQ
return strQQ
else:
return 'Wrong'

def main():
""" main entry here """
while True:
strFlag = raw_input("""Please input the type:
1 : other -> http
2 : http -> other
0 : exit\n""")
if strFlag == '0':
break
elif strFlag == '1':
print "You choose other->http"
strOther = raw_input("""Please input the address:(0 for back)\n""")
if strOther == '0':
continue
elif strOther.startswith('thunder://'):
if decThunder(strOther) != 'Wrong':
print decThunder(strOther)
elif strOther.startswith('flashget://'):
if decFlash(strOther) != 'Wrong':
print decFlash(strOther)
elif strOther.startswith('qqdl://'):
if decQQ(strOther) != 'Wrong':
print decQQ(strOther)
elif strFlag == '2':
print "You choose http->other"
strType = raw_input("""Please specify the type:
1 : http->thunder
2 : http->flashget
3 : http->QQ down
0 : back\n""")
if strType == '0':
continue
elif strType == '1':
strHttp = raw_input("Please input the address:(0 for back)\n")
if strHttp == '0':
continue
elif encThunder(strHttp) != 'Wrong':
print encThunder(strHttp)
elif strType == '2':
strHttp = raw_input("Please input the address:(0 for back)\n")
if strHttp == '0':
continue
elif encFlash(strHttp) != 'Wrong':
print encFlash(strHttp)
elif strType == '3':
strHttp = raw_input("Please input the address:(0 for back)\n")
if strHttp == '0':
continue
elif encQQ(strHttp) != 'Wrong':
print encQQ(strHttp)

#test module
if __name__ == '__main__': main()

4 May 2009

Ubuntu Tips - vmware中释放鼠标问题

vmware虚拟Ubuntu从804到810再到904,虽然VMware版本也从6.0升到6.5,但是除了804中直接安装vm tools好使之外,810和904死活不能释放鼠标.

If you also meet the problem of releasing mouse from vmware, please read this post, which I find from the internet.

从一老外的blog看到解决办法,目前ok.

方法如下:

##CONTINUE##


sudo apt-get install xserver-xorg-input-vmmouse


注销后再登陆ok.

Log-out and log-in, It should be ok now.

2 May 2009

Software - Flv Extract: FLV分解软件

一款可以将flv文件中的音频和视频分解的软件,
小巧实用,可惜是日文版,汉化过的版本比较低.

An amazing software which can extract video and audio from flv files. It's made by janpanese.

官方网址:

Website:

##CONTINUE##

http://www.paw.hi-ho.ne.jp/milbesos/

下载地址:

Download:

http://www.paw.hi-ho.ne.jp/milbesos/download/hugflash2_6_3.lzh