﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Prayer-随笔分类-计算机基础</title><link>http://www.cppblog.com/prayer/category/11497.html</link><description>在一般中寻求卓越</description><language>zh-cn</language><lastBuildDate>Thu, 21 Mar 2019 13:20:13 GMT</lastBuildDate><pubDate>Thu, 21 Mar 2019 13:20:13 GMT</pubDate><ttl>60</ttl><item><title>MATLAB</title><link>http://www.cppblog.com/prayer/archive/2010/09/21/127234.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Tue, 21 Sep 2010 04:56:00 GMT</pubDate><guid>http://www.cppblog.com/prayer/archive/2010/09/21/127234.html</guid><wfw:comment>http://www.cppblog.com/prayer/comments/127234.html</wfw:comment><comments>http://www.cppblog.com/prayer/archive/2010/09/21/127234.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/prayer/comments/commentRss/127234.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/prayer/services/trackbacks/127234.html</trackback:ping><description><![CDATA[<p>
MATLAB是矩阵实验室（Matrix Laboratory）的简称，是美国MathWorks公司出品的商业<a  href="http://baike.baidu.com/view/1658637.htm" target="_blank">数学软件</a>，用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境，主要包括MATLAB和Simulink两大部分。</p>
<fieldset class="text_dir nslog-area" id="catalog">
<p>目录</p>
<dl style="width: 297px; visibility: hidden; padding-bottom: 20px;" id="holder1"><dd><a  href="http://baike.baidu.com/view/10598.htm#1" name="STAT_ONCLICK_UNSUBMIT_CATALOG">基本功能</a></dd><dd><a  href="http://baike.baidu.com/view/10598.htm#2" name="STAT_ONCLICK_UNSUBMIT_CATALOG">应用</a></dd><dd><a  href="http://baike.baidu.com/view/10598.htm#3" name="STAT_ONCLICK_UNSUBMIT_CATALOG">发展历程</a></dd><dd><a  href="http://baike.baidu.com/view/10598.htm#4" name="STAT_ONCLICK_UNSUBMIT_CATALOG">特点</a></dd><dd><a  href="http://baike.baidu.com/view/10598.htm#5" name="STAT_ONCLICK_UNSUBMIT_CATALOG">优势</a>
<ol style="display: none;">
    <li><a  href="http://baike.baidu.com/view/10598.htm#5_1" name="STAT_ONCLICK_UNSUBMIT_CATALOG">（1）友好的工作平台和编程环境</a></li>
    <li><a  href="http://baike.baidu.com/view/10598.htm#5_2" name="STAT_ONCLICK_UNSUBMIT_CATALOG">（2）简单易用的程序语言</a></li>
    <li><a  href="http://baike.baidu.com/view/10598.htm#5_3" name="STAT_ONCLICK_UNSUBMIT_CATALOG">（3）强大的科学计算机数据处理能力</a></li>
    <li><a  href="http://baike.baidu.com/view/10598.htm#5_4" name="STAT_ONCLICK_UNSUBMIT_CATALOG">（4）出色的图形处理功能</a></li>
    <li><a  href="http://baike.baidu.com/view/10598.htm#5_5" name="STAT_ONCLICK_UNSUBMIT_CATALOG">（5）应用广泛的模块集合工具箱</a></li>
    <li><a  href="http://baike.baidu.com/view/10598.htm#5_6" name="STAT_ONCLICK_UNSUBMIT_CATALOG">（6）实用的程序接口和发布平台</a></li>
    <li><a  href="http://baike.baidu.com/view/10598.htm#5_7" name="STAT_ONCLICK_UNSUBMIT_CATALOG">（7）应用软件开发（包括用户界面）</a></li>
</ol>
</dd><dd><a  href="http://baike.baidu.com/view/10598.htm#6" name="STAT_ONCLICK_UNSUBMIT_CATALOG">工具</a>
<ol style="display: none;">
    <li><a  href="http://baike.baidu.com/view/10598.htm#6_1" name="STAT_ONCLICK_UNSUBMIT_CATALOG">常用工具箱</a></li>
    <li><a  href="http://baike.baidu.com/view/10598.htm#6_2" name="STAT_ONCLICK_UNSUBMIT_CATALOG">常用函数</a></li>
</ol>
</dd></dl>
<dl class="arr" style="width: 297px; display: block;" id="holder2"><dd><a  href="http://baike.baidu.com/view/10598.htm#1" name="STAT_ONCLICK_UNSUBMIT_CATALOG">基本功能</a></dd><dd><a  href="http://baike.baidu.com/view/10598.htm#2" name="STAT_ONCLICK_UNSUBMIT_CATALOG">应用</a></dd><dd><a  href="http://baike.baidu.com/view/10598.htm#3" name="STAT_ONCLICK_UNSUBMIT_CATALOG">发展历程</a></dd><dd><a  href="http://baike.baidu.com/view/10598.htm#4" name="STAT_ONCLICK_UNSUBMIT_CATALOG">特点</a></dd><dd><a  href="http://baike.baidu.com/view/10598.htm#5" name="STAT_ONCLICK_UNSUBMIT_CATALOG">优势</a>
<ol style="display: none;">
    <li><a  href="http://baike.baidu.com/view/10598.htm#5_1" name="STAT_ONCLICK_UNSUBMIT_CATALOG">（1）友好的工作平台和编程环境</a></li>
    <li><a  href="http://baike.baidu.com/view/10598.htm#5_2" name="STAT_ONCLICK_UNSUBMIT_CATALOG">（2）简单易用的程序语言</a></li>
    <li><a  href="http://baike.baidu.com/view/10598.htm#5_3" name="STAT_ONCLICK_UNSUBMIT_CATALOG">（3）强大的科学计算机数据处理能力</a></li>
    <li><a  href="http://baike.baidu.com/view/10598.htm#5_4" name="STAT_ONCLICK_UNSUBMIT_CATALOG">（4）出色的图形处理功能</a></li>
    <li><a  href="http://baike.baidu.com/view/10598.htm#5_5" name="STAT_ONCLICK_UNSUBMIT_CATALOG">（5）应用广泛的模块集合工具箱</a></li>
    <li><a  href="http://baike.baidu.com/view/10598.htm#5_6" name="STAT_ONCLICK_UNSUBMIT_CATALOG">（6）实用的程序接口和发布平台</a></li>
    <li><a  href="http://baike.baidu.com/view/10598.htm#5_7" name="STAT_ONCLICK_UNSUBMIT_CATALOG">（7）应用软件开发（包括用户界面）</a></li>
</ol>
</dd><dd><a  href="http://baike.baidu.com/view/10598.htm#6" name="STAT_ONCLICK_UNSUBMIT_CATALOG">工具</a>
<ol style="display: none;">
    <li><a  href="http://baike.baidu.com/view/10598.htm#6_1" name="STAT_ONCLICK_UNSUBMIT_CATALOG">常用工具箱</a></li>
    <li><a  href="http://baike.baidu.com/view/10598.htm#6_2" name="STAT_ONCLICK_UNSUBMIT_CATALOG">常用函数</a></li>
</ol>
</dd>
<div class="nslog:1017" id="catalog-holder">展开</div>
</dl>
</fieldset>
<div id="lemmaContent">
<h2 class="first">
<div class="text_edit editable-title"><a  href="http://baike.baidu.com/view/10598.htm#" class="nslog:1019">编辑本段</a></div>
<a name="1"></a>基本功能</h2>
<strong>MATLAB</strong>和<a  href="http://baike.baidu.com/view/30608.htm" target="_blank">Mathematica</a>、<a  href="http://baike.baidu.com/view/127864.htm" target="_blank">Maple</a>并称为三大数学软件。它在数学类科技应用软件中在<a  href="http://baike.baidu.com/view/920695.htm" target="_blank">数值计算</a>方面首屈一指。MATLAB可以进行<a  href="http://baike.baidu.com/view/10337.htm" target="_blank">矩阵</a>运算、绘制函数和数据、实现算法、创建用户界面、连
<div style="float: right; visibility: visible; padding-bottom: 3px; position: relative; width: 200px;" class="text_pic"><a  href="http://baike.baidu.com/image/9252ae7e845661020dd7da35" target="_blank" title="查看图片" class="pic-handle">&nbsp;&nbsp;</a><a  href="http://baike.baidu.com/image/9252ae7e845661020dd7da35" target="_blank"><img  src="http://imgsrc.baidu.com/baike/abpic/item/9252ae7e845661020dd7da35.jpg" class="editorImg" title="matlab开发工作界面"></a>
<p class="pic-info">matlab开发工作界面</p>
</div>
接其他编程语言的程序等，主要应用于工程计算、控制设计、信号处理与通讯、<a  href="http://baike.baidu.com/view/14662.htm" target="_blank">图像处理</a>、<a  href="http://baike.baidu.com/view/1345304.htm" target="_blank">信号检测</a>、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵，它的指令表达式与数学、工程中常用的形式十分相似，故用
MATLAB来解算问题要比用C，FORTRAN等语言完成相同的事情简捷得多，并且mathwork也吸收了像Maple等软件的优点,使MATLAB
成为一个强大的数学软件。在新的版本中也加入了对<a  href="http://baike.baidu.com/view/10075.htm" target="_blank">C</a>，<a  href="http://baike.baidu.com/view/36402.htm" target="_blank">FORTRAN</a>，<a  href="http://baike.baidu.com/view/824.htm" target="_blank">C++ </a>，<a  href="http://baike.baidu.com/view/29.htm" target="_blank">JAVA</a>的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用，此外许多的MATLAB爱好者都编写了一些经典的程序，用户可以直接进行下载就可以用。
<h2 class="">
<div class="text_edit editable-title"><a  href="http://baike.baidu.com/view/10598.htm#" class="nslog:1019">编辑本段</a></div>
<a name="2"></a>应用</h2>
MATLAB 产品族可以用来进行以下各种工作：
● 数值分析
● 数值和符号计算
● 工程与科学绘图
● 控制系统的设计与仿真
● <a  href="http://baike.baidu.com/view/286846.htm" target="_blank">数字图像处理</a> 技术
● <a  href="http://baike.baidu.com/view/162096.htm" target="_blank">数字信号处理</a> 技术
● 通讯系统设计与仿真
<div style="float: right; visibility: visible; padding-bottom: 3px; position: relative; width: 200px;" class="text_pic"><a  href="http://baike.baidu.com/image/3792cb39f49b3ec93b87ce72" target="_blank" title="查看图片" class="pic-handle">&nbsp;&nbsp;</a><a  href="http://baike.baidu.com/image/3792cb39f49b3ec93b87ce72" target="_blank"><img  src="http://imgsrc.baidu.com/baike/abpic/item/3792cb39f49b3ec93b87ce72.jpg" class="editorImg" title="MATLAB在通讯系统设计与仿真的应用"></a>
<p class="pic-info">MATLAB在通讯系统设计与仿真的应用</p>
</div>
● 财务与金融工程
MATLAB 的应用范围非常广，包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱（单独提供的专用 MATLAB 函数集）扩展了 MATLAB 环境，以解决这些应用领域内特定类型的问题。
<h2 class="">
<div class="text_edit editable-title"><a  href="http://baike.baidu.com/view/10598.htm#" class="nslog:1019">编辑本段</a></div>
<a name="3"></a>发展历程</h2>
20世纪70年代，美国新墨西哥大学计算机科学系主任Cleve
Moler为了减轻学生编程的负担，用FORTRAN编写了最早的MATLAB。1984年由Little、Moler、Steve
Bangert合作成立了的MathWorks公司正式把MATLAB推向市场。到20世纪90年代，MATLAB已成为国际控制界的标准计算软件。
<strong>版本更新:</strong>
<table>
    <tbody>
        <tr>
            <td width="100" align="">版本<sup>[1]</sup><a name="ref_[1]"></a></td>
            <td width="100" align="">建造编号</td>
            <td width="100" align="">发布时间</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 1.0</td>
            <td><br></td>
            <td width="100" align="">1984 </td>
        </tr>
        <tr>
            <td width="100" align="">MATALB 2</td>
            <td><br></td>
            <td width="100" align="">1986</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 3</td>
            <td><br></td>
            <td width="100" align="">1987</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 3.5</td>
            <td><br></td>
            <td width="100" align="">1990</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 4</td>
            <td><br></td>
            <td width="100" align="">1992</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 4.2c</td>
            <td width="100" align="">R7 </td>
            <td width="100" align="">1994</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 5.0</td>
            <td width="100" align="">R8</td>
            <td width="100" align="">1996</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 5.1</td>
            <td width="100" align="">R9</td>
            <td width="100" align="">1997</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 5.1.1</td>
            <td width="100" align="">R9.1 </td>
            <td width="100" align="">1997</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 5.2</td>
            <td width="100" align="">R10 </td>
            <td width="100" align="">1998</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 5.2.1</td>
            <td width="100" align="">R10.1</td>
            <td width="100" align="">1998</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 5.3</td>
            <td width="100" align="">R11</td>
            <td width="100" align="">1999</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 5.3.1</td>
            <td width="100" align="">R11.1</td>
            <td width="100" align="">1999</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 6.0</td>
            <td width="100" align="">R12</td>
            <td width="100" align="">2000</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 6.1</td>
            <td width="100" align="">R12.1</td>
            <td width="100" align="">2001</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 6.5</td>
            <td width="100" align="">R13</td>
            <td width="100" align="">2002</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 6.5.1</td>
            <td width="100" align="">R13SP1</td>
            <td width="100" align="">2003</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 6.5.2</td>
            <td width="100" align="">R13SP2</td>
            <td width="100" align="">2003</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 7</td>
            <td width="100" align="">R14</td>
            <td width="100" align="">2004</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 7.0.1</td>
            <td width="100" align="">R14SP1</td>
            <td width="100" align="">2004</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 7.0.4 </td>
            <td width="100" align="">R14SP2</td>
            <td width="100" align="">2005</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 7.1 </td>
            <td width="100" align="">R14SP3</td>
            <td width="100" align="">2005</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 7.2</td>
            <td width="100" align="">R2006a</td>
            <td width="100" align="">2006</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 7.3 </td>
            <td width="100" align="">R2006b</td>
            <td width="100" align="">2006</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 7.4</td>
            <td width="100" align="">R2007a</td>
            <td width="100" align="">2007</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 7.5</td>
            <td width="100" align="">R2007b</td>
            <td width="100" align="">2007</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 7.6</td>
            <td width="100" align="">R2008a</td>
            <td width="100" align="">2008</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 7.7</td>
            <td width="100" align="">R2008b</td>
            <td width="100" align="">2008</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 7.8</td>
            <td width="100" align="">R2009a</td>
            <td width="100" align="">2009.3.6</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 7.9</td>
            <td width="100" align="">R2009b</td>
            <td width="100" align="">2009.9.4</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 7.10</td>
            <td width="100" align="">R2010a</td>
            <td width="100" align="">2010.3.5</td>
        </tr>
        <tr>
            <td width="100" align="">MATLAB 7.11</td>
            <td width="100" align="">R2010b</td>
            <td width="100" align="">2010.9.3</td>
        </tr>
    </tbody>
</table>
<h2 class="">
<div class="text_edit editable-title"><a  href="http://baike.baidu.com/view/10598.htm#" class="nslog:1019">编辑本段</a></div>
<a name="4"></a>特点</h2>
●此高级语言可用于技术计算
●此开发环境可对代码、文件和数据进行管理
●交互式工具可以按迭代的方式探查、设计及求解问题
●数学函数可用于<a  href="http://baike.baidu.com/view/32243.htm" target="_blank">线性代数</a>、统计、傅立叶分析、筛选、优化以及数值积分等
●二维和三维图形函数可用于可视化数据
●各种工具可用于构建自定义的图形用户界面
●各种函数可将基于MATLAB的算法与外部应用程序和语言（如 C、C++、Fortran、Java、COM 以及 Microsoft Excel）集成<sup>[2]</sup><a name="ref_[2]"></a>
●不支持大写输入，内核仅仅支持小写
●自带仿真系统
<h2 class="">
<div class="text_edit editable-title"><a  href="http://baike.baidu.com/view/10598.htm#" class="nslog:1019">编辑本段</a></div>
<a name="5"></a>优势</h2>
<h3><a name="5_1"></a>（1）友好的工作平台和编程环境</h3>
MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件，其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、
历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级，MATLAB的
用户界面也越来越精致，更加接近Windows的标准界面，人机交互性更强，操作更简单。而且新版本的MATLAB提供了完整的联机查询、帮助系统，极大
的方便了用户的使用。简单的编程环境提供了比较完备的调试系统，程序不必经过编译就可以直接运行，而且能够及时地报告出现的错误及进行出错原因分析。
<h3><a name="5_2"></a>（2）简单易用的程序语言</h3>
Matlab一个高级的矩阵/阵列语言，它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同
步，也可以先编写好一个较大的复杂的应用程序（M文件）后再一起运行。新版本的MATLAB语言是基于最为流行的C＋＋语言基础上的，因此语法特征与
C＋＋语言极为相似，而且更加简单，更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性
极强，这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。
<h3><a name="5_3"></a>（3）强大的科学计算机数据处理能力</h3>
MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数，可以方便的实现用户所需的各种计算功能。函数中所使用的算法
都是科研和工程计算中的最新研究成果，而前经过了各种优化和容错处理。在通常情况下，可以用它来代替底层编程语言，如C和C++
。在计算要求相同的情况下，使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵，特征向量、快速傅立
叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、
工程中的优化问题、<a  href="http://baike.baidu.com/view/891721.htm" target="_blank">稀疏矩阵</a>运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。
<h3><a name="5_4"></a>（4）出色的图形处理功能</h3>
<div style="float: right; visibility: visible; padding-bottom: 3px; position: relative; width: 198px;" class="text_pic"><a  href="http://baike.baidu.com/image/c71d0e38deab3bd3b311c72f" target="_blank" title="查看图片" class="pic-handle">&nbsp;&nbsp;</a><a  href="http://baike.baidu.com/image/c71d0e38deab3bd3b311c72f" target="_blank"><img  src="http://imgsrc.baidu.com/baike/abpic/item/c71d0e38deab3bd3b311c72f.jpg" class="editorImg" title="图形处理功能"></a>
<p class="pic-info">图形处理功能</p>
</div>
MATLAB
自产生之日起就具有方便的数据可视化功能，以将向量和矩阵用图形表现出来，并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处
理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善，使它不仅在一般数据可视化软件都具有的
功能（例如二维曲线和三维曲面的绘制和处理等）方面更加完善，而且对于一些其他软件所没有的功能（例如图形的光照处理、色度处理以及四维数据的表现
等），MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求，例如图形对话等，MATLAB也有相应的功能函数，保证了用户不同层次的要
求。另外新版本的MATLAB还着重在图形用户界面（GUI）的制作上作了很大的改善，对这方面有特殊要求的用户也可以得到满足。
<h3><a name="5_5"></a>（5）应用广泛的模块集合工具箱</h3>
MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说，它们都是由特定领域的专家开发的，用户可以直接使用工具箱学习、应用和评估
不同的方法而不需要自己编写代码。目前，MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域，诸如数据采集、数据库接口、概率统计、样条拟
合、优化算法、偏微分方程求解、<a  href="http://baike.baidu.com/view/5348.htm" target="_blank">神经网络</a>、<a  href="http://baike.baidu.com/view/83268.htm" target="_blank">小波分析</a>、
信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿
真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等，都在工具箱（Toolbox）家族中有了自己的一席之地。
<h3><a name="5_6"></a>（6）实用的程序接口和发布平台</h3>
新版本的MATLAB可以利用MATLAB编译器和C/C++数学库和图形库，将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C++
代码。允许用户编写可以和MATLAB进行交互的C或C++语言程序。另外，MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和
图形程序。MATLAB的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是MATLAB函数的子程序库，每一个工具箱
都是为某一类学科专业和应用而定制的，主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。
<h3><a name="5_7"></a>（7）应用软件开发（包括用户界面）</h3>
在开发环境中，使用户更方便地控制多个文件和图形窗口；在编程方面支持了函数嵌套，有条件中断等；在图形化方面，有了更强大的图形标注和处理功能，包括对性对起连接注释等；在输入输出方面，可以直接向<a  href="http://baike.baidu.com/view/28127.htm" target="_blank">Excel</a>和HDF5进行连接。
<h2 class="">
<div class="text_edit editable-title"><a  href="http://baike.baidu.com/view/10598.htm#" class="nslog:1019">编辑本段</a></div>
<a name="6"></a>工具</h2>
<h3><a name="6_1"></a>常用工具箱</h3>
MATLAB包括拥有数百个内部函数的主包和三十几种工具包。工具包又可以分为功能性工具包和学科工具包。功能工具包用来扩充MATLAB的符号计算，
可视化建模仿真，文字处理及实时控制等功能。学科工具包是专业性比较强的工具包，控制工具包，信号处理工具包，通信工具包等都属于此类。
开放性使MATLAB广受用户欢迎。除内部函数外，所有MATLAB主包文件和各种工具包都是可读可修改的文件，用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。
Matlab Main Toolbox——matlab主工具箱
Control System Toolbox——控制系统工具箱
Communication Toolbox——通讯工具箱
Financial Toolbox——财政金融工具箱
System Identification Toolbox——系统辨识工具箱
Fuzzy Logic Toolbox——模糊逻辑工具箱
Higher-Order Spectral Analysis Toolbox——高阶谱分析工具箱
Image Processing Toolbox——图象处理工具箱
LMI Control Toolbox——线性矩阵不等式工具箱
Model predictive Control Toolbox——模型预测控制工具箱
&#956;-Analysis and Synthesis Toolbox——&#956;分析工具箱
Neural Network Toolbox——神经网络工具箱
Optimization Toolbox——优化工具箱
Partial Differential Toolbox——偏微分方程工具箱
Robust Control Toolbox——鲁棒控制工具箱
Signal Processing Toolbox——信号处理工具箱
Spline Toolbox——样条工具箱
Statistics Toolbox——统计工具箱
Symbolic Math Toolbox——符号数学工具箱
Simulink Toolbox——动态仿真工具箱
Wavele Toolbox——小波工具箱
<h3><a name="6_2"></a>常用函数</h3>
<strong>Matlab内部常数</strong><sup>[3]</sup><a name="ref_[3]"></a>
eps：浮点相对精度
exp：自然对数的底数e
i 或 j：基本虚数单位
inf 或 Inf：无限大， 例如1/0
nan或NaN：非数值（Not a number），例如0/0
pi：圆周率 p（= 3.1415926...）
realmax：系统所能表示的最大数值
realmin：系统所能表示的最小数值
nargin: 函数的输入引数个数
nargout: 函数的输出引数个数
lasterr：存放最新的错误信息
lastwarn：存放最新的警告信息
<strong>MATLAB常用基本数学函数</strong>
abs(x)：纯量的绝对值或向量的长度
angle(z)：复数z的相角(Phase angle)
sqrt(x)：开平方
real(z)：复数z的实部
imag(z)：复数z的虚部
conj(z)：复数z的共轭复数
round(x)：四舍五入至最近整数
fix(x)：无论正负，舍去小数至最近整数
floor(x)：下取整，即舍去正小数至最近整数
ceil(x)：上取整，即加入正小数至最近整数
rat(x)：将实数x化为多项分数展开
rats(x)：将实数x化为分数表示
sign(x)：符号函数 (Signum function)。
当x&lt;0时，sign(x)=-1；
当x=0时，sign(x)=0;
当x&gt;0时，sign(x)=1。
rem(x,y)：求x除以y的余数
gcd(x,y)：整数x和y的最大公因数
lcm(x,y)：整数x和y的最小公倍数
exp(x) ：自然指数
pow2(x)：2的指数
log(x)：以e为底的对数，即自然对数或
log2(x)：以2为底的对数
log10(x)：以10为底的对数
<strong>MATLAB常用三角函数
</strong>　sin(x)：正弦函数
cos(x)：余弦函数
tan(x)：正切函数
asin(x)：反正弦函数
acos(x)：反余弦函数
atan(x)：反正切函数
atan2(x,y)：四象限的反正切函数
sinh(x)：双曲正弦函数
cosh(x)：双曲余弦函数
tanh(x)：双曲正切函数
asinh(x)：反双曲正弦函数
acosh(x)：反双曲余弦函数
atanh(x)：反双曲正切函数
<strong>适用于向量的常用函数有</strong>
min(x): 向量x的元素的最小值
max(x): 向量x的元素的最大值
mean(x): 向量x的元素的平均值
median(x): 向量x的元素的中位数
std(x): 向量x的元素的标准差
diff(x): 向量x的相邻元素的差
sort(x): 对向量x的元素进行排序（Sorting）
length(x): 向量x的元素个数
norm(x): 向量x的欧氏（Euclidean）长度
sum(x): 向量x的元素总和
prod(x): 向量x的元素总乘积
cumsum(x): 向量x的累计元素总和
cumprod(x): 向量x的累计元素总乘积
dot(x, y): 向量x和y的内积
cross(x, y): 向量x和y的外积
<strong>MATLAB基本绘图函数
</strong>plot: x轴和y轴均为线性刻度（Linear scale）
loglog: x轴和y轴均为对数刻度（Logarithmic scale）
semilogx: x轴为对数刻度，y轴为线性刻度
semilogy: x轴为线性刻度，y轴为对数刻度
<strong>
<div style="float: right; visibility: visible; padding-bottom: 3px; position: relative; width: 199px;" class="text_pic"><a  href="http://baike.baidu.com/image/c9bdddce35183c2293457e2c" target="_blank" title="查看图片" class="pic-handle">&nbsp;&nbsp;</a><a  href="http://baike.baidu.com/image/c9bdddce35183c2293457e2c" target="_blank"><img  src="http://imgsrc.baidu.com/baike/abpic/item/c9bdddce35183c2293457e2c.jpg" class="editorImg" title="matlab插值和样条"></a>
<p class="pic-info"><strong>matlab插值和样条</strong></p>
</div>
plot绘图函数的参数
</strong>字元 颜色 字元 图线型态
y 黄色 . 点
k 黑色 o 圆
w 白色 x x
b 蓝色 + +
g 绿色 * *
r 红色 - 实线
c 亮青色 : 点线
m 锰紫色 -. 点虚线
-- 虚线
<strong>注解</strong>
xlabel('Input Value'); % x轴注解
ylabel('Function Value'); % y轴注解
title('Two Trigonometric Functions'); % 图形标题
legend('y = sin(x)','y = cos(x)'); % 图形注解
grid on; % 显示格线
<strong>二维绘图函数
</strong>bar 长条图
errorbar 图形加上误差范围
fplot 较精确的函数图形
polar 极座标图
hist 累计图
rose 极座标累计图
stairs 阶梯图
stem 针状图
fill 实心图
feather 羽毛图
compass 罗盘图
quiver 向量场图<sup>[1]</sup><a name="ref_[1]"></a></div>
<dl class="nslog-area" id="viewRefer"><dt>参考资料</dt><dd class="reference">
<ul>
    <li class="layout">
    <span class="ref-index"><span class="r-index">1</span><span class="slide s-right"></span></span>
    <div class="ref-bd line-1">
    <p>中文wikipedia<a  href="http://baike.baidu.com/view/10598.htm#ref_[1]" class="ref-top" id="refIndex_1" name="refIndex_1" title="向上跳转">&nbsp;&nbsp;</a>
    </p>
    <p class="refUrl"><a  href="http://zh.wikipedia.org/w/index.php?title=Matlab&amp;variant=zh-cn" target="_blank">matlab</a></p>
    </div>
    </li>
    <li class="layout">
    <span class="ref-index"><span class="r-index">2</span><span class="slide s-right"></span></span>
    <div class="ref-bd line-1">
    <p>博客大巴<a  href="http://baike.baidu.com/view/10598.htm#ref_[2]" class="ref-top" id="refIndex_2" name="refIndex_2" title="向上跳转">&nbsp;&nbsp;</a>
    </p>
    <p class="refUrl"><a  href="http://morxio.blogbus.com/logs/27234417.html" target="_blank">matlab常用函数</a></p>
    </div>
    </li>
    <li class="layout">
    <span class="ref-index"><span class="r-index">3</span><span class="slide s-right"></span></span>
    <div class="ref-bd line-1">
    <p>新浪博客<a  href="http://baike.baidu.com/view/10598.htm#ref_[3]" class="ref-top" id="refIndex_3" name="refIndex_3" title="向上跳转">&nbsp;&nbsp;</a>
    </p>
    <p class="refUrl"><a  href="http://blog.sina.com.cn/s/blog_5029f45c0100bzla.html" target="_blank">matlab常用函数</a></p>
    </div>
    </li>
</ul>
</dd></dl>
<dl class="nslog-area" id="viewExtRead"><dt>扩展阅读：</dt><dd class="reference">
<ul>
    <li class="layout">
    <span class="ref-index"><span class="r-index">1</span><span class="slide s-right"></span></span>
    <p class="ref-bd line-1">Matlab官方网站：<a  href="http://www.mathworks.com/" target="_blank">http://www.mathworks.com</a></p>
    </li>
    <li class="layout">
    <span class="ref-index"><span class="r-index">2</span><span class="slide s-right"></span></span>
    <p class="ref-bd line-1">Matlab中国：<a  href="http://www.mathworks.cn/" target="_blank">http://www.mathworks.cn/</a></p>
    </li>
    <li class="layout">
    <span class="ref-index"><span class="r-index">3</span><span class="slide s-right"></span></span>
    <p class="ref-bd line-1">MATLAB中文爱好者论坛：<a  href="http://www.matlabfan.com/" target="_blank">http://www.matlabfan.com/</a>（推荐）</p>
    </li>
    <li class="layout">
    <span class="ref-index"><span class="r-index">4</span><span class="slide s-right"></span></span>
    <p class="ref-bd line-1">Matlab中文论坛：<a  href="http://www.ilovematlab.cn/" target="_blank">http://www.ilovematlab.cn/</a></p>
    </li>
    <li class="layout">
    <span class="ref-index"><span class="r-index">5</span><span class="slide s-right"></span></span>
    <p class="ref-bd line-1">Matlab百度贴吧：<a  href="http://tieba.baidu.com/f?kw=matlab&amp;fr=ala0" target="_blank">http://tieba.baidu.com/f?kw=matlab&amp;fr=ala0</a></p>
    </li>
</ul>
</dd></dl><img src ="http://www.cppblog.com/prayer/aggbug/127234.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/prayer/" target="_blank">Prayer</a> 2010-09-21 12:56 <a href="http://www.cppblog.com/prayer/archive/2010/09/21/127234.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>更改电脑硬盘名称（很实用）</title><link>http://www.cppblog.com/prayer/archive/2009/12/10/102913.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Thu, 10 Dec 2009 05:39:00 GMT</pubDate><guid>http://www.cppblog.com/prayer/archive/2009/12/10/102913.html</guid><wfw:comment>http://www.cppblog.com/prayer/comments/102913.html</wfw:comment><comments>http://www.cppblog.com/prayer/archive/2009/12/10/102913.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/prayer/comments/commentRss/102913.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/prayer/services/trackbacks/102913.html</trackback:ping><description><![CDATA[<div class=date>2009-08-08 22:17</div>
<table style="TABLE-LAYOUT: fixed; WIDTH: 100%">
    <tbody>
        <tr>
            <td>
            <div class=cnt id=blog_text>
            <p>把下面代码文件保存为&#8220;*.bat&#8221;格式文件 双击打开就OK 当然硬盘名称由自己定&#8220; 代码里面硬盘名称&#8221;</p>
            <p>@ ECHO OFF<br>@ ECHO.<br>@ ECHO.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说 明<br>@ ECHO -----------------------------------------------------<br>@ ECHO 此命令将为本机每个盘都添加上卷标，一般是用在新机上面。<br>@ ECHO 以引导初学者更合理地支配他们的硬盘空间。事情微小，但<br>@ ECHO 能体现装机者专业细致的办事态度。<br>@ ECHO -----------------------------------------------------<br>PAUSE<br>c:<br>label c:WINXP<br>label d:软件<br>label e:资料<br>label f:影视<br>label g:游戏<br>label h:备份<br>d:<br>md 本机驱动程序<br>md 本机驱动程序\1.主板芯片组<br>md 本机驱动程序\2.显卡<br>md 本机驱动程序\3.声卡<br>md 本机驱动程序\4.网卡<br>md 本机驱动程序\5.外设</p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.cppblog.com/prayer/aggbug/102913.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/prayer/" target="_blank">Prayer</a> 2009-12-10 13:39 <a href="http://www.cppblog.com/prayer/archive/2009/12/10/102913.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux内存管理-进程的五个数据段</title><link>http://www.cppblog.com/prayer/archive/2009/08/17/93599.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Mon, 17 Aug 2009 05:53:00 GMT</pubDate><guid>http://www.cppblog.com/prayer/archive/2009/08/17/93599.html</guid><wfw:comment>http://www.cppblog.com/prayer/comments/93599.html</wfw:comment><comments>http://www.cppblog.com/prayer/archive/2009/08/17/93599.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/prayer/comments/commentRss/93599.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/prayer/services/trackbacks/93599.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span>进 程（执行的程序）会占用一定数量的内存，它或是用来存放从磁盘载入的程序代码，或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途 不一而不尽相同，有些内存是事先静态分配和统一回收的，而有些却是按需要动态分配和回收的。对任何一个普通进程来讲，它都会涉及到</span><span><font face="Times New Roman">5</font></span><span>种不同的数据段。</span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><font size=3><span>一、</span><span><font face="Times New Roman">Linux</font></span><span>进程的五个段</span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span>下面我们来简单归纳一下进程对应的内存空间中所包含的</span><span><font face="Times New Roman">5</font></span><span>种不同的数据区都是干什么的。</span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span><font face="Times New Roman">1</font></span><span>）代码段：代码段是用来存放可执行文件的操作指令，也就是说是它是可执行程序在内存中的镜像。代码段需要防止在运行时被非法修改，所以只准许读取操作，而不允许写入（修改）操作——它是不可写的。</span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span><font face="Times New Roman">2</font></span><span>）数据段：数据段用来存放可执行文件中已初始化全局变量，换句话说就是存放程序静态分配的变量和全局变量。</span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span><font face="Times New Roman">3</font></span><span>）</span><span><font face="Times New Roman">BSS</font></span><span>段：</span><span><font face="Times New Roman">BSS</font></span><span>段包含了程序中未初始化的全局变量，在内存中</span><span><font face="Times New Roman"> bss</font></span><span>段全部置零。</span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span><font face="Times New Roman">4</font></span><span>）堆（</span><span><font face="Times New Roman">heap</font></span><span>）：堆是用于存放进程运行中被动态分配的内存段，它的大小并不固定，可动态扩张或缩减。当进程调用</span><span><font face="Times New Roman">malloc</font></span><span>等函数分配内存时，新分配的内存就被动态添加到堆上（堆被扩张）；当利用</span><span><font face="Times New Roman">free</font></span><span>等函数释放内存时，被释放的内存从堆中被剔除（堆被缩减）</span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span><span><font face="Times New Roman">&nbsp; </font></span></span><span>它的物理内存空间是由程序申请的，并由程序负责释放。</span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span><font face="Times New Roman">5</font></span><span>）栈：栈是用户存放程序临时创建的局部变量，也就是说我们函数括弧&#8220;</span><span><font face="Times New Roman">{}</font></span><span>&#8221;中定义的变量（但不包括</span><span><font face="Times New Roman">static</font></span><span>声明的变量，</span><span><font face="Times New Roman">static</font></span><span>意味着在数据段中存放变量）。除此以外，在函数被调用时，其参数也会被压入发起调用的进程栈中，并且待到调用结束后，函数的返回值也会被存放回栈中。由于栈的先进先出特点，所以栈特别方便用来保存</span><span><font face="Times New Roman">/</font></span><span>恢复调用现场。从这个意义上讲，我们可以把堆栈看成一个寄存、交换临时数据的内存区。</span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span><span><font face="Times New Roman">&nbsp;&nbsp; </font></span></span><span>它是由操作系统分配的，内存的申请与回收都由</span><span><font face="Times New Roman">OS</font></span><span>管理。</span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span>举个具体的</span><span><font face="Times New Roman">C</font></span><span>语言的例子吧：</span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span><font size=3><font face="Times New Roman">//main.c </font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span><font face="Times New Roman">int a = 0; //</font></span><span>全局初始化区</span><font face="Times New Roman"> </font></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span><font face="Times New Roman">char *p1; //</font></span><span>全局未初始化区</span><font face="Times New Roman"> </font></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span><font size=3><font face="Times New Roman">main() </font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span><font size=3><font face="Times New Roman">{ </font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span><font face="Times New Roman">static int c =0</font></span><span>；</span><span><font face="Times New Roman"> //</font></span><span>全局（静态）初始化区</span><font face="Times New Roman"> </font></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span><font face="Times New Roman">int b; //</font></span><span>栈</span><font face="Times New Roman"> </font></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span><font face="Times New Roman">char s[] = "abc"; //</font></span><span>栈</span><font face="Times New Roman"> </font></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span><font face="Times New Roman">char *p2; //</font></span><span>栈</span><font face="Times New Roman"> </font></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span><font face="Times New Roman">char *p3 = "123456"; //"123456\0"</font></span><span>在常量区，</span><span><font face="Times New Roman">p3</font></span><span>在栈上。</span><font face="Times New Roman"> </font></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span><font size=3><font face="Times New Roman">p1 = (char *)malloc(10); </font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span><font face="Times New Roman">p2 = (char *)malloc(20); //</font></span><span>分配得来得</span><span><font face="Times New Roman">10</font></span><span>和</span><span><font face="Times New Roman">20</font></span><span>字节的区域就在堆区。</span><font face="Times New Roman"> </font></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span><font face="Times New Roman" size=3>}</font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span><font size=3>二、各个段在内存中的组织</font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span><font size=3>各个段段在线性空间中的组织。直接上图：</font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span><font face="Times New Roman">+--------------------------------<span>&nbsp;&nbsp; </span></font></span><span>高地址</span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span><font face="Times New Roman">+ envstrings </font></span><span>环境变量字串</span><span><font face="Times New Roman"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span><font size=3><font face="Times New Roman">+--------------------------------</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span><font face="Times New Roman">+ argv string </font></span><span>命令行字串</span><span><font face="Times New Roman"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span><font size=3><font face="Times New Roman">+--------------------------------</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span style="Z-INDEX: 2; LEFT: 348px; POSITION: absolute; TOP: 871px">
<table style="LEFT: -117px; WIDTH: 250px; TOP: 4px; HEIGHT: 28px" cellSpacing=0 cellPadding=0>
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: rgb(244,244,244); BORDER-TOP: rgb(244,244,244); BORDER-LEFT: rgb(244,244,244); BORDER-BOTTOM: rgb(244,244,244); BACKGROUND-COLOR: transparent"></td>
        </tr>
    </tbody>
</table>
</span><span><font size=3><font face="Times New Roman">+ </font></font></span><font size=3><span><font face="Times New Roman">env pointers </font></span><span>环境变量指针表</span><font face="Times New Roman"> </font></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span><font size=3><font face="Times New Roman">+--------------------------------</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span><font face="Times New Roman">+ argv pointers</font></span><span>命令行参数指针表</span><font face="Times New Roman"> </font></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span><font size=3><font face="Times New Roman">+--------------------------------</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span><font face="Times New Roman">+ argc </font></span><span>命令行参数个数</span><span><font face="Times New Roman"><span>&nbsp; </span></font></span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span><font size=3><font face="Times New Roman">+--------------------------------</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span style="Z-INDEX: 4; LEFT: 351px; POSITION: absolute; TOP: 1006px">
<table cellSpacing=0 cellPadding=0 width="100%">
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: rgb(244,244,244); BORDER-TOP: rgb(244,244,244); BORDER-LEFT: rgb(244,244,244); BORDER-BOTTOM: rgb(244,244,244); BACKGROUND-COLOR: transparent"></td>
        </tr>
    </tbody>
</table>
</span><font size=3><span><font face="Times New Roman">+<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>main</font></span><span>函数的栈帧</span><span><font face="Times New Roman"><span>&nbsp;&nbsp; </span></font></span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span><font size=3><font face="Times New Roman">+--------------------------------</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span><font face="Times New Roman">+<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span><span>被调用函数的栈帧</span><font face="Times New Roman"> </font></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span><font size=3><font face="Times New Roman">+--------------------------------</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span><font size=3><font face="Times New Roman">+<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>......<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span><font size=3><font face="Times New Roman">+--------------------------------</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span style="Z-INDEX: 6; LEFT: 349px; POSITION: absolute; TOP: 1104px">
<table cellSpacing=0 cellPadding=0 width="100%">
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: rgb(244,244,244); BORDER-TOP: rgb(244,244,244); BORDER-LEFT: rgb(244,244,244); BORDER-BOTTOM: rgb(244,244,244); BACKGROUND-COLOR: transparent">
            <div class=shape style="PADDING-RIGHT: 7.95pt; PADDING-LEFT: 7.95pt; PADDING-BOTTOM: 4.35pt; PADDING-TOP: 4.35pt">
            <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span><br></span></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</span><font size=3><span><font face="Times New Roman">+<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span><span>堆</span><span><font face="Times New Roman">(heap)<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span><font size=3><font face="Times New Roman">+--------------------------------</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span style="Z-INDEX: 8; LEFT: 350px; POSITION: absolute; TOP: 1146px">
<table cellSpacing=0 cellPadding=0 width="100%">
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: rgb(244,244,244); BORDER-TOP: rgb(244,244,244); BORDER-LEFT: rgb(244,244,244); BORDER-BOTTOM: rgb(244,244,244); BACKGROUND-COLOR: transparent">
            <div class=shape style="PADDING-RIGHT: 7.95pt; PADDING-LEFT: 7.95pt; PADDING-BOTTOM: 4.35pt; PADDING-TOP: 4.35pt">
            <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span><br></span></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</span><font size=3><span><font face="Times New Roman">+<span>&nbsp; </span><span>&nbsp;</span>BSS </font></span><span>未初始化全局数据</span><span><font face="Times New Roman"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span><font size=3><font face="Times New Roman">+--------------------------------</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span style="Z-INDEX: 11; LEFT: 350px; POSITION: absolute; TOP: 1184px">
<table cellSpacing=0 cellPadding=0 width="100%">
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: rgb(244,244,244); BORDER-TOP: rgb(244,244,244); BORDER-LEFT: rgb(244,244,244); BORDER-BOTTOM: rgb(244,244,244); BACKGROUND-COLOR: transparent">
            <div class=shape style="PADDING-RIGHT: 7.95pt; PADDING-LEFT: 7.95pt; PADDING-BOTTOM: 4.35pt; PADDING-TOP: 4.35pt">
            <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span><font size=3><br></font></span></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</span><font size=3><span><font face="Times New Roman">+<span>&nbsp;&nbsp; </span>Data </font></span><span>初始化的全局数据</span><span><font face="Times New Roman"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span><font size=3><font face="Times New Roman">+--------------------------------</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span style="Z-INDEX: 12; LEFT: 346px; POSITION: absolute; TOP: 1220px">
<table cellSpacing=0 cellPadding=0 width="100%">
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: rgb(244,244,244); BORDER-TOP: rgb(244,244,244); BORDER-LEFT: rgb(244,244,244); BORDER-BOTTOM: rgb(244,244,244); BACKGROUND-COLOR: transparent"></td>
        </tr>
    </tbody>
</table>
</span><font size=3><span><font face="Times New Roman">+<span>&nbsp;&nbsp; </span>Text<span>&nbsp; </span></font></span><span>代码段</span><span><font face="Times New Roman"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span><font size=3><font face="Times New Roman">+--------------------------------<span>&nbsp;&nbsp;&nbsp; </span></font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><span><font face="Times New Roman" size=3>&nbsp;</font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt"><font size=3><span>其中，</span><span><font face="Times New Roman">Heap</font></span><span>，</span><span><font face="Times New Roman">BSS</font></span><span>，</span><span><font face="Times New Roman">Data</font></span><span>这三个段在物理内存中是连续存放的，可以这么理解：这三个是一体的。</span><span><font face="Times New Roman">Text</font></span><span>、</span><span><font face="Times New Roman">Stack</font></span><span>是独立存放的，这是现在</span><span><font face="Times New Roman">Linux</font></span><span>中个段的分布，在</span><span><font face="Times New Roman">0.11</font></span><span>中代码段和数据段不是分立的，是在一起的也就是说数据段和代码段是一个段，当然了，堆与</span><span><font face="Times New Roman">BSS</font></span><span>也与它们一起了。从0.11的task_struct中还可以看出数据段、堆栈段的描述符是一个，都在ldt[2]处。</span></font></p>
<img src ="http://www.cppblog.com/prayer/aggbug/93599.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/prayer/" target="_blank">Prayer</a> 2009-08-17 13:53 <a href="http://www.cppblog.com/prayer/archive/2009/08/17/93599.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>内存管理页式管理和段式管理、段页式管理的区别</title><link>http://www.cppblog.com/prayer/archive/2009/08/17/93597.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Mon, 17 Aug 2009 05:51:00 GMT</pubDate><guid>http://www.cppblog.com/prayer/archive/2009/08/17/93597.html</guid><wfw:comment>http://www.cppblog.com/prayer/comments/93597.html</wfw:comment><comments>http://www.cppblog.com/prayer/archive/2009/08/17/93597.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/prayer/comments/commentRss/93597.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/prayer/services/trackbacks/93597.html</trackback:ping><description><![CDATA[一 页式管理 <br />1 页式管理的基本原理将各进程的虚拟空间划分成若干个长度相等的页(page)，页式管理把内存空间按页的大小划分成片或者页面（page frame），然后把页式虚拟地址与内存地址建立一一对应页表，并用相应的硬件地址变换机构，来解决离散地址变换问题。页式管理采用请求调页或预调页技术实现了内外存存储器的统一管理。 <br /><br />它分为 <br />1 静态页式管理。静态分页管理的第一步是为要求内存的作业或进程分配足够的页面。系统通过存储页面表、请求表以及页表来完成内存的分配工作。静态页式管理解决了分区管理时的碎片问题。但是，由于静态页式管理要求进程或作业在执行前全部装入内存，如果可用页面数小于用户要求时，该作业或进程只好等待。而且作业和进程的大小仍受内存可用页面数的限制。 <br /><br />2 动态页式管理。动态页式管理是在静态页式管理的基础上发展起来的。它分为请求页式管理和预调入页式管理。 <br /><br />优点： 没有外碎片，每个内碎片不超过页大小。一个程序不必连续存放。便于改变程序占用空间的大小（主要指随着程序运行而动态生成的数据增多，要求地址空间相应增长，通常由系统调用完成而不是操作系统自动完成）。 <br /><br />缺点：程序全部装入内存。 <br />要求有相应的硬件支持。例如地址变换机构，缺页中断的产生和选择淘汰页面等都要求有相应的硬件支持。这增加了机器成本。增加了系统开销，例如缺页中断处理机，请求调页的算法如选择不当，有可能产生抖动现象。 虽然消除了碎片，但每个作业或进程的最后一页内总有一部分空间得不到利用果页面较大，则这一部分的损失仍然较大。 <br /><br />二 段式管理的基本思想 <br /><strong>把程序按内容或过程（函数）关系分成段，每段有自己的名字。</strong>一个用户作业或进程所包含的段对应一个二维线形虚拟空间，也就是一个二维虚拟存储器。段式管理程序以段为单位分配内存，然后通过地址影射机构把段式虚拟地址转换为实际内存物理地址。 <br /><strong>程序通过分段(segmentation)划分为多个模块，如代码段、数据段、共享段。其优点是： 可以分别编写和编译。</strong> 可以针对不同类型的段采取不同的保护。 可以按段为单位来进行共享，包括通过动态链接进行代码共享。 <br /><br />三 段页式管理的实现原理 <br /><br />1 虚地址的构成 <br />一个进程中所包含的具有独立逻辑功能的程序或数据仍被划分为段，并有各自的段号s。这反映相继承了段式管理的特征。其次，对于段s中的程序或数据，则按照一定的大小将其划分为不同的页。和页式系统一样，最后不足一页的部分仍占一页。这反映了段页式管理中的页式特征。从而，段页式管理时的进程的虚拟地址空间中的虚拟地址由三部分组成：即段号s，页号P和页内相对地址d。虚拟空间的最小单位是页而不是段，从而内存可用区也就被划分成为着干个大小相等的页面，且每段所拥有的程序和数据在内存中可以分开存放。分段的大小也不再受内存可用区的限制。 <br />2 段表和页表 <br />为了实现段页式管理，系统必须为每个作业或进程建立一张段表以管理内存分配与释放、缺段处理、存储保护相地址变换等。另外，由于一个段又被划分成了若干页，每个段又必须建立一张页表以把段中的虚页变换成内存中的实际页面。显然，与页式管理时相同，页表中也要有相应的实现缺页中断处理和页面保护等功能的表项。另外，由于在段页式管理中，页表不再是属于进程而是属于某个段，因此，段表中应有专项指出该段所对应页表的页表始址和页表长度。 <br />3 动态地址变换过程 <br />在一般使用段页式存储管理方式的计算机系统中，都在内存中辟出一块固定的区域存放进程的段表和页表。因此，在段页式管理系统中，要对内存中指令或数据进行一次存取的话，至少需要访问三次以上的内存： <br /><br />第一次是由段表地址寄存器得段表始址后访问段表，由此取出对应段的页表在内存中的地址。 <br /><br />第二次则是访问页表得到所要访问的物理地址。 <br /><br />第三次才能访问真正需要访问的物理单元。 <br /><br />显然，这将使CPU的执行指令速度大大降低。为了提高地址转换速度，设置快速联想寄存器就显得比段式管理或页式管理时更加需要。在快速联想寄存器中，存放当前最常用的段号s、页号p和对应的内存页面与其它控制用栏目。当要访问内存空间某一单元时，可在通过段表、页表进行内存地址查找的同时，根据快速联想寄存器查找其段号和页号。如果所要访问的段或页在快速联想寄存器中，则系统不再访问内存中的段表、页表而直接把快速联想寄存器中的值与页内相对地址d拼接起来得到内存地址。 <br /><br />总之，因为段页式管理是段式管理的页式管理方案结合而成的，所以具有它们二者的优点。但反过来说，由于管理软件的增加，复杂性和开销也就随之增加了。另外，需要的硬件以及占用的内存也有所增加。更重要的是，如果不采用联想寄存器的方式提高CPU的访内速度，将会使得执行速度大大下降。<img src ="http://www.cppblog.com/prayer/aggbug/93597.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/prayer/" target="_blank">Prayer</a> 2009-08-17 13:51 <a href="http://www.cppblog.com/prayer/archive/2009/08/17/93597.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>