Chinaunix首页 | 论坛 | 博客
  • 博客访问: 402656
  • 博文数量: 95
  • 博客积分: 5001
  • 博客等级: 大校
  • 技术积分: 1030
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-13 11:43
文章分类

全部博文(95)

文章存档

2007年(95)

我的朋友

分类:

2007-05-13 12:54:17

[转载] 数学工具FAQ


#############################################################################


#                             数学工具FAQ                                   #


#                  MathTools Frequently Asked Questions                     #


#############################################################################



#############################################################################



文档名称: 数学工具常见问题集
预期发布时间: 2002年11月23日星期六
语    言: 简体中文
版本编号: $Id: MathTools.FAQ.CN 1.0 Rev. 4 2002/11/23 15:59:16 QianqianFang$


本文档由FangQ(Qianqian.Fang@dartmouth.edu)维护

作者主页: ~fangq/

任何建议、意见或参与FAQ维护,请到如下页面
cgi-bin/sendemail.html?subject=MathTools%20FAQ



                                 MathTools FAQ正文


>************************************************************************<
>                        第一节:一般性问题
>************************************************************************<

===================================   -  [返回]
1).关于这个FAQ
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/6/22, SMTH/MathTools #

        为什么要写这个FAQ呢?简单一点,就是为了避免重复,慢慢积累,
        提高水平。

        简单问题的重复其实是BBS上学术板块的一个老问题,以前就有人提
        过,最近在水木清华的MathTools上lll又提出来,所以决定借鉴国
        外newsgroup的传统,自己动手写中文的FAQ,把那些几年前就在问、
        现在仍然在问的一些老问题全部都收录在这里,给他们画一个句号。
        等版面上没有了这些老问题,自然会有新的、难的问题出来,等这些
        问题又成为FAQ的时候,大家的水平就慢慢提高了。

        不过自己想来,其实这仍然不是长久解决这个问题的办法,这是一个
        学术传统的问题,需要大家去创造这样一种勤奋、踏实的学术大环境
        ,告诉在这样一个环境中参与交流和寻求帮助的人,当你遇到问题,
        首先要有自己钻研的精神,不要轻易地把这样锻炼自己能力的机会给
        否定掉,而去期待或者"恳求"别人的帮助来替自己寻找偷懒的理由,
        然后才是去有效地寻找资料,或者当自己考虑比较成熟的时候在公众
        论坛上提出自己的问题。

        当然,上面主要是对于你本专业的问题而言,要先思考,再提问,但
        如果非专业的,仅仅用一下就不再使用的,不妨去尽早寻求帮助的好。
        
        这个FAQ今后每个月会更新一次,最新的文档地址参见文件头。如果
        有新的问题收录,文档开头会有一个小的更新列表。原有的解答会被
        更详细和正确的解答代替,但原解答的作者信息将继续保存。

        每个问题的答复开头都有一行作者信息,格式为

        :#作者姓名或者ID(联系方式或Email地址),更新日期,发表地址#

        在本FAQ中引用WWW上获得的代码或者文档时,都将作者信息附在
        文档中,以表示对作者的尊重。

        本文档的维护原则:欢迎转载到其他BBS或学术网站,但在转载
        时请将文件头完整保留。如果仅转载文章内个别问题的回复,请将该
        回复的作者信息保留。本文档未经维护人或各问题回复的作者的许可
        ,严禁以商业目的将本文全部或者部分内容出版。本文档的维护人及
        各问题回复的作者具有文章的所有权和最终解释权。

        本文档的使用原则为免费,本文档维护人对使用本文档内容所造成的
        任何不当后果不承担任何意义上的责任,文档作者不对文档中的代码
        的安全性和正确性作任何形式的承诺。

===================================   -  [返回]
2).什么叫数学工具?
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/6/19, BigGreen/MathTools#

        广义的讲,我们可以把数学本身看作一种工具,她是人类认识这个纷
        繁复杂的世界的眼睛和钥匙,数学用量化和逻辑为描述事物的运动变
        化提供了统一的和严密的基础,并通过不断衍生新的数学分支来为描
        述人类所认知的日趋复杂的世界体系提供强大有力的工具。

        狭义的讲,我们这里涉及的"数学工具"除了部分数学理论和算法之外
        ,主要内容为数学软件,即通过使用计算机,进行特定数学计算或者
        数学表述来实现功能的软件。

        再狭义地讲,数学工具是水木清华和BigGreen BBS上两个版面的名字
        ,这里面聚集了很多很多认识的和不认识的热爱数学、使用数学软件
        的朋友,这个FAQ就是献给他们的。


===================================   -  [返回]
3).数学软件的主要分类有哪些?各有什么特点?
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/6/19, BigGreen/MathTools#

        数学软件从功能上分类可以分为通用数学软件包和专业数学软件包,
        通用数学包功能比较完备,包括各种数学、数值计算、丰富的数学函
        数、特殊函数、绘图函数、用户图形届面交互功能,与其他软件和语
        言的接口及庞大的外挂函数库机制(工具箱)。常见的通用数学软件包
        包括Matlab和Mathematica和Maple,其中Matlab以数值计算见
        长,Mathematica和Maple以符号运算、公式推导见长。

        专用数学包包括绘图软件类(MathCAD,Tecplot,IDL,Surfer,Origin,
        SmartDraw,DSP2000),数值计算类:(Matcom, IDL,
        DataFit,S-Spline,Lindo,Lingo,O-Matrix,Scilab,Octave), 数值计算
        库(linpack/lapack/BLAS/GERMS/IMSL/CXML), 有限元计算类(ANSYS,
        MARC,PARSTRAN, FLUENT, FEMLAB,FlexPDE,Algor,COSMOS,
        ABAQUS,ADINA),计算化学
        类(Gaussian98,Spartan,ADF2000,ChemOffice),数理统计类(GAUSS
        ,SPSS,SAS, Splus,statistica,minitab), 数学公式排版类(MathType,
        MikTeX,Scientific Workplace,Scientific Nootbook)

        上述分类比较笼统,很多软件的功能也有交叉,经验和篇幅限制,不
        能逐一而论。


===================================   -  [返回]
4).什么叫拟合?什么叫插值?二者的区别是什么?
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/6/21, BigGreen/MathTools #

        插值和拟合都是函数逼近或者数值逼近的重要组成部分

        他们的共同点都是通过已知一些离散点集M上的约束,求取一个定义
        在连续集合S(M包含于S)的未知连续函数,从而达到获取整体规律的
        目的,即通过"窥几斑"来达到"知全豹"。

        简单的讲,所谓拟合是指已知某函数的若干离散函数值{f1,f2,…,fn},通
        过调整该函数中若干待定系数f(λ1, λ2,…,λ3), 使得该函数与已知点集的


        差别(最小二乘意义)最小。如果待定函数是线性,就叫线性拟合或者
        线性回归(主要在统计中),否则叫作非线性拟合或者非线性回归。表
        达式也可以是分段函数,这种情况下叫作样条拟合。


        而插值是指已知某函数的在若干离散点上的函数值或者导数信息,通
        过求解该函数中待定形式的插值函数以及待定系数,使得该函数在给
        定离散点上满足约束。插值函数又叫作基函数,如果该基函数定义在
        整个定义域上,叫作全域基,否则叫作分域基。如果约束条件中只有
        函数值的约束,叫作Lagrange插值,否则叫作Hermite插值。

        从几何意义上将,拟合是给定了空间中的一些点,找到一个已知形式
        未知参数的连续曲面来最大限度地逼近这些点;而插值是找到一个(
        或几个分片光滑的)连续曲面来穿过这些点。
       
        具体插值拟合的计算参见本节7和第二节6/7/9/40的回复.



===================================   -  [返回]
5).如何生成任意分布的随机变量?
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/6/21, BigGreen/MathTools #


        首先要生成一个平均分布的伪随机数a
        最简单的一种算法是同余法:
        y(n+1)=a*y(n) mod M
        其中(M, a) 常见的一组取值为(2^31-1= 2147483647, 7^5=16807),可以
        生成[0~M-1]上的随机数,通过线性变换可以得到0~1上的均匀随机数

        如果你需要产生概率分布函数(PDF)为f(x)的一维随机变量,首先计算
        它的概率累积函数(PCF) F(x)=Integrate[f(t),{t,0,x}],则F^-1(y)
        既为所需要的随机变量。其中F^-1为PCF的反函数,y为一个[0~1]上的
        平均分布随机变量。对于复杂的PDF无法求解反函数的,可以在资料上
        查找"变换抽样法"。



===================================   -  [返回]
6).FFT输入和输出的意义是什么?
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/6/21, BigGreen/MathTools #


        我们可以把FFT简单地看作一个变换器,输入N+1个数,输出N+1个数
        ,但他们对应的意义不同,如果把输入当作时域,则输出为频域,表
        怔了其对应域的变化快慢。

        假设输入信号本身的频率为fc(或者说频带宽为fc),被频率为fs的冲击
        串采样(由采样定理,fs >= 2*fc),则变换前的N+1个数字对应的x
        轴为{t0,t1,…tN}={0,Ts,2*Ts,....,N*Ts} (其中Ts为1/fs,为采样周期)

        则变换后的N+1个数对应的x轴变为频率,范围为0~fs,以fs/N为间隔,
        既为频率点{0,fs/N,2*fs/N,……,fs},在matlab中如果用fftshift(fft(data))
 

        ,则变换后对应x轴为-fs/2~fs/2,如果满足采样定理的化,信号频带-fc~fc

        就包含在转换后的频谱里面了,就不会有失真。

        注意:变换后的数字为复数,因为其中包括了幅度的信
        息,abs(fftshift(fft(data)))为幅度,angle(fftshift(fft(data)))为相位





===================================   -  [返回]
7).我有一组x,y,z值,非规则点阵,如何绘制曲面或者等高线或者插值?
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/6/12, SMTH/MathTools #

        1.如果你使用matlab,有如下四种解决办法
          1.1:
                         tri=delaunay(x,y);
                         trimesh(tri,x,y,z); or trisurf(tri,x,y,z);
          1.2: 如果你想得到更加精细和光滑的曲线,而且想绘制coutour
                   则需要用griddata()插值:
                         [xi,yi]=meshgrid(min(x):dx:max(x),min(y):dy:max(y));


                         [xi,yi,zi]=griddata(x,y,z,xi,yi,'cubic');
                         contourf(xi,yi,zi,20);
          1.3: 如果你的matlab安装有PDE Toolbox,可以使用pdeplot(),参见帮助

          1.4: 如果你可以连接国外,可以使用MIT的Kirill K. Pankratov写的SaGA

               工具箱,下载地址在:
       
       

        2.如果你使用Tecplot

          1.先将三列数据按照顺序保存在一个文本文件中
                data.dat文件格式为
                 x1 y1 z1
                 x2 y2 z2
                 ...
          2. Tecplot菜单File\Load Data file,在左上角选择2D
          3. 选中zone,菜单Data\Triangulate
          4. 双击该zone,将mesh掩藏掉,把contour打开,然后在
                 左上角选择3D
          5. 如果想插值,先创建一个更细的网格,然后用data菜单中
                     Interpolation

        3.如果你使用Mathematica

          data={{x1,y1,z1},{x2,y2,z2},......};
          fun=Interpolation[data];
          Plot3D[fun[x,y],{x,xmin,xmax},{y,ymin,ymax}];
          ContourPlot[fun[x,y],{x,xmin,xmax},{y,ymin,ymax}];

        当然,其他还有很多绘图工具,有待补充


===================================   -  [返回]
8).请问哪里能找到绘制等高线的算法?
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/7/23, SMTH/MathTools #

         在一般的计算机图形学的教材中都有常见算法的描述,下面的网址
                 有免费的C代码
                 ~vze2vrva/thesis.html

===================================   -  [返回]
9).特征值与奇异值有什么区别?
:#dimond,2002/6/25, SMTH/MathTools #

        特征值就不用说了,大家都知道。
        奇异值的定义:对于任一个复(实)矩阵A(m*n),设A^为A的共轭转置矩阵,
        即A^是n*m阶,则 A^*A (n*n阶)的特征值的非负平方根为 A 的奇异值,
        也就是A共有n个奇异值,且全部>=0.

        A^*A 是一个半正定矩阵,所以它的特征值>=0

        对于半正定的Hermit方阵而言,特征值与奇异值是一一对应的

===================================   -  [返回]
10).条件数很大(病态)的矩阵如何求逆?
:#granule,2002/7/4, SMTH/MathTools #

        有许多解法!实际上这作为数学的一个分支已经数学家
        们抽象出来研究了很多年(ill-posed problems).文献
        多的不得了。

        简单的解法就是用regularization tools.(典型的是
        Tikhonov regularization).还有许多迭代解法。

        基本思想是要加约束。

        for Ax=b, its standard Tikhonov solution is

        x=inv(trans(A)*A+alfa*I)*Trans(A)*b

        trans() means transpose; inv() is inverse;
        alfa is a positive sclar. The quality of solution
        depends on alfa directly. There is a optimal alfa

        You can refer to the relevant topics such as:
        inverse problems, ill-conditioned problems.

===================================   -  [返回]
11).什么是Gaussian拟合?
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/9/23, BigGreen/MathTools #

        高斯拟合(Gaussian Fitting)即使用形如:
    
          Gi(x)=Ai*exp((x-Bi)^2/Ci^2)

        的高斯函数对数据点集进行函数逼近的拟合方法。

        其实可以跟多项式拟合类比起来,不同的是多项式拟合是用幂函数系,
        而高斯拟合是用高斯函数系。

        使用高斯函数来进行拟合,优点在于计算积分十分简单快捷。这一点
        在很多领域都有应用,特别是计算化学。著名的化学软件Gaussian98
        就是建立在高斯基函数拟合的数学基础上的。


>************************************************************************<
>                        第二节:Matlab的常见问题
>************************************************************************<

===================================   -  [返回]
1).Matlab 6.X在Windows 2000/XP上无法启动
:#highsun,2001/3/2, SMTH/NewSoftware #

        MathWorks的解决办法虽然是针对繁体中文系统的,我试过在简体
        中文系统下一样可以用。

       
       
       
        Solution Number: 26990
        Date Last Modified: 2001-01-30
        Product:    MATLAB 6.0 ==> Current Version
        Platform:    Windows
       
        Problem Description
       
        Why do I encounter problems when running MATLAB 6.0 (R12) on Hebrew


        or
        Traditional Chinese (Taiwan) Windows? I try to start MATLAB but after


        the splash screen disappears, MATLAB exits.
        PLEASE NOTE: This solution only applies to MATLAB 6.0. If you have a


        similar problem with MATLAB 5.0 or the Student Edition of MATLAB 5.0,


        see solution 7213.
       
        Solution:
       
        This problem is caused by a bug in one of the font properties files


        we ship with MATLAB. The font.properties file is used by Java to map


        the standard Java font names to system fonts for a particular
        However, we made a few assumptions that do not hold for the Hebrew or


        language operating system. Traditional Chinese Windows, causing
        We have created a fixed version of the mwt.jar file that you can use


        this problem. correct this. To use the fix, first rename your mwt.jar


        to file as mwt.old. This file is found in the $MATLAB\java\jar
        directory, where $MATLAB is your MATLAB root directory. Then
        download the newer mwt.jar file from:
       
        ftp://ftp.mathworks.com/pub/tech-support/solutions/s26990
       
        and place it in your $MATLAB\java\jar directrory. Then restart
        MATLAB;this should correct the problem you're seeing.

===================================   -  [返回]
2).我有一组x,y,z值,非规则排列,如何在Matlab中绘图?
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/6/12, BigGreen/MathTools #

        参见第一节问题7)
       
===================================   -  [返回]
3).如何在给定句柄的axis里绘图?
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/6/12, SMTH/MathTools #

        plot(data,'parent',haxis);
        或者
        hbar=bar(data);
        set(hbar,'parent',haxis);


===================================   -  [返回]
4).由Matlab符号运算得到的公式怎么才能将数据代进去运算?
:#ramjet (德芙)2002/3/3, SMTH/MathTools #

        使用subs(),或先将值赋予一个符号变量,然后用eval()


===================================   -  [返回]
5).在Matlab中如何求最值点?如何求一维数组的极值?
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/6/18, SMTH/MathTools#

        最值:
        一维或多维数组最值用max(data(:))
        如果想返回最值所在的位置,用[Y,I]=max(data)

:#FangQ(Qianqian.Fang@dartmouth.edu), 2001/4/21,UESTC/Math#

        极值:
        data是你的数据,
        find(diff(sign(diff(data)))==-2)+1
        找到极大值的位置

        find(diff(sign(diff(data)))==2)+1
        找到极小值的位置

        data(find(diff(sign(diff(data)))==-2)+1)和
        data(find(diff(sign(diff(data)))==2)+1)
        返回的是极大值和极小值


===================================   -  [返回]
6).Matlab中如何作线性拟合/线性回归/多元线性回归?
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/6/21, BigGreen/MathTools #


        即用y=a*x+b来拟合一组数据{{x1,y1},{x2,y2}…{xn,yn}}
        matlab中使用polyfit
        x=data(:,1);
        y=data(:,2);
        p=polyfit(x,y,1);
        p(1)为斜率a,p(2)为截距b

        多元线性回归即用y=a1*x1+a2*x2+..+am*xm来拟合数据点{x1i,x2i,…xmi,yi}


        (i=1~n)

          |x11,x21,…xm1|
        A=|x12,x22,…xm2|
          |……………   |
          |x1n,x2n,…xmn|

        Y={y1,y2,y3,…,yn}'

        则系数{a1,a2,…,am}'=pinv(A)*Y
        在matlab中使用
        coeff=A\Y
        则可以得到最小二乘意义上的拟合系数


===================================   -  [返回]
7).Matlab中如何作圆回归?
:#Peter Boettcher (boettcher@ll.mit.edu),2002/5/16, comp.soft-sys.matlab#

        Q5.5: How can I fit a circle to a set of XY data?
        =================================================

           An elegant chunk of code to perform least-squares circle fitting


        was written by Bucher Izhak and has been floating around the
        newgroup for some time.  The first reference to it that I can
        find is in:

                 function [xc,yc,R,a] = circfit(x,y)
                 %CIRCFIT  Fits a circle in x,y plane
                 %
                 % [XC, YC, R, A] = CIRCFIT(X,Y)
                 % Result is center point (yc,xc) and radius R.A is an
                 % optional output describing the circle's equation:
                 %
                 %   x^2+y^2+a(1)*x+a(2)*y+a(3)=0

                 % by Bucher izhak 25/oct/1991

                 n=length(x);  xx=x.*x; yy=y.*y; xy=x.*y;
                 A=[sum(x) sum(y) n;sum(xy) sum(yy)...
                    sum(y);sum(xx) sum(xy) sum(x)];
                 B=[-sum(xx+yy) ; -sum(xx.*y+yy.*y) ; -sum(xx.*x+xy.*y)];
                 a=A\B;
                 xc = -.5*a(1);
                 yc = -.5*a(2);
                 R  =  sqrt((a(1)^2+a(2)^2)/4-a(3));

           Tom Davis provided a more sophisticated approach that works
        for more cases in  and Code included.


===================================   -  [返回]
8).Matlab中如何绘制箭头?
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/6/21, SMTH/MathTools #

        到
        2-D Plotting and Graphics中查找arrow.m,或者
       
        ~jec/matcomp/matcompmfiles/mfiles.html


===================================   -  [返回]
9).Matlab中如何作二维数据的插值?
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/6/21, BigGreen/MathTools #


        对于一维、二维、三维规则数据点阵使用interp1/interp2/interp3,
        二维、三维非规则数据用griddata/griddata3


===================================   -  [返回]
10).Matlab中如何绘制三维数据阵?
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/6/21, BigGreen/MathTools #


        如果使用matlab,打开帮助窗口,在目录树上找到
        MATLAB\Using Matlab\
           3-D Visualization: Volume Visualization Techniques
          
        如果图形复杂,建议使用Tecplot,参见Tecplot手册中数据格式,将你
        的三维数据读入Tecplot,双击zone,可以设置mesh/contour/surface
        transparency等。
       
        在Field菜单中有3D Iso-surface Details和3D Slice Details,可以绘制等值


        面和任意平面的截面图。


===================================   -  [返回]
11).Matlab中如何注解一大段代码?
:#hyphone,2002/7/6, SMTH/MathTools #

        注释大段代码选中代码,Ctrl+R;取消注释,选中代码,Ctrl+T。
        或者用Edit菜单或者右键弹出中的注释。

:#misc,2002/6/21, SMTH/MathTools #

        if(0)
        大段的代码
        end


===================================   -  [返回]
12).Matlab中如何计算程序运行的时间?
:#misc,2002/6/21, SMTH/MathTools #

        tic
          your_code;
        toc
        或者使用
        t=cputime;
          your_operation;
        cputime-t


===================================   -  [返回]
13).Matlab中如何改变默认的工作路径?
:#SindyGong, 2002/4/7, SMTH/MathTools #

        编辑一个startup.m文件,其中cd yourpath
        或者在X:\matlab\toolbox\local\matlabrc.m的最后添加cd yourpath
        参见:
       


===================================   -  [返回]
14).Matlab如何改变默认的图形字体?
:#comp.soft-sys.matlab FAQ#

        编辑一个startup.m文件,其中
        set(0,'DefaultObjectnamePropertyName',Value)
        或者在X:\matlab\toolbox\local\matlabrc.m的最后添加
        set(0,'DefaultObjectnamePropertyName',Value)


===================================   -  [返回]
15).如何在Matlab中实现交互操作?
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools #


        如果只在命令窗口进行交互操作,请参见demo中的例子,主要是
        通过input命令和pause/clear/disp等实现的,还有一些窗口资源可以使
        用:
        uigetfile,uiputfile,uiwait,uisetcolor,uisetfont, uiopen,uisave
        inputdlg,msgbox,helpdlg,questdlg,warndlg,errordlg


===================================   -  [返回]
16).Matlab中为什么只能在小数点后显示四位?
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools #


        用format命令来改变命令窗口数字的显示格式和精度,但不会影
        响matlab的计算精度,matlab的矩阵运算默认都是双精度浮点型运算。



===================================   -  [返回]
17).Matlab如何在命令窗口按照格式输出?
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/6/21,SMTHTools #

        fprintf(1,"your_format_string",var1,var2,…);


===================================   -  [返回]
18).如何在Matlab中画隐函数曲线?
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools #


        在
        查找implicit,会找到一个Arthur Jutan写的implot.m
        Mathematica中绘制隐函数用ImplicitPlot[]
        或者ImplicitPlot3D[]
        Maple中为implicitplot(),implicitplot3d()
        参见
        ~fangq/MATH/download/source/
         ImplicitPlot3D.htm


===================================   -  [返回]
19).Matlab中什么函数可以删除矩阵的某一行或列?
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools #


        A(j,:)=[];  %删除A的第j行
        A(:,i)=[];  %删除A的第i列


===================================   -  [返回]
20).Matlab中能开的最大数组是由什么决定的?
:# chenft (mike),2002/6/1, SMTH/MathTools #

      I have had similar problems. Below is an explanation I received from 


      Ian Boyd
      from Mathworks (just giving credit where credit is due) that explains


      what's happening. You solution is to run matlab with the -nojvm mode.

      "The heap memory system in JAVA consists of data and handle elements.


      When you allocate a variable you get a handle and data. As long as 
      data has an associated handle, the JVM considers it valid and
      will not clean it up.

      However, when you call the clear function in MATLAB, all handles are
      destroyed, and the data associated is now invalid. This means that 
      the JAVA engine can free up that data (garbage collection), but does
      not mean that it will clean it up at that moment.

      Calling the PACK command encourages JAVA to run the garbage collector


      and de-fragment the memory. But it does not force it to (This is part 


      of the JAVA design). Even though the memory is 'freed' on the heap, 
      it is not actually free to the OS, it is only free to the JVM. Here 
      is one way to think of it:

      [MATLAB]
      [JAVA]
        [OS]
      MATLAB runs on JAVA (virtual machine), and Java runs on the OS
      (physical machine). So when MATLAB is running in JAVA mode memory
      allocations  are requested from the JRE, not the OS.

      One problem you may be running into is that the default maximum
      JAVA heap size is relatively low ( <= 64 MB), so that is all the
      memory one session of MATLAB will ever get on your system.

      The good news is that you can increase this value. You will need
      to create a java.opts file in $MATLAB/bin/$ARCH (or in the current
      directory when  you start MATLAB) and put the following command:

      %%%BEGIN CODE%%%
      maxHeapSize = 268435456
      %%%END CODE%%%

      This will give you 256MB of JVM memory and you can adjust the
      parameter as needed.

      Note: $MATLAB is the root directory and $ARCH is your system
      architecture. This solution works on Windows as well as Solaris,
      Linux,Alpha, and SGI. A similar operation is possible on IBM and
      HPUX, but with a different syntax.

      For the 1.1.8 JVM (Windows, Linux, Solaris, Alpha, SGI) our
      defaults are:
     
         minHeapSize = 16000000
         maxHeapSize = 64000000

      These are the structure field names in  that correspond to
      -ms and -mx, and the settings above are roughly 16MB and 64MB.
      To investigate the Java heap a bit, ask via the following:
         >> java.lang.Runtime.getRuntime.totalMemory
         >> java.lang.Runtime.getRuntime.freeMemory

      When the free memory hits zero, Java will double the heap size
      (up to the maximum setting).

      If you choose to run without Java, you will remove the overhead
      of the middle man, but you will also lose some MATLAB functionality
      (mostly graphics and the Editor). You will still have most
      of the computational power though.

      Without JAVA, memory management will come directly from the OS,
      and a CLEAR operation will result in memory being freed back to
      the OS.


===================================   -  [返回]
21).如何在Matlab中添加新的工具箱?
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools #


        如果是Matlab安装光盘上的工具箱,重新执行安装程序,选中即可。
        如果是单独下载的工具箱,一般情况下仅需要把新的工具箱解压到某
        个目录,然后用addpath(对于多个目录的使用genpath()或者pathtool添
        加工具箱的路径,然后用which newtoolbox_command.m来检验是否可
        以访问。如果能够显示新设置的路径,则表明该工具箱可以使用了。
        具体请看工具箱自己代的README文件。



===================================   -  [返回]

阅读(3635) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~