距离在行走中消逝

以时间换空间

博客园 联系 订阅 管理
  9 Posts :: 29 Stories :: 1 Comments :: 0 Trackbacks

News

2011年10月22日 #

matlab命令汇总

一、常用对象操作:除了一般windows窗口的常用功能键外。
1、!dir 可以查看当前工作目录的文件。   !dir& 可以在dos状态下查看。
2、who  可以查看当前工作空间变量名,    whos 可以查看变量名细节。
3、功能键:
功能键             快捷键           说明
方向上键           Ctrl+P          返回前一行输入
方向下键           Ctrl+N          返回下一行输入
方向左键           Ctrl+B          光标向后移一个字符
方向右键           Ctrl+F          光标向前移一个字符
Ctrl+方向右键      Ctrl+R          光标向右移一个字符
Ctrl+方向左键      Ctrl+L          光标向左移一个字符
home              Ctrl+A          光标移到行首
End               Ctrl+E          光标移到行尾
Esc               Ctrl+U          清除一行
Del               Ctrl+D          清除光标所在的字符
Backspace         Ctrl+H          删除光标前一个字符                             

 Ctrl+K          删除到行尾          
 Ctrl+C          中断正在执行的命令
4、clc可以命令窗口显示的内容,但并不清除工作空间。
二、函数及运算
1、运算符:
+:加,  -:减,  *:乘,  /: 除, \:左除  ^:  幂,‘:复数的共轭转置, ():制定运算顺序。
2、常用函数表:
sin( )   正弦(变量为弧度)   
Cot( )   余切(变量为弧度)
sind( )  正弦(变量为度数)  
Cotd( )  余切(变量为度数)
asin( )  反正弦(返回弧度)     
acot( )  反余切(返回弧度)   
Asind( ) 反正弦(返回度数)   
acotd( ) 反余切(返回度数)   
cos( )   余弦(变量为弧度)     
exp( )   指数     
cosd( )  余弦(变量为度数)   
log( )   对数   
acos( )  余正弦(返回弧度)   
log10( ) 以10为底对数
acosd( ) 余正弦(返回度数)     
sqrt( )  开方      
tan( )   正切(变量为弧度)      
realsqrt( ) 返回非负根
tand( )  正切(变量为度数)        
abs( )   取绝对值   
atan( )  反正切(返回弧度)     
angle( ) 返回复数的相位角
atand( ) 反正切(返回度数)        
mod(x,y) 返回x/y的余数   
sum(  )  向量元素求和
3、其余函数可以用help elfun和help specfun命令获得。
4、常用常数的值:
pi            3.1415926…….         
realmin       最小浮点数,2^-1022
i             虚数单位              
realmax       最大浮点数,(2-eps)2^1022
j             虚数单位           
Inf           无限值
eps           浮点相对经度=2^-52           
NaN           空值
三、数组和矩阵:
1、构造数组的方法:增量发和linspace(first,last,num)first和last为起始和终止数,num为需要的数组元素个数。
2、构造矩阵的方法:可以直接用[ ]来输入数组,也可以用以下提供的函数来生成矩阵。
ones( )   创建一个所有元素都为1的矩阵,其中可以制定维数,1,2….个变量
zeros()   创建一个所有元素都为0的矩阵
eye()     创建对角元素为1,其他元素为0的矩阵
diag()    根据向量创建对角矩阵,即以向量的元素为对角元素
magic()   创建魔方矩阵
rand()    创建随机矩阵,服从均匀分布
randn()   创建随机矩阵,服从正态分布
randperm()         创建随机行向量
horcat             C=[A,B],水平聚合矩阵,还可以用cat(1,A,B)
vercat             C=[A;B],垂直聚合矩阵, 还可以用cat(2,A,B)
repmat(M,v,h)      将矩阵M在垂直方向上聚合v次,在水平方向上聚合h次
blkdiag(A,B)     以A,和B为块创建块对角矩阵
length             返回矩阵最长维的的长度
ndims              返回维数
numel              返回矩阵元素个数
size               返回每一维的长度,[rows,cols]=size(A)
reshape            重塑矩阵,reshape(A,2,6),将A变为2×6的矩阵,按列排列。
rot90              旋转矩阵90度,逆时针方向
fliplr             沿垂轴翻转矩阵
flipud             沿水平轴翻转矩阵
transpose          沿主对角线翻转矩阵
ctranspose         转置矩阵,也可用A’或A.’,这仅当矩阵为复数矩阵时才有区别
inv                矩阵的逆
det                矩阵的行列式值
trace              矩阵对角元素的和
norm               矩阵或矢量的范数,norm(a,1),norm(a,Inf)…….
normest            估计矩阵的最大范数矢量
chol               矩阵的cholesky分解
cholinc            不完全cholesky分解
lu                 LU分解
luinc              不完全LU分解
qr                 正交分解
kron(A,B)        A为m×n,B为p×q,则生成mp×nq的矩阵,A的每一个元素都会乘上B,并占据p×q大小的空间
rank               求出矩阵的刺
pinv               求伪逆矩阵
A^p                对A进行操作
A.^P               对A中的每一个元素进行操作
四、数值计算
1、线性方程组求解
(1)AX=B 的解可以用X=A\B求。XA=B的解可以用X= A/B求。如果A是m×n的矩阵,当m=n时可以找到唯一解,m<n,不定解,解中至多有m个非零元素。如果m>n,超定系统,至少找到一组 解。如果A是奇异的,且AX=B有解,可以用X=pinv(A)×B返回最小二乘解
(2)AX=b,  A=L×U,[L,U]=lu(A),  X=U\(L\b),即用LU分解求解。
(3)QR(正交)分解是将一矩阵表示为一正交矩阵和一上三角矩阵之积,A=Q×R[Q,R]=chol(A),  X=Q\(U\b)
(4)cholesky分解类似。
2、特征值
D=eig(A)返回A的所有特征值组成的矩阵。[V,D]=eig(A),还返回特征向量矩阵。
3、A=U×S×UT,[U,S]=schur(A).其中S的对角线元素为A的特征值。
4、多项式Matlab里面的多项式是以向量来表示的,其具体操作函数如下:
conv           多项式的乘法
deconv         多项式的除法,【a,b】=deconv(s),返回商和余数
poly           求多项式的系数(由已知根求多项式的系数)
polyeig        求多项式的特征值
Polyfit(x,y,n)        多项式的曲线拟合,x,y为被拟合的向量,n为拟合多项式阶数。
polyder        求多项式的一阶导数,polyder(a,b)返回ab的导数
[a,b]=polyder(a,b)返回a/b的导数。
polyint        多项式的积分
polyval        求多项式的值
polyvalm       以矩阵为变量求多项式的值
residue        部分分式展开式
roots          求多项式的根(返回所有根组成的向量)
注:用ploy(A)求出矩阵的特征多项式,然后再求其根,即为矩阵的特征值。
5、插值常用的插值函数如下:
griddata       数据网格化合曲面拟合
Griddata3      三维数据网格化合超曲面拟合
interp1        一维插值(yi=interp1(x,y,xi,’method’)Method=nearest/linear/spline/pchip/cubic
Interp2        二维插值zi=interp1(x,y,z,xi,yi’method’),bilinear
Interp3        三维插值
interpft       用快速傅立叶变换进行一维插值,help fft。
mkpp           使用分段多项式
spline         三次样条插值
pchip          分段hermit插值
6、函数最值的求解
fminbnd(‘f’,x1,x2,optiset(,)) 求f在 x1和x2之间的最小值。Optiset选项可以有‘Display’+‘iter’/’off’/’final’,分别表示显示计算过程/不显示/只显 示最后结果。fminsearch求多元函数的最小值。fzero(‘f’,x1)求一元函数的零点。X1为起始点。同样可以用上面的选项。
五、图像绘制:
1、基本绘图函数
plot            绘制二维线性图形和两个坐标轴
plot3           绘制三维线性图形和两个坐标轴
fplot           在制定区间绘制某函数的图像。fplot(‘f’,区域,线型,颜色)
loglog          绘制对数图形及两个坐标轴(两个坐标都为对数坐标)semilogx        绘制半对数坐标图形
semilogy        绘制半对数坐标图形
2、线型:   颜色           线型
        y   黄色       .  圆点线           v       向下箭头
        g   绿色       -.   组合           >    向右箭头
        b   蓝色       +    点为加号形      <      向左箭头
        m   红紫色     o    空心圆形        p      五角星形
        c   蓝紫色     *    星号           h        六角星形
        w   白色       .    实心小点       hold on   添加图形
        r   红色       x   叉号形状        grid on  添加网格
        k   黑色       s   方形             -    实线      
        d   菱形       --   虚线           ^ 向上箭头     
3、可以用subplot(3,3,1)表示将绘图区域分为三行三列,目前使用第一区域。此时如要画不同的图形在一个窗口里,需要hold on。

=================================================================


附录1.1 管理用命令
函数名    功能描述    函数名    功能描述
addpath    增加一条搜索路径    rmpath    删除一条搜索路径
demo    运行Matlab演示程序    type    列出.M文件
doc    装入超文本文档    version    显示Matlab的版本号
help    启动联机帮助    what    列出当前目录下的有关文件
lasterr    显示最后一条信息    whatsnew    显示Matlab的新特性
lookfor    搜索关键词的帮助    which    造出函数与文件所在的目录
path    设置或查询Matlab路径          

附录1.2管理变量与工作空间用命令 
函数名    功能描述    函数名    功能描述
clear    删除内存中的变量与函数    pack    整理工作空间内存
disp    显示矩阵与文本    save    将工作空间中的变量存盘
length    查询向量的维数    size    查询矩阵的维数
load    从文件中装入数据    who,whos    列出工作空间中的变量名

附录1.3文件与操作系统处理命令 
函数名    功能描述    函数名    功能描述
cd    改变当前工作目录    edit    编辑.M文件
delete    删除文件    matlabroot    获得Matlab的安装根目录
diary    将Matlab运行命令存盘    tempdir    获得系统的缓存目录
dir    列出当前目录的内容    tempname    获得一个缓存(temp)文件
!    执行操作系统命令          

附录1.4窗口控制命令 
函数名    功能描述    函数名    功能描述
echo    显示文件中的Matlab中的命令    more    控制命令窗口的输出页面
format    设置输出格式          

附录1.5启动与退出命令 
函数名    功能描述    函数名    功能描述
matlabrc    启动主程序    quit    退出Matlab环境
startup    Matlab自启动程序          

附录2 运算符号与特殊字符附录
2.1运算符号与特殊字符
函数名    功能描述    函数名    功能描述
+    加    ...    续行标志
-    减    ,    分行符(该行结果不显示)
*    矩阵乘    ;    分行符(该行结果显示)
.*    向量乘    %    注释标志
^    矩阵乘方    !    操作系统命令提示符
.^    向量乘方         矩阵转置
kron    矩阵kron积    .    向量转置
\    矩阵左除    =    赋值运算
/    矩阵右除    ==    关系运算之相等
.\    向量左除    ~=    关系运算之不等
./    向量右除    <    关系运算之小于
:    向量生成或子阵提取    <=    关系运算之小于等于
()    下标运算或参数定义    >    关系运算之大于
[]    矩阵生成    >=    关系运算之大于等于
{}         &    逻辑运算之与
.    结构字段获取符    |    逻辑运算之或
.    点乘运算,常与其他运算符联合使用(如.\)    ~    逻辑运算之非
xor    逻辑运算之异成          

附录2.2逻辑函数 
函数名    功能描述    函数名    功能描述
all    测试向量中所用元素是否为真    is*(一类函数)    检测向量状态.其中*表示一个确定的函数(isinf)
any    测试向量中是否有真元素    *isa    检测对象是否为某一个类的对象
exist    检验变量或文件是否定义    logical    将数字量转化为逻辑量
find    查找非零元素的下标          

附录3 语言结构与调试
附录3.1编程语言 
函数名    功能描述    函数名    功能描述
builtin    执行Matlab内建的函数    global    定义全局变量
eval    执行Matlab语句构成的字符串    nargchk    函数输入输出参数个数检验
feval    执行字符串指定的文件    script    Matlab语句及文件信息
function    Matlab函数定义关键词          

附录3.2控制流程 
函数名    功能描述    函数名    功能描述
break    中断循环执行的语句    if    条件转移语句
case    与switch结合实现多路转移    otherwise    多路转移中的缺省执行部分
else    与if一起使用的转移语句    return    返回调用函数
elseif    与if一起使用的转移语句    switch    与case结合实现多路转移
end    结束控制语句块    warning    显示警告信息
error    显示错误信息    while    循环语句
for    循环语句          

附录3.3交互输入 
函数名    功能描述    函数名    功能描述
input    请求输入    menu    菜单生成
keyboard    启动键盘管理    pause    暂停执行

附录3.4面向对象编程 
函数名    功能描述    函数名    功能描述
class    生成对象    isa    判断对象是否属于某一类
double    转换成双精度型    superiorto    建立类的层次关系
inferiorto    建立类的层次关系    unit8    转换成8字节的无符号整数
inline    建立一个内嵌对象          

附录3.5调试 
函数名    功能描述    函数名    功能描述
dbclear    清除调试断点    dbstatus    列出所有断点情况
dbcont    调试继续执行    dbstep    单步执行
dbdown    改变局部工作空间内存    dbstop    设置调试断点
dbmex    启动对Mex文件的调试    sbtype    列出带命令行标号的.M文件
dbquit    退出调试模式    dbup    改变局部工作空间内容
dbstack    列出函数调用关系          

附录4 基本矩阵与矩阵处理
附录4.1基本矩阵 
函数名    功能描述    函数名    功能描述
eye    产生单位阵    rand    产生随机分布矩阵
linspace    构造线性分布的向量    randn    产生正态分布矩阵
logspace    构造等对数分布的向量    zeros    产生零矩阵
ones    产生元素全部为1的矩阵    :    产生向量

附录4.2特殊向量与常量 
函数名    功能描述    函数名    功能描述
ans    缺省的计算结果变量    non    非数值常量常由0/0或Inf/Inf获得
computer    运行Matlab的机器类型    nargin    函数中参数输入个数
eps    精度容许误差(无穷小)    nargout    函数中输出变量个数
flops    浮点运算计数    pi    圆周率
i    复数单元    realmax    最大浮点数值
inf    无穷大    realmin    最小浮点数值
inputname    输入参数名    varargin    函数中输入的可选参数
j    复数单元    varargout    函数中输出的可选参数

附录4.3时间与日期 
函数名    功能描述    函数名    功能描述
calender    日历    eomday    计算月末
clock    时钟    etime    所用时间函数
cputime    所用的CPU时间    now    当前日期与时间
date    日期    tic    启动秒表计时器
datenum    日期(数字串格式)    toc    读取秒表计时器
datestr    日期(字符串格式)    weekday    星期函数
datevoc    日期(年月日分立格式)          

附录4.4矩阵处理 
函数名    功能描述    函数名    功能描述
cat    向量连接    reshape    改变矩阵行列个数
diag    建立对角矩阵或获取对角向量    rot90    将矩阵旋转90度
fliplr    按左右方向翻转矩阵元素    tril    取矩阵的下三角部分
flipud    按上下方向翻转矩阵元素    triu    取矩阵的上三角部分
repmat    复制并排列矩阵函数          

附录5 特殊矩阵 
函数名    功能描述    函数名    功能描述
compan    生成伴随矩阵    invhilb    生成逆hilbert矩阵
gallery    生成一些小的测试矩阵    magic    生成magic矩阵
hadamard    生成hadamard矩阵    pascal    生成pascal矩阵
hankel    生成hankel矩阵    toeplitz    生成toeplitz矩阵
hilb    生成hilbert矩阵    wilkinson    生成wilkinson特征值测试矩阵

附录6 数学函数
附录6.1三角函数 
函数名    功能描述    函数名    功能描述
sin/asin    正弦/反正弦函数    sec/asec    正割/反正割函数
sinh/asinh    双曲正弦/反双曲正弦函数    sech/asech    双曲正割/反双曲正割函数
cos/acos    余弦/反余弦函数    csc/acsc    余割/反余割函数
cosh/acosh    双曲余弦/反双曲余弦函数    csch/acsch    双曲余割/反双曲余割函数
tan/atan    正切/反正切函数    cot/acot    余切/反余切函数
tanh/atanh    双曲正切/反双曲正切函数    coth/acoth    双曲余切/反双曲余切函数
atan2    四个象限内反正切函数          

附录6.2指数函数 
函数名    功能描述    函数名    功能描述
exp    指数函数    log10    常用对数函数
log    自然对数函数    sqrt    平方根函数

附录6.3复数函数 
函数名    功能描述    函数名    功能描述
abs    绝对值函数    imag    求虚部函数
angle    角相位函数    real    求实部函数
conj    共轭复数函数          

附录6.4数值处理 
函数名    功能描述    函数名    功能描述
fix    沿零方向取整    round    舍入取整
floor    沿-∞方向取整    rem    求除法的余数
ceil    沿+∞方向取整    sign    符号函数

附录6.5其他特殊数学函数 
函数名    功能描述    函数名    功能描述
airy    airy函数    erfcx    比例互补误差函数
besselh    bessel函数(hankel函数)    erfinv    逆误差函数
bessili    改进的第一类bessel函数    expint    指数积分函数
besselk    改进的第二类bessel函数    gamma    gamma函数
besselj    第一类bessel函数    gammainc    非完全gamma函数
bessely    第二类bessel函数    gammaln    gamma对数函数
beta    beta函数    gcd    最大公约数
betainc    非完全的beta函数    lcm    最小公倍数
betaln    beta对数函数    log2    分割浮点数
elipj    Jacobi椭圆函数    legendre    legendre伴随函数
ellipke    完全椭圆积分    pow2    基2标量浮点数
erf    误差函数    rat    有理逼近
erfc    互补误差函数    rats    有理输出

================================================================


A a 
abs 绝对值、模、字符的ASCII码值 
acos 反余弦 
acosh 反双曲余弦 
acot 反余切 
acoth 反双曲余切 
acsc 反余割 
acsch 反双曲余割 
align 启动图形对象几何位置排列工具 
all 所有元素非零为真 
angle 相角 
ans 表达式计算结果的缺省变量名 
any 所有元素非全零为真 
area 面域图 
argnames 函数M文件宗量名 
asec 反正割 
asech 反双曲正割 
asin 反正弦 
asinh 反双曲正弦 
assignin 向变量赋值 
atan 反正切 
atan2 四象限反正切 
atanh 反双曲正切 
autumn 红黄调秋色图阵 
axes 创建轴对象的低层指令 
axis 控制轴刻度和风格的高层指令 


B b 

bar 二维直方图 
bar3 三维直方图 
bar3h 三维水平直方图 
barh 二维水平直方图 
base2dec X进制转换为十进制 
bin2dec 二进制转换为十进制 
blanks 创建空格串 
bone 蓝色调黑白色图阵 
box 框状坐标轴 
break while 或for 环中断指令 
brighten 亮度控制 


C c 

capture (3版以前)捕获当前图形 
cart2pol 直角坐标变为极或柱坐标 
cart2sph 直角坐标变为球坐标 
cat 串接成高维数组 
caxis 色标尺刻度 
cd 指定当前目录 
cdedit 启动用户菜单、控件回调函数设计工具 
cdf2rdf 复数特征值对角阵转为实数块对角阵 
ceil 向正无穷取整 
cell 创建元胞数组 
cell2struct 元胞数组转换为构架数组 
celldisp 显示元胞数组内容 
cellplot 元胞数组内部结构图示 
char 把数值、符号、内联类转换为字符对象 
chi2cdf 分布累计概率函数 
chi2inv 分布逆累计概率函数 
chi2pdf 分布概率密度函数 
chi2rnd 分布随机数发生器 
chol Cholesky分解 
clabel 等位线标识 
cla 清除当前轴 
class 获知对象类别或创建对象 
clc 清除指令窗 
clear 清除内存变量和函数 
clf 清除图对象 
clock 时钟 
colorcube 三浓淡多彩交叉色图矩阵 
colordef 设置色彩缺省值 
colormap 色图 
colspace 列空间的基 
close 关闭指定窗口 
colperm 列排序置换向量 
comet 彗星状轨迹图 
comet3 三维彗星轨迹图 
compass 射线图 
compose 求复合函数 
cond (逆)条件数 
condeig 计算特征值、特征向量同时给出条件数 
condest 范 -1条件数估计 
conj 复数共轭 
contour 等位线 
contourf 填色等位线 
contour3 三维等位线 
contourslice 四维切片等位线图 
conv 多项式乘、卷积 
cool 青紫调冷色图 
copper 古铜调色图 
cos 余弦 
cosh 双曲余弦 
cot 余切 
coth 双曲余切 
cplxpair 复数共轭成对排列 
csc 余割 
csch 双曲余割 
cumsum 元素累计和 
cumtrapz 累计梯形积分 
cylinder 创建圆柱 


D d 

dblquad 二重数值积分 
deal 分配宗量 
deblank 删去串尾部的空格符 
dec2base 十进制转换为X进制 
dec2bin 十进制转换为二进制 
dec2hex 十进制转换为十六进制 
deconv 多项式除、解卷 
delaunay Delaunay 三角剖分 
del2 离散Laplacian差分 
demo Matlab演示 
det 行列式 
diag 矩阵对角元素提取、创建对角阵 
diary Matlab指令窗文本内容记录 
diff 数值差分、符号微分 
digits 符号计算中设置符号数值的精度 
dir 目录列表 
disp 显示数组 
display 显示对象内容的重载函数 
dlinmod 离散系统的线性化模型 
dmperm 矩阵Dulmage-Mendelsohn 分解 
dos 执行DOS 指令并返回结果 
double 把其他类型对象转换为双精度数值 
drawnow 更新事件队列强迫Matlab刷新屏幕 
dsolve 符号计算解微分方程 


E e 

echo M文件被执行指令的显示 
edit 启动M文件编辑器 
eig 求特征值和特征向量 
eigs 求指定的几个特征值 
end 控制流FOR等结构体的结尾元素下标 
eps 浮点相对精度 
error 显示出错信息并中断执行 
errortrap 错误发生后程序是否继续执行的控制 
erf 误差函数 
erfc 误差补函数 
erfcx 刻度误差补函数 
erfinv 逆误差函数 
errorbar 带误差限的曲线图 
etreeplot 画消去树 
eval 串演算指令 
evalin 跨空间串演算指令 
exist 检查变量或函数是否已定义 
exit 退出Matlab环境 
exp 指数函数 
expand 符号计算中的展开操作 
expint 指数积分函数 
expm 常用矩阵指数函数 
expm1 Pade法求矩阵指数 
expm2 Taylor法求矩阵指数 
expm3 特征值分解法求矩阵指数 
eye 单位阵 
ezcontour 画等位线的简捷指令 
ezcontourf 画填色等位线的简捷指令 
ezgraph3 画表面图的通用简捷指令 
ezmesh 画网线图的简捷指令 
ezmeshc 画带等位线的网线图的简捷指令 
ezplot 画二维曲线的简捷指令 
ezplot3 画三维曲线的简捷指令 
ezpolar 画极坐标图的简捷指令 
ezsurf 画表面图的简捷指令 
ezsurfc 画带等位线的表面图的简捷指令 



F f 

factor 符号计算的因式分解 
feather 羽毛图 
feedback 反馈连接 
feval 执行由串指定的函数 
fft 离散Fourier变换 
fft2 二维离散Fourier变换 
fftn 高维离散Fourier变换 
fftshift 直流分量对中的谱 
fieldnames 构架域名 
figure 创建图形窗 
fill3 三维多边形填色图 
find 寻找非零元素下标 
findobj 寻找具有指定属性的对象图柄 
findstr 寻找短串的起始字符下标 
findsym 机器确定内存中的符号变量 
finverse 符号计算中求反函数 
fix 向零取整 
flag 红白蓝黑交错色图阵 
fliplr 矩阵的左右翻转 
flipud 矩阵的上下翻转 
flipdim 矩阵沿指定维翻转 
floor 向负无穷取整 
flops 浮点运算次数 
flow Matlab提供的演示数据 
fmin 求单变量非线性函数极小值点(旧版) 
fminbnd 求单变量非线性函数极小值点 
fmins 单纯形法求多变量函数极小值点(旧版) 
fminunc 拟牛顿法求多变量函数极小值点 
fminsearch 单纯形法求多变量函数极小值点 
fnder 对样条函数求导 
fnint 利用样条函数求积分 
fnval 计算样条函数区间内任意一点的值 
fnplt 绘制样条函数图形 
fopen 打开外部文件 
for 构成for环用 
format 设置输出格式 
fourier Fourier 变换 
fplot 返函绘图指令 
fprintf 设置显示格式 
fread 从文件读二进制数据 
fsolve 求多元函数的零点 
full 把稀疏矩阵转换为非稀疏阵 
funm 计算一般矩阵函数 
funtool 函数计算器图形用户界面 
fzero 求单变量非线性函数的零点 


G g 

gamma 函数 
gammainc 不完全 函数 
gammaln 函数的对数 
gca 获得当前轴句柄 
gcbo 获得正执行"回调"的对象句柄 
gcf 获得当前图对象句柄 
gco 获得当前对象句柄 
geomean 几何平均值 
get 获知对象属性 
getfield 获知构架数组的域 
getframe 获取影片的帧画面 
ginput 从图形窗获取数据 
global 定义全局变量 
gplot 依图论法则画图 
gradient 近似梯度 
gray 黑白灰度 
grid 画分格线 
griddata 规则化数据和曲面拟合 
gtext 由鼠标放置注释文字 
guide 启动图形用户界面交互设计工具 


H h 

harmmean 调和平均值 
help 在线帮助 
helpwin 交互式在线帮助 
helpdesk 打开超文本形式用户指南 
hex2dec 十六进制转换为十进制 
hex2num 十六进制转换为浮点数 
hidden 透视和消隐开关 
hilb Hilbert矩阵 
hist 频数计算或频数直方图 
histc 端点定位频数直方图 
histfit 带正态拟合的频数直方图 
hold 当前图上重画的切换开关 
horner 分解成嵌套形式 
hot 黑红黄白色图 
hsv 饱和色图 


I i 

if-else-elseif 条件分支结构 
ifft 离散Fourier反变换 
ifft2 二维离散Fourier反变换 
ifftn 高维离散Fourier反变换 
ifftshift 直流分量对中的谱的反操作 
ifourier Fourier反变换 
i, j 缺省的"虚单元"变量 
ilaplace Laplace反变换 
imag 复数虚部 
image 显示图象 
imagesc 显示亮度图象 
imfinfo 获取图形文件信息 
imread 从文件读取图象 
imwrite 把 
imwrite 把图象写成文件 
ind2sub 单下标转变为多下标 
inf 无穷大 
info MathWorks公司网点地址 
inline 构造内联函数对象 
inmem 列出内存中的函数名 
input 提示用户输入 
inputname 输入宗量名 
int 符号积分 
int2str 把整数数组转换为串数组 
interp1 一维插值 
interp2 二维插值 
interp3 三维插值 
interpn N维插值 
interpft 利用FFT插值 
intro Matlab自带的入门引导 
inv 求矩阵逆 
invhilb Hilbert矩阵的准确逆 
ipermute 广义反转置 
isa 检测是否给定类的对象 
ischar 若是字符串则为真 
isequal 若两数组相同则为真 
isempty 若是空阵则为真 
isfinite 若全部元素都有限则为真 
isfield 若是构架域则为真 
isglobal 若是全局变量则为真 
ishandle 若是图形句柄则为真 
ishold 若当前图形处于保留状态则为真 
isieee 若计算机执行IEEE规则则为真 
isinf 若是无穷数据则为真 
isletter 若是英文字母则为真 
islogical 若是逻辑数组则为真 
ismember 检查是否属于指定集 
isnan 若是非数则为真 
isnumeric 若是数值数组则为真 
isobject 若是对象则为真 
isprime 若是质数则为真 
isreal 若是实数则为真 
isspace 若是空格则为真 
issparse 若是稀疏矩阵则为真 
isstruct 若是构架则为真 
isstudent 若是Matlab学生版则为真 
iztrans 符号计算Z反变换 


J j , K k 

jacobian 符号计算中求Jacobian 矩阵 
jet 蓝头红尾饱和色 
jordan 符号计算中获得 Jordan标准型 
keyboard 键盘获得控制权 
kron Kronecker乘法规则产生的数组 


L l 

laplace Laplace变换 
lasterr 显示最新出错信息 
lastwarn 显示最新警告信息 
leastsq 解非线性最小二乘问题(旧版) 
legend 图形图例 
lighting 照明模式 
line 创建线对象 
lines 采用plot 画线色 
linmod 获连续系统的线性化模型 
linmod2 获连续系统的线性化精良模型 
linspace 线性等分向量 
ln 矩阵自然对数 
load 从MAT文件读取变量 
log 自然对数 
log10 常用对数 
log2 底为2的对数 
loglog 双对数刻度图形 
logm 矩阵对数 
logspace 对数分度向量 
lookfor 按关键字搜索M文件 
lower 转换为小写字母 
lsqnonlin 解非线性最小二乘问题 
lu LU分解 


M m 

mad 平均绝对值偏差 
magic 魔方阵 
maple &nb, sp; 运作 Maple格式指令 
mat2str 把数值数组转换成输入形态串数组 
material 材料反射模式 
max 找向量中最大元素 
mbuild 产生EXE文件编译环境的预设置指令 
mcc 创建MEX或EXE文件的编译指令 
mean 求向量元素的平均值 
median 求中位数 
menuedit 启动设计用户菜单的交互式编辑工具 
mesh 网线图 
meshz 垂帘网线图 
meshgrid 产生"格点"矩阵 
methods 获知对指定类定义的所有方法函数 
mex 产生MEX文件编译环境的预设置指令 
mfunlis 能被mfun计算的MAPLE经典函数列表 
mhelp 引出 Maple的在线帮助 
min 找向量中最小元素 
mkdir 创建目录 
mkpp 逐段多项式数据的明晰化 
mod 模运算 
more 指令窗中内容的分页显示 
movie 放映影片动画 
moviein 影片帧画面的内存预置 
mtaylor 符号计算多变量Taylor级数展开 


N n 

ndims 求数组维数 
NaN 非数(预定义)变量 
nargchk 输入宗量数验证 
nargin 函数输入宗量数 
nargout 函数输出宗量数 
ndgrid 产生高维格点矩阵 
newplot 准备新的缺省图、轴 
nextpow2 取最接近的较大2次幂 
nnz 矩阵的非零元素总数 
nonzeros 矩阵的非零元素 
norm 矩阵或向量范数 
normcdf 正态分布累计概率密度函数 
normest 估计矩阵2范数 
norminv 正态分布逆累计概率密度函数 
normpdf 正态分布概率密度函数 
normrnd 正态随机数发生器 
notebook 启动Matlab和Word的集成环境 
null 零空间 
num2str 把非整数数组转换为串 
numden 获取最小公分母和相应的分子表达式 
nzmax 指定存放非零元素所需内存 


O o 

ode1 非Stiff 微分方程变步长解算器 
ode15s Stiff 微分方程变步长解算器 
ode23t 适度Stiff 微分方程解算器 
ode23tb Stiff 微分方程解算器 
ode45 非Stiff 微分方程变步长解算器 
odefile ODE 文件模板 
odeget 获知ODE 选项设置参数 
odephas2 ODE 输出函数的二维相平面图 
odephas3 ODE 输出函数的三维相空间图 
odeplot ODE 输出函数的时间轨迹图 
odeprint 在Matlab指令窗显示结果 
odeset 创建或改写 ODE选项构架参数值 
ones 全1数组 
optimset 创建或改写优化泛函指令的选项参数值 
orient 设定图形的排放方式 
orth 值空间正交化 


P p 

pack 收集Matlab内存碎块扩大内存 
pagedlg 调出图形排版对话框 
patch 创建块对象 
path 设置Matlab搜索路径的指令 
pathtool 搜索路径管理器 
pause 暂停 
pcode 创建预解译P码文件 
pcolor 伪彩图 
peaks Matlab提供的典型三维曲面 
permute 广义转置 
pi (预定义变量)圆周率 
pie 二维饼图 
pie3 三维饼图 
pink 粉红色图矩阵 
pinv 伪逆 
plot 平面线图 
plot3 三维线图 
plotmatrix 矩阵的散点图 
plotyy 双纵坐标图 
poissinv 泊松分布逆累计概率分布函数 
poissrnd 泊松分布随机数发生器 
pol2cart 极或柱坐标变为直角坐标 
polar 极坐标图 
poly 矩阵的特征多项式、根集对应的多项式 
poly2str 以习惯方式显示多项式 
poly2sym 双精度多项式系数转变为向量符号多项式 
polyder 多项式导数 
polyfit 数据的多项式拟合 
polyval 计算多项式的值 
polyvalm 计算矩阵多项式 
pow2 2的幂 
ppval 计算分段多项式 
pretty 以习惯方式显示符号表达式 
print 打印图形或SIMULINK模型 
printsys 以习惯方式显示有理分式 
prism 光谱色图矩阵 
procread 向MAPLE输送计算程序 
profile 函数文件性能评估器 
propedit 图形对象属性编辑器 
pwd 显示当前工作目录 


Q q 

quad 低阶法计算数值积分 
quad8 高阶法计算数值积分(QUADL) 
quit 推出Matlab 环境 
quiver 二维方向箭头图 
quiver3 三维方向箭头图 


R r 

rand 产生均匀分布随机数 
randn 产生正态分布随机数 
randperm 随机置换向量 
range 样本极差 
rank 矩阵的秩 
rats 有理输出 
rcond 矩阵倒条件数估计 
real 复数的实部 
reallog 在实数域内计算自然对数 
realpow 在实数域内计算乘方 
realsqrt 在实数域内计算平方根 
realmax 最大正浮点数 
realmin 最小正浮点数 
rectangle 画"长方框" 
rem 求余数 
repmat 铺放模块数组 
reshape 改变数组维数、大小 
residue 部分分式展开 
return 返回 
ribbon 把二维曲线画成三维彩带图 
rmfield 删去构架的域 
roots 求多项式的根 
rose 数扇形图 
rot90 矩阵旋转90度 
rotate 指定的原点和方向旋转 
rotate3d 启动三维图形视角的交互设置功能 
round 向最近整数圆整 
rref 简化矩阵为梯形形式 
rsf2csf 实数块对角阵转为复数特征值对角阵 
rsums Riemann和 

S s 

save 把内存变量保存为文件 
scatter 散点图 
scatter3 三维散点图 
sec 正割 
sech 双曲正割 
semilogx X轴对数刻度坐标图 
semilogy Y轴对数刻度坐标图 
series 串联连接 
set 设置图形对象属性 
setfield 设置构架数组的域 
setstr 将ASCII码转换为字符的旧版指令 
sign 根据符号取值函数 
signum 符号计算中的符号取值函数 
sim 运行SIMULINK模型 
simget 获取SIMULINK模型设置的仿真参数 
simple 寻找最短形式的符号解 
simplify 符号计算中进行简化操作 
simset 对SIMULINK模型的仿真参数进行设置 
simulink 启动SIMULINK模块库浏览器 
sin 正弦 
sinh 双曲正弦 
size 矩阵的大小 
slice 立体切片图 
solve 求代数方程的符号解 
spalloc 为非零元素配置内存 
sparse 创建稀疏矩阵 
spconvert 把外部数据转换为稀疏矩阵 
spdiags 稀疏对角阵 
spfun 求非零元素的函数值 
sph2cart 球坐标变为直角坐标 
sphere 产生球面 
spinmap 色图彩色的周期变化 
spline 样条插值 
spones 用1置换非零元素 
sprandsym 稀疏随机对称阵 
sprank 结构秩 
spring 紫黄调春色图 
sprintf 把格式数据写成串 
spy 画稀疏结构图 
sqrt 平方根 
sqrtm 方根矩阵 
squeeze 删去大小为1的"孤维" 
sscanf 按指定格式读串 
stairs 阶梯图 
std 标准差 
stem 二维杆图 
step 阶跃响应指令 
str2double 串转换为双精度值 
str2mat 创建多行串数组 
str2num 串转换为数 
strcat 接成长串 
strcmp 串比较 
strjust 串对齐 
strmatch 搜索指定串 
strncmp 串中前若干字符比较 
strrep 串替换 
strtok 寻找第一间隔符前的内容 
struct 创建构架数组 
struct2cell 把构架转换为元胞数组 
strvcat 创建多行串数组 
sub2ind 多下标转换为单下标 
subexpr 通过子表达式重写符号对象 
subplot 创建子图 
subs 符号计算中的符号变量置换 
subspace 两子空间夹角 
sum 元素和 
summer 绿黄调夏色图 
superiorto 设定优先级 
surf 三维着色表面图 
surface 创建面对象 
surfc 带等位线的表面图 
surfl 带光照的三维表面图 
surfnorm 空间表面的法线 
svd 奇异值分解 
svds 求指定的若干奇异值 
switch-case-otherwise 多分支结构 
sym2poly 符号多项式转变为双精度多项式系数向量 
symmmd 对称最小度排序 
symrcm 反向Cuthill-McKee排序 
syms 创建多个符号对象 


T t 

tan 正切 
tanh 双曲正切 
taylortool 进行Taylor逼近分析的交互界面 
text 文字注释 
tf 创建传递函数对象 
tic 启动计时器 
title 图名 
toc 关闭计时器 
trapz 梯形法数值积分 
treelayout 展开树、林 
treeplot 画树图 
tril 下三角阵 
trim 求系统平衡点 
trimesh 不规则格点网线图 
trisurf 不规则格点表面图 triu 上三角阵 try-catch 控制流中的Try-catch结构 type 显示M文件 
U u 
uicontextmenu 创建现场菜单 
uicontrol 创建用户控件 
uimenu 创建用户菜单 
unmkpp 逐段多项式数据的反明晰化 
unwrap 自然态相角 
upper 转换为大写字母 


V v 

var 方差 
varargin 变长度输入宗量 
varargout 变长度输出宗量 
vectorize 使串表达式或内联函数适于数组运算 
ver 版本信息的获取 
view 三维图形的视角控制 
voronoi Voronoi多边形 
vpa 任意精度(符号类)数值 


W w 

warning 显示警告信息 
what 列出当前目录上的文件 
whatsnew 显示Matlab中 Readme文件的内容 
which 确定函数、文件的位置 
while 控制流中的While环结构 
white 全白色图矩阵 
whitebg 指定轴的背景色 
who 列出内存中的变量名 
whos 列出内存中变量的详细信息 
winter 蓝绿调冬色图 
workspace 启动内存浏览器 


X x , Y y , Z z 

xlabel X轴名 
xor 或非逻辑 
yesinput 智能输入指令 
ylabel Y轴名 
zeros 全零数组 
zlabel Z轴名 
zoom 图形的变焦放大和缩小 
ztrans 符号计算Z变换

posted @ 2011-10-22 08:13 距离在行走中消逝 阅读(48) 评论(0) 编辑

Vim常用命令及快捷键

光标控制命令
命令 光标移动 h或^h 向左移一个字符 j或^j或^n 向下移一行 k或^p 向上移一行 l或空格 向右移一个字符 G 移到文件的最后一行 nG 移到文件的第n行 w 移到下一个字的开头 W 移到下一个字的开头,忽略标点符号 b 移到前一个字的开头 B 移到前一个字的开头,忽略标点符号 L 移到屏幕的最后一行 M 移到屏幕的中间一行 H 移到屏幕的第一行 e 移到下一个字的结尾 E 移到下一个字的结尾,忽略标点符号 ( 移到句子的开头 ) 移到句子的结尾 { 移到段落的开头 } 移到下一个段落的开头 0或| 移到当前行的第一列 n| 移到当前行的第n列 ^ 移到当前行的第一个非空字符 $ 移到当前行的最后一个字符 +或return 移到下一行的第一个字符 - 移到前一行的第一个非空字符 在vi中添加文本 命令 插入动作 a 在光标后插入文本 A 在当前行插入文本 i 在光标前插入文本 I 在当前行前插入文本 o 在当前行的下边插入新行 O 在当前行的上边插入新行 :r file 读入文件file内容,并插在当前行后 :nr file 读入文件file内容,并插在第n行后 escape 回到命令模式 ^v char 插入时忽略char的指定意义,这是为了插入特殊字符 在vi中删除文本 命令 删除操作 x 删除光标处的字符,可以在x前加上需要删除的字符数目 nx 从当前光标处往后删除n个字符 X 删除光标前的字符,可以在X前加上需要删除的字符数目 nX 从当前光标处往前删除n个字符 dw 删至下一个字的开头 ndw 从当前光标处往后删除n个字 dG 删除行,直到文件结束 dd 删除整行 ndd 从当前行开始往后删除 db 删除光标前面的字 ndb 从当前行开始往前删除n字 :n,md 从第m行开始往前删除n行 d或d$ 从光标处删除到行尾 dcursor_command 删除至光标命令处,如dG将从当产胆行删除至文件的末尾 ^h或backspace 插入时,删除前面的字符 ^w 插入时,删除前面的字 修改vi文本 每个命令前面的数字表示该命令重复的次数 命令 替换操作 rchar 用char替换当前字符 R text escape 用text替换当前字符直到换下Esc键 stext escape 用text代替当前字符 S或cctext escape 用text代替整行 cwtext escape 将当前字改为text Ctext escape 将当前行余下的改为text cG escape 修改至文件的末尾 ccursor_cmd text escape 从当前位置处到光标命令位置处都改为text 在vi中查找与替换 命令 查找与替换操作 /text 在文件中向前查找text ?text 在文件中向后查找text n 在同一方向重复查找 N 在相反方向重复查找 ftext 在当前行向前查找text Ftext 在当前行向后查找text ttext 在当前行向前查找text,并将光标定位在text的第一个字符 Ttext 在当前行向后查找text,并将光标定位在text的第一个字符 :set ic 查找时忽略大小写 :set noic 查找时对大小写敏感 :s/oldtext/newtext 用newtext替换oldtext :m,ns/oldtext/newtext 在m行通过n,用newtext替换oldtext & 重复最后的:s命令 :g/text1/s/text2/text3 查找包含text1的行,用text3替换text2 :g/text/command 在所有包含text的行运行command所表示的命令 :v/text/command 在所有不包含text的行运行command所表示的命令 在vi中复制文本 命令 复制操作 yy 将当前行的内容放入临时缓冲区 nyy 将n行的内容放入临时缓冲区 p 将临时缓冲区中的文本放入光标后 P 将临时缓冲区中的文本放入光标前 dsfsd "(a-z)nyy 复制n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行 "(a-z)ndd 删除n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行 "(a-z)p 将名字为圆括号的可命名缓冲区的内容放入当前行后 "(a-z)P 将名字为圆括号的可命名缓冲区的内容放入当前行前 在vi中撤消与重复 命令 撤消操作 u 撤消最后一次修改 U 撤消当前行的所有修改 . 重复最后一次修改 , 以相反的方向重复前面的f、F、t或T查找命令 ; 重复前面的f、F、t或T查找命令 "np 取回最后第n次的删除(缓冲区中存有一定次数的删除内容,一般为9) n 重复前面的/或?查找命令 N 以相反方向重复前面的/或?命令 保存文本和退出vi 命令 保存和/或退出操作 :w 保存文件但不退出vi :w file 将修改保存在file中但不退出vi :wq或ZZ或:x 保存文件并退出vi :q! 不保存文件,退出vi :e! 放弃所有修改,从上次保存文件开始再编辑 vi中的选项 选项 作用 :set all 打印所有选项 :set nooption 关闭option选项 :set nu 每行前打印行号 :set showmode 显示是输入模式还是替换模式 :set noic 查找时忽略大小写 :set list 显示制表符(^I)和行尾符号 :set ts=8 为文本输入设置tab stops :set window=n 设置文本窗口显示n行 vi的状态 选项 作用 :.= 打印当前行的行号 := 打印文件中的行数 ^g 显示文件名、当前的行号、文件的总行数和文件位置的百分比 :l 使用字母"l"来显示许多的特殊字符,如制表符和换行符 在文本中定位段落和放置标记 选项 作用 { 在第一列插入{来定义一个段落 [[ 回到段落的开头处 ]] 向前移到下一个段落的开头处 m(a-z) 用一个字母来标记当前位置,如用mz表示标记z '(a-z) 将光标移动到指定的标记,如用'z表示移动到z 在vi中连接行 选项 作用 J 将下一行连接到当前行的末尾 nJ 连接后面n行 光标放置与屏幕调整 选项 作用 H 将光标移动到屏幕的顶行 nH 将光标移动到屏幕顶行下的第n行 M 将光标移动到屏幕的中间 L 将光标移动到屏幕的底行 nL 将光标移动到屏幕底行上的第n行 ^e(ctrl+e) 将屏幕上滚一行 ^y 将屏幕下滚一行 ^u 将屏幕上滚半页 ^d 将屏幕下滚半页 ^b 将屏幕上滚一页 ^f 将屏幕下滚一页 ^l 重绘屏幕 z-return 将当前行置为屏幕的顶行 nz-return 将当前行下的第n行置为屏幕的顶行 z. 将当前行置为屏幕的中央 nz. 将当前行上的第n行置为屏幕的中央 z- 将当前行置为屏幕的底行 nz- 将当前行上的第n行置为屏幕的底行 vi中的shell转义命令 选项 作用 :!command 执行shell的command命令,如:!ls :!! 执行前一个shell命令 :r!command 读取command命令的输入并插入,如:r!ls会先执行ls,然后读入内容 :w!command 将当前已编辑文件作为command命令的标准输入并执行command命令,如:w!grep all :cd directory 将当前工作目录更改为directory所表示的目录 :sh 将启动一个子shell,使用^d(ctrl+d)返回vi :so file 在shell程序file中读入和执行命令 vi中的宏与缩写 (避免使用控制键和符号,不要使用字符K、V、g、q、v、*、=和功能键) 选项 作用 :map key command_seq 定义一个键来运行command_seq,如:map e ea,无论什么时候都可以e移到一个字的末尾来追加文本 :map 在状态行显示所有已定义的宏 :umap key 删除该键的宏 :ab string1 string2 定义一个缩写,使得当插入string1时,用string2替换string1。当要插入文本时,键入string1然后按Esc键,系统就插入了string2 :ab 显示所有缩写 :una string 取消string的缩写 在vi中缩进文本 选项 作用 ^i(ctrl+i)或tab 插入文本时,插入移动的宽度,移动宽度是事先定义好的 :set ai 打开自动缩进 :set sw=n 将移动宽度设置为n个字符 n<< 使n行都向左移动一个宽度 n>> 使n行都向右移动一个宽度,例如3>>就将接下来的三行每行都向右移动一个移动宽度

源自:http://hily.me/blog/2006/04/vi-shortcut/
posted @ 2011-10-22 05:08 距离在行走中消逝 阅读(80) 评论(0) 编辑

点击看大图
点击看大图

 


循着图片上的网址看看 http://www.viemu.com/ ,能够发现,你还可以把 vi/vim 的使用方式应用到 Visual Studio、Word、Outlook 和 SQL Server 中。

posted @ 2011-10-22 04:59 距离在行走中消逝 阅读(47) 评论(0) 编辑

2011年10月21日 #

open/read/writefopen/fread/fwrite的区别

 

open系统调用,返回的是文件描述符,即文件句柄,是文件在文件描述副表里的索引。

fopenC语言库函数,返回的是一个指向文件结构的指针fopenANSI C标准中的C语言库函数,在不同的操作系统中应该调用不同的内核APIUNIX环境下,fopen是对open的封装。

文件描述符是UNIX/Linux下的一个概念,Linux环境下,一切设备皆是文件一切设备皆是以文件的形式进行操作,如网络套接字、硬件设备等。有关文件描述符和文件指针的区别可以参见博文:《文件描述符和文件指针的区别》

设备文件不可以当成流式文件来处理,因此,只能使用open,而fopen只是用来操纵正规文件的,并且设置有缓冲,跟open还是有区别的。

 

openfopen的区别在于:

 

1.缓冲文件系统

缓冲文件系统是借助于文件结构体指针FILE *来对文件进行管理,通过文件指针对文件进行访问,即可以读写字符、字符串、格式化数据,也可以读写二进制数据。

缓 冲文件系统特点:在内存中开辟一个“缓冲区”,为程序里每一个文件使用,当执行读文件操作时,从磁盘文件将数据先读入内存“缓冲区”,装满后再从内存“缓 冲区”依次读入接收的变量。执行写文件操作时,也是先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存“缓冲区”的大 小,影响着实际操作外在的次数,内存“缓冲区”越大,则操作外存的次数就越少,执行速度就越快,效率就越高。一般来说,文件“缓冲区”的大小跟机器是相关 的。

缓冲文件系统的IO函数主要包括:fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind

 

2.非缓冲文件系统

非缓冲文件系统依赖于操作系统,通过操作系统的功能对文件进行读写,是系统级的输入输出,它不设文件结构体指针,只能读写二进制文件(对于UNIX系统内核而言,文本文件和二进制代码文件并无区别),但效率高、速度快,由于ANSI标准不再包括非缓冲文件系统,因此,在读取正规的文件时,建议大家最好不要选择它。

非缓冲文件系统的IO函数主要包括:open, close, read, write, getc, getchar, putc, putchar等。

 

举个例子来说明open系列函数与fopen系列函数的效率问题:如果文件的大小是8k

你如果用read/write,且只分配了2K的缓存,则要将此文件读出需要做4次系统调用来实际从磁盘上读出。如果你用fread/fwrite,则系统自动分配缓存,则读出此文件只要一次系统调用从磁盘上读出。也就是用read/write要读4次磁盘,而用fread/fwrite则只要读1次磁盘。效率比read/write要高4倍。如果程序对内存有限制,则用read/write比较好。都用fread fwrite,它自动分配缓存,速度会很快,比自己来做要简单。如果要处理一些特殊的文件,用read write,如套接口,管道之类的设备文件。

系统调用write的效率取决于你buffer的大小和你要写入的总数量,如果buffer太小,你进入内核空间的次数大增,效率就低下。而fwrite会替你做缓存,减少了实际出现的系统调用,所以效率比较高。

如果只调用一次(这种可能性比较小),这俩差不多,严格来说write要快一点点,因为实际上fwrite封装了write,最后还是用write做真正的写入文件系统工作,但是这其中的差别无所谓。

 

openfopen最主要的区别在于fopen在用户态下就有了缓存,在进行readwrite时,减少了用户态和内核态的切换,而open则每次都需要进行内核态和用户态的切换,其表现为:如果顺序访问文件,fopen系统的函数要比直接调用open系统函数快,如果随机访问文件,open系列函数要比fopen系列函数快。

 

因此,open系列函数与fopen系列的区别可以简单概括为:

open系列函数

fopen系列函数

一般用于打开设备文件(少数情况)

一般用于打开普通文件(大多数情况)

利用文件描述符操纵文件

利用文件指针操作文件

open返回一个文件描述符

fopen返回一个文件指针

POSIX系统调用

ANSI C库函数

低层次IO

高层次IO,对open的扩展和封装

只能在POSIX操作系统上移植

可移植到任何操作系统

非缓冲IO

缓冲IO

只能读取二进制或普通文本

可以读取一个结构

可以指定要创建文件的访问权限

不能指定要创建文件的访问权限

fread返回的是一个FILE结构指针
而read返回的是一个int的文件号

前者fopen/fread的实现是靠调用底层的open/read来实现的.

fopen/fread
是C标准的库函数,操作的对象是: file stream

open/read
是和操作系统有关的系统调用。操作的对象是: “file descriptor”


f是ANSI的C标准库。后面的是UNIX下的系统调用。

带f的带有缓冲,是后面的衍生,
直接和硬件打交道,必须是后面的!

 

UNIX环境下的C 对二进制流文件的读写有两套班子:1) fopen,fread,fwrite ; 2) open, read, write
这里简单的介绍一下他们的区别。

1. fopen
系列是标准的C库函数;open系列是 POSIX 定义的,是UNIX系统里的system call
也就是说,fopen系列更具有可移植性;而open系列只能用在 POSIX 的操作系统上
2.
使用fopen 系列函数时要定义一个指代文件的对象,被称为文件句柄file handler),是一个结构体;而open系列使用的是一个被称为文件描述符 file descriptor)的int型整数。
3. fopen
系列是级别较高的I/O,读写时使用缓冲;而open系列相对低层,更接近操作系统,读写时没有缓冲。由于能更多地与操作系统打交道,open系列可以访问更改一些fopen系列无法访问的信息,如查看文件的读写权限。这些额外的功能通常因系统而异。
4.
使用fopen系列函数需要"#include <sdtio.h>";使用open系列函数需要"#include <fcntl.h>" ,链接时要之用libc-lc
小结:
总的来说,为了使程序获得更好的可移植性,未到非得使用一些fopen系列无法实现的功能的情况下,fopen系列是首选。

 

read/writefread/fwrite区别

1,fread是带缓冲的,read不带缓冲.

eg:

如果文件的大小是8k。你如果用read/write,且只分配了2k的缓存,则要将此文件读出需要做4次系统调用来实际从磁盘上读出。
如果你用fread/fwrite,则系统自动分配缓存,则读出此文件只要一次系统调用从磁盘上读出。
也就是用read/write要读4次磁盘,而用fread/fwrite则只要读1次磁盘。效率比read/write要高4倍。


如果程序对内存有限制,则用read/write比较好
2,fopen
是标准c里定义的,openPOSIX中定义的
.
3,fread
可以读一个结构. readlinux/unix中读二进制与普通文件没有区别
.
4,fopen
不能指定要创建文件的权限.open可以指定权限
.
5,fopen
返回指针,open返回文件描述符(整数
).
6,linux/unix
中任何设备都是文件,都可以用
open,read.

都用fread fwrite,它自动分配缓存,速度会很快,比自己来做要简单。如果要处理一些特殊的描述符,read write,如套接口,管道之类的
系统调用write的效率取决于你buf的大小和你要写入的总数量,如果buf太小,你进入内核空间的次数大增,效率就低下。而fwrite会替你做缓存,减少了实际出现的系统调用,所以效率比较高。
如果只调用一次(可能吗?),这俩差不多,严格来说write要快一点点(因为实际上fwrite最后还是用了write做真正的写入文件系统工作),但是这其中的差别无所谓。

posted @ 2011-10-21 13:39 距离在行走中消逝 阅读(672) 评论(0) 编辑

c语言中的read和write函数

读函数read 
ssize_t read(int fd,void *buf,size_t nbyte) 
read函数是负责从fd中读取内容.成功时,read返回实际所读的字节数,如果返回的值是0,表示已经读到文件的结束了.
小于0表示出现了错误.如果错误为EINTR说明读是由中断引起的, 如果是ECONNREST表示网络连接出了问题.
 
 
写函数write 
ssize_t write(int fd,const void *buf,size_t nbytes) 
write函数将buf中的nbytes字节内容写入文件描述符fd.成功时返回写的字节数.失败时返回-1. 并设置errno变量. 在网络程序中,当我们向套接字文件描述符写时有俩种可能. 
1)write的返回值大于0,表示写了部分或者是全部的数据. 
2)返回的值小于0,此时出现了错误.我们要根据错误类型来处理.  如果错误为EINTR表示在写的时候出现了中断错误. 
如果为EPIPE表示网络连接出现了问题(对方已经关闭了连接).

来自:http://www.cnblogs.com/civet/archive/2011/03/12/1982077.html
posted @ 2011-10-21 13:27 距离在行走中消逝 阅读(530) 评论(0) 编辑

ARM汇编语言源程序语句,一般由指令,伪操作,宏指令和伪指令作成.

ARM汇编语言的设计基础是汇编伪指令,汇编伪操作和宏指令.

    伪操作,是ARM汇编语言程序里的一些特殊的指令助记符,其作用主要是为完成汇编程序做各种准备工作,在源程序运行汇编程序处理,而不是在计算机运行期间有机器执行.也就是说,这些伪操作只是汇编过程中起作用,一旦汇编结束,伪操作的使命也就随之消失.

    宏指令,是一段独立的程序代码,可以插在程序中,它通过伪操作来定义,宏在被使用之前必须提前定义好,宏之间可以互相调用,也可自己递归调用.通过直接书 写宏名来使用宏.并本具宏指令的格式输入输出参数.宏定义本身不产生代码,只是在调用它时把宏体插入到原程序中.宏与C语言中的子函数形参和实参的调用相 似,调用宏时通过实际的指令来  代替宏体实现相关的一段代码,但宏的调用与子程序的调用有本质的区别,既宏并不会节省程序的空间,其优点是简化程序代码,提高程序的可读性以及宏内容可以 同步修改.

    伪操作,宏指令一般与编译程序有关,因此ARM汇编语言的伪操作,宏指令在不同的编译环境下有不同的编写形式和规则.
   
    伪指令也是ARM汇编语言程序里的特殊助记符,也不在处理器运行期间由机器执行,他们在汇编时将被合适的机器指令代替成ARM或Thumb指令,从而实现真正的指令操作.
   
    目前常用的ARM编译环境有2种.
 

      1.       ADS/SDT IDE:ARM公司开发,使用了CodeWarrior公司的编译器.

      2.       集成了GNU开发工具的IDE开发环境;它由GNU的汇编器as,交叉汇编器gcc和连接器id组成.

 ADS编译环境下的ARM伪操作和宏指令,可参考北航出版社的<<ARM微控制器基础与实践》(周立功)

 这里主要讲述ARM GNU常用汇编语言
 
4 ARM GNU常用汇编语言介绍

4.1 ARM GNU常用汇编伪指令介绍
1. abort
.abort: 停止汇编

.align absexpr1,absexpr2:
以某种对齐方式,在未使用的存储区域填充值. 第一个值表示对齐方式,4, 8,16或32. 第二个表达式值表示填充的值.

2. if...else...endif
.if
.else
.endif: 支持条件预编译

3. include
.include "file": 包含指定的头文件, 可以把一个汇编常量定义放在头文件中.
4. comm
.comm  symbol, length:在bss段申请一段命名空间,该段空间的名称叫symbol, 长度为length. Ld连接器在连接会
为它留出空间.

5. data
.data subsection: 说明接下来的定义归属于subsection数据段.

6. equ
.equ symbol, expression: 把某一个符号(symbol)定义成某一个值(expression).该指令并不分配空间.

7. global
.global symbol: 定义一个全局符号, 通常是为ld使用.

8. ascii
.ascii "string": 定义一个字符串并为之分配空间.

9. byte
.byte expressions: 定义一个字节, 并为之分配空间.

10. short
.short expressions: 定义一个短整型, 并为之分配空间.

11. int
.int expressions: 定义一个整型,并为之分配空间.

12 long
.long expressions: 定义一个长整型, 并为之分配空间.

13 word
.word expressions: 定义一个字,并为之分配空间, 4bytes.

14. macro/endm
.macro: 定义一段宏代码, .macro表示代码的开始, .endm表示代码的结束.

15. req
name .req register name: 为寄存器定义一个别名.

16. code
.code [16|32]: 指定指令代码产生的长度, 16表示Thumb指令, 32表示ARM指令.

17. ltorg
.ltorg: 表示当前往下的定义在归于当前段,并为之分配空间.

4.2 ARM GNU专有符号
1. @
表示注释从当前位置到行尾的字符.

2. #
注释掉一整行.

3. ;
新行分隔符.

4.3 操作码

1. NOP
nop
空操作, 相当于MOV r0, r0





2. LDR
ldr <register> , = <expression>
相当于PC寄存器或其它寄存器的长转移.

3.ADR
adr <register> <label>
相于PC寄存器或其它寄存器的小范围转移.

ADRL
adrl <register> <label>
相于PC寄存器或其寄存器的中范围转移.


5 可执行生成说明



5.1 lds文件说明

5.1.1 主要符号说明

    1. OUTPUT_FORMAT(bfdname)
    指定输出可执行文件格式.
   
    2. OUTPUT_ARCH(bfdname)
   
    指定输出可执行文件所运行CPU平台
   
    3. ENTRY(symbol)
    指定可执行文件的入口段
   
    5.1.2 段定义说明
    1. 段定义格式
    SECTIONS
    { ...
        段名 :
        {
            内容
        }
    ...
    }

文章源自:http://www.diybl.com/course/3_program/gcs/2008617/126111.html

posted @ 2011-10-21 12:08 距离在行走中消逝 阅读(183) 评论(0) 编辑

2011年10月11日 #

 

不要对自己抱有很高甚至不切实际的期望,我只是一个很普通的人,在这里更是如此,我普通的不能再普通。把你要走的木板降低高度,不要对自己的结果(比如分数)有太高的要求,只要能认认真真完成就很好。由于天资、环境和其他因素的限制,也许即使我们竭尽全力也无法像某些出众人物一样那么做的好,但不管怎么样,绝大多数情况下,尽力的结果都会比我们不去努力的结果好的多,不是吗?

其实就是一场马拉松比赛,你在开始就因为种种原因落后于别人,如果你不去看不去想终点,也不去想别人,只看着自己的脚下跑,   “管他呢,我先跑过这个小山丘再说”。就这样一个小目标一个小目标的跑,最终你一定会跑到终点线,那时也许你会发现,你并不是最慢的,甚至是不错的。所以,请专注你努力的过程而不是结果,为你认真学习了一个下午或是认真做了一个实验而不是最后考试那个A或是漂亮的实验结果而表扬自己,你会发现完成工作其实不怎么难。

专注于当下,专注于你现在在做的或选择要做的事情,而不是专注于你现在脑子里的想法和情绪。过于关注自己一时的情绪是不懂得推迟满足感的一种表现,就像小孩子想要一个玩具就非要马上得到不可一样,这样的做法会大大削弱一个人的自制力。并且从长期角度上来讲,满足自己一时的情绪需要并非最佳策略,它会降低一个人的自我满足感和幸福感而非增加,想想因为玩乐休闲而拖延了自己工作后自己的负罪感和焦虑感就知道了。不要去理会那些打扰你的情绪波动(比如,对自己说:“你要郁闷就郁闷吧,不管你了”,然后就会不理会了),顺其自然,专心做你要做的事情。把你当时因一时情绪想要做的事情(比如上网、玩游戏、看电影等)记下来,告诉自己等你做完工作就去做那些事情,然后就专心工作,等到工作结束再去做记下的事情。不要为未来过度操心,也是专注于当下的一个方面。

战胜拖延,追根究底,还是要改变自己的思维方式。改变思维方式,尤其是改变潜意识,最重要的是要改变自我对话的方式。

1.       我选择/我想要……      而不是——我必须/我一定得……

2.       这个任务我可以每次做一小步                               而不是——这个任务太大了

3.       我今天要开始做……                   而不是——我今天必须完成……

4.       我也可以是个平凡人                   而不是——我必须完美/出类拔萃

5.       我要休息娱乐/休息娱乐是正常生活的一部分                               而不是——我没空休息娱乐/娱乐休息就是偷懒

posted @ 2011-10-11 22:19 距离在行走中消逝 阅读(29) 评论(0) 编辑

2011年7月8日 #

前几天,碰到了一位老师,一路上相谈甚欢,关于人生,关于青春,关于梦想

  

黄老师要是当年继续留在深圳,不回家,没准现在也是哪个集团的总裁了。我羡慕他现在的安逸,却不知他内心的失落。他曾经的同学现在好多都是哪个哪个集团的老总了,有人现在做的事情就是到荷兰,到澳洲,到台湾,谈谈收购哪个哪个企业。人家闷了,到上海去散散心,而自己呢,只能到紫金山溜达溜达。对于他这种生活,很多人都该安逸知足,可是相形于自己的同学朋友,失落,在所难免。

  

人生很多十字路口,很多选择,每一次选择的背后都会是不一样的人生,没有对与错。年轻时,不该有安逸的生活,谁的青春不苦B?看看IT行业,有多少白手起家的,那些成功者的背后有多少辛酸。年轻时,把自己的经济基础打好了,将来才不会为些柴米油盐而折腰,才有资源有能力去实现自己的想法和心愿。年轻,要坚守住自己的梦想。去拼搏,去经历风浪,去尝试,本身也是一件乐在其中的事情。

  

再者就是多出去走走,多接触接触人。同一件事情,如果能和五六个人谈谈,自己的想法也就接近真实了。不同圈子里的人观点会不一样,就像房子,2000年时,有钱的朋友说房价会继续涨,没钱的朋友认为房子会跌,结果是有钱的越有钱,没钱的越没钱。以后能回来发展还是回来比较好,中国的机会还是比较多的,在美国的生活也是很无聊的。要是回来,就到北京上海这样的一线城市,资源多,机会多,周围有能力的人也多。多问,多听,年轻时的无知不丢人,因为怕别人说自己无知而不问那才丢人,那是愚蠢。等四五十岁,如果自己一事无成,而曾经的同学朋友中肯定有事业有成的,自己会很难受的,那样的日子是更难过的。

  

年轻时要有魄力,有胆识,就像史玉柱那样。

  

谁的青春不苦B?年轻,一定要坚守住自己的梦想。哭过,笑过,收拾收拾心情,继续前行

转一段话:

 青年,注定了要颠簸,要有眼泪和汗水,有委屈,不甘和失败。我为自己这样感到委屈,但是看看周围,想想,也许这正是最正确的生活,这样你走的才会踏实。

20几岁,除了金钱权势和社会地位,什么都有。

无论是鸡飞狗跳,还是躁动不安,青春都不属于安逸,安逸是一潭死水,跳进去就出不来。

而我,

只有两种生活方式,阅读和行走。

也只有两种感情状态,路过和同行。

posted @ 2011-07-08 10:35 距离在行走中消逝 阅读(61) 评论(0) 编辑

2011年5月12日 #

从上到下优先级逐行降低

  

()  []  ->  .

!  ~  ++  --  +  -  (type) sizeof

*  /  %

+  -

<<  >>

<  <=  >  >=

==  !=

&

^

|

&&

||

?:

=  +=  -=  *=  /=  %=  &=  ^=  |=  <<=  >>=

,

posted @ 2011-05-12 11:01 距离在行走中消逝 阅读(71) 评论(0) 编辑

仅列出标题