<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>维极网 - 虚拟仪器技术</title>
    <link rel="alternate" type="text/html" href="http://www.vigeek.org/" />
    <link rel="self" type="application/atom+xml" href="http://www.vigeek.org/atom.xml" />
    <id>tag:www.vigeek.org,2009-02-26://1</id>
    <updated>2010-01-30T09:28:14Z</updated>
    <subtitle>中文虚拟仪器技术社区，关注于基于计算机的测试、控制以及自动化技术。包括LabVIEW、LabWindows/CVI以及其他相关的软件技术，以及可用于虚拟仪器和自动化测试、控制的其他相关技术知识。</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Open Source 4.31-zh-cn</generator>

<entry>
    <title>LabVIEW复合信号曲线图的多曲线光标</title>
    <link rel="alternate" type="text/html" href="http://www.vigeek.org/2010/01/labview-multi-plot-cursor.html" />
    <id>tag:www.vigeek.org,2010://1.41</id>

    <published>2010-01-30T08:36:54Z</published>
    <updated>2010-01-30T09:28:14Z</updated>

    <summary>　　复合信号曲线图控件有一个特别的曲线光标模式，叫做多曲线模式(Multi-Pl...</summary>
    <author>
        <name>GeekZ</name>
        <uri>http://www.vigeek.org</uri>
    </author>
    
        <category term="LabVIEW教程" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="LabVIEW相关" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="软件技术" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="labview" label="LabVIEW" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="复合信号曲线图" label="复合信号曲线图" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="曲线光标" label="曲线光标" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.vigeek.org/">
        <![CDATA[<p>　　复合信号曲线图控件有一个特别的曲线光标模式，叫做多曲线模式(Multi-Plot)，这种模式只存在于复合信号曲线图控件中，其他的<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>曲线图控件则没有这个模式，其他的曲线图中这个多曲线光标选项是灰色的，为不可选状态。这个多曲线光标模式可以用来显示在同一个X值处，多个曲线上对应的多个Y的值。</p> <p>　　如果要创建多曲线光标，可以按照下面的步骤操作：在光标图例上单击鼠标右键，在弹出的右键菜单中选择Create Cursor&gt;&gt;Multi-Plot，如下图所示。为了能够看到曲线上的Y的值，必须配置光标来跟踪曲线，方法就是在曲线名称上面弹出鼠标右键菜单，在Watch子菜单中选择要跟踪的曲线的名称。如果需要查看全部曲线的Y值，就在这个鼠标右键弹出菜单中选择Watch&gt;&gt;All Plots，如下面第二个图所示。</p>]]>
        <![CDATA[ <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="启用Multi-Plot" border="0" alt="启用Multi-Plot" src="http://vigeek.org/images/LabVIEW_F168/image.png" width="316" height="202"> </p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="显示曲线值" border="0" alt="显示曲线值" src="http://vigeek.org/images/LabVIEW_F168/image_3.png" width="370" height="269"> </p> <p>　　一旦创建了多曲线光标，你就可以使用鼠标在曲线图上拖动那个垂直的光标线水平移动来改变X的值。在拖动X值的时候，可以在光标图例上看到每个曲线上的对应的Y值的变化，如下图所示。<img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="实例" border="0" alt="实例" src="http://vigeek.org/images/LabVIEW_F168/image_4.png" width="540" height="393"></p>]]>
    </content>
</entry>

<entry>
    <title>混合信号曲线图</title>
    <link rel="alternate" type="text/html" href="http://www.vigeek.org/2010/01/post.html" />
    <id>tag:www.vigeek.org,2010://1.38</id>

    <published>2010-01-23T05:17:54Z</published>
    <updated>2010-01-30T09:38:32Z</updated>

    <summary><![CDATA[&nbsp; 　　当我们希望在LabVIEW中能够将模拟信号以及数字信号同时显示...]]></summary>
    <author>
        <name>GeekZ</name>
        <uri>http://www.vigeek.org</uri>
    </author>
    
        <category term="LabVIEW教程" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="LabVIEW相关" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="软件技术" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.vigeek.org/">
        <![CDATA[&nbsp; <p>　　当我们希望在<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>中能够将模拟信号以及数字信号同时显示在一起，以便观察它们之间的时间关系的时候，我们就可以使用混合信号曲线图控件了。这个控件可以在<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>的控件工具面板的Modern&gt;&gt;Graph子面板上面找到。</p> <p>一个混合信号曲线图控件的例子如下图所示：</p>]]>
        <![CDATA[ <p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="混合信号曲线" border="0" alt="混合信号曲线" src="http://www.vigeek.org/images/24a306a826d3_1A9F/mixsigrvg.png" width="500" height="327"> </p> <p>　　这个曲线图的输入为一个簇，在这个簇里面包含了可以连接到波形图控件、XY曲线图控件、数字信号波形图控件的各种数据元素。上面VI的框图程序如下：</p> <p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="混合信号曲线图程序框图" border="0" alt="混合信号曲线图程序框图" src="http://www.vigeek.org/images/24a306a826d3_1A9F/mixsgrbkvg.png" width="500" height="426"> </p> <p>　　这个混合信号曲线图会在一个或多个曲线图区域绘出所有的这些元素。你可以在一个已有的曲线图区域上面点击鼠标右键，在右键菜单中选择Add Plot Area选项来增加曲线图区域。你也可以通过这种方法，通过在右键菜单选择Remove Plot Area来删除一个曲线图区域。混合信号曲线图的图例是一个树形控件，在这个树形控件中，每个曲线的名称与属性以曲线群名称的子节点显示的。你可以在两个曲线群之间通过使用鼠标拖拉的方式移动曲线，不过你不能将模拟信号曲线与数字信号曲线放到一个曲线群中。而在实际操作中，当你在程序框图中将数据联线到混合信号曲线控件时，如果你的信号中既有模拟信号也有数字信号的话，LabVIEW会强制启用至少两个曲线图区域来分别显示模拟与数字信号。</p> <p>　　混合信号曲线图的组成如下图所示：</p> <p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="混合曲线图说明" border="0" alt="混合曲线图说明" src="http://www.vigeek.org/images/24a306a826d3_1A9F/plotarea.png" width="500" height="373"></p>]]>
    </content>
</entry>

<entry>
    <title>LabVIEW中的时标、波形以及动态数据</title>
    <link rel="alternate" type="text/html" href="http://www.vigeek.org/2009/11/labview-timestamps-others.html" />
    <id>tag:www.vigeek.org,2009://1.37</id>

    <published>2009-11-06T05:32:00Z</published>
    <updated>2009-11-07T15:59:51Z</updated>

    <summary>　　在LabVIEW中我们分析或采集的数据通常都是时间的函数。例如，我们可能希望...</summary>
    <author>
        <name>GeekZ</name>
        <uri>http://www.vigeek.org</uri>
    </author>
    
        <category term="LabVIEW教程" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="LabVIEW相关" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="软件技术" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="dynamicdata" label="Dynamic Data" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="labview" label="LabVIEW" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="timestamp" label="Time Stamp" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="waveform" label="Waveform" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="动态数据" label="动态数据" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="时标" label="时标" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="波形" label="波形" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.vigeek.org/">
        <![CDATA[<p>　　在<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>中我们分析或采集的数据通常都是时间的函数。例如，我们可能希望知道在一天中温度随着时间的变化，或者是变化的波形在时间轴上绘出之后的样子。</p> <p>　　<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>有一些特殊的数据类型可以用来帮助一般的用户来以曲线的形式分析或展示这些数据。这些特殊的数据类型就是时标(Time Stamp)、波形(Waveform)和动态数据(dynamic data)。时标数据用来存储波形中的时间信息而多个波形可以保存在动态数据中。由于时标、波形以及动态数据的自然依赖关系，我们就在本文中对它们一起介绍。</p>]]>
        <![CDATA[ <h6>时标（Time Stamp）</h6> <p>　　时标这个数据类型用来存储绝对日期/时间值，比如数据采集的时间。它的精度非常高，不论是对于计数秒的整数部分还是分数部分都有19位的精度。</p> <p>　　虽然我们可通过将一个数值控件的显示方式设定为日期/时间来存储与显示时标值，不过数值控件保存的是相对值，而时标控件保存的则是绝对值。</p> <p>　　在LabVIEW中，我们可以使用Get Date/Time In Seconds函数来获取当前的时标值。一个时标控件如下图所示：<img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="时标控件" border="0" alt="时标控件" src="http://www.vigeek.org/images/LabVIEW_BFF1/image.png" width="138" height="53"> </p> <p>　　时标是一个高精度保存绝对时间的手段，而时标控件则可以用来查看与修改时标的值。时标控件可以在Controls控件面板的Modern&gt;&gt;Numeric子面板中找到。</p> <p>　　通过点击你要修改的时标控件左侧的上下箭头就可以对该时标的值进行增减操作。或者是通过键盘直接键入数值来取代时标的当前值。也可以在时标控件上点击鼠标右键，并在右键菜单中选择Data Operations&gt;&gt;Set Time to Now将时标的值设置为当前的日期与时间。</p> <p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="时间浏览按钮" border="0" alt="时间浏览按钮" align="left" src="http://www.vigeek.org/images/LabVIEW_BFF1/image_3.png" width="32" height="34"> 日期/时间浏览按钮</p> <p>　　不过我们还有一个更有趣的修改时标的方法，那就是点击时标控件右侧的日期/时间浏览按钮。在点击该按钮之后，就会弹出下面的日期与时间设置对话框。从这个对话框，我们能够轻松的用这个日历式的界面来修改时标的日期与时间值。</p> <p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="时间设置对话框" border="0" alt="时间设置对话框" src="http://www.vigeek.org/images/LabVIEW_BFF1/image_4.png" width="261" height="291"> 　　这个对话框也可以在时标控件上点击鼠标右键，在右键菜单中Data Operations&gt;&gt;Set Time and Data菜单项打开这个对话框。对于没有日期/时间浏览按钮的时标常量以及指示器类型的控件，使用这个右键菜单是最合适的方式。</p> <h6>相对时间计算</h6> <p>　　有些时候我们也需要时间计算。比如下面程序框图中我们使用相减函数来计算两个时标之间的相对时间。</p> <p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="时间计算" border="0" alt="时间计算" src="http://www.vigeek.org/images/LabVIEW_BFF1/image_5.png" width="180" height="111"> </p> <p>　　通过这种方式，我们可以用来对某些程序代码的执行时间进行测试，比如在一个VI开始之前获取一个时标值，在VI结束之后获取一个时标值，将这两个值相减就可以知道这个VI的具体执行时间是多少了。</p> <p>　　另外我们也可以对时标数据进行加操作，将相对时间加上旧的时标值得到一个新的时标值，这个程序就不再演示了。</p> <h6>时标与数值之间的转换</h6> <p>　　如前面的两个时标相减的例子，我们可以发现时标与数值两种数据类型是密切相关的。在有些情况下，我们需要在这两个数据类型之间进行转换。加、减这两个函数在对时标数据操作时，函数不是匹配为时标类型（由于这两个函数是可复用的）就是将时标强制转换为双精度浮点数。有些时候，我们也想要直接执行这个转换操作。我们可以在函数VI面板的Programming&gt;&gt;Numeric&gt;&gt;Conversion子面板上找到To Double Precision Float函数来将时标数据转换为双精度浮点数。或在Programming&gt;&gt;Numeric&gt;&gt;Conversion子面板上找到To Time Stamp函数将一个数值转换为时标数据（这个函数也可以在Programming&gt;&gt;Timing子面板上面找到）。</p> <p>　　这两个函数如下图所示：</p> <p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="数据转换" border="0" alt="数据转换" src="http://www.vigeek.org/images/LabVIEW_BFF1/image_6.png" width="255" height="35"></p> <p>　　这里的To Double Precision Float函数可以将任何数值型数据转换为双精度浮点数。</p> <h5>波形(Waveforms) </h5> <p>　　在许多工程以及科技应用中，需要处理的数据都是一组随着时间变化的数值。例如，音频信号就是随着时间变化的压力值，心电图则是随着时间变化的电压值，滴落的水滴的表面就是随时间变化的其xyz坐标的值，计算机常用的数字信号则是随时间变化三维二进制值。LabVIEW中提供了波形数据这个数据类型来组织与处理这些时变信号。一个波形数据不但可以让你来存储数据的值，还可以用来存储第一个数据获取时的时标值、每个数据点之间的间隔时间以及数据的备注信息。它与LabVIEW中其他的数据类型类似，可以进行加减运算操作，以及其他的直接对波形进行的操作。你可以在I/O控件面板选择相应控件来在VI前面板上创建Wavwform或Digital Waveform类型的控件。</p> <p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="波形控件" border="0" alt="波形控件" src="http://www.vigeek.org/images/LabVIEW_BFF1/image_7.png" width="260" height="149"> </p> <p>　　上图中就是一个波形控件在前面板以及框图中的表现形式。下图中的则是数字波形控件在前面板以及框图中的表现形式。我们可以发现在程序框图中，波形控件的图标为棕/橙色而数值波形控件的则为绿色。</p> <p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="数字波形" border="0" alt="数字波形" src="http://www.vigeek.org/images/LabVIEW_BFF1/image_8.png" width="343" height="131">&nbsp; 这两个图标里面，模拟波形是一个类似正弦波的波形，数值波形则是一个方波，再加上它们的颜色不同，区分它们还是很容易的。</p> <p>　　通过仔细检查波形数据类型，我们可以发现它其实就是一个特殊的簇类型的数据。在这个簇中包含了四个元素：Y、t0、dt以及Attributes（属性），对其详细讲解如下：</p> <ul> <li>Y：这个元素是随着时间变化数据。对于一个模拟波形来说，这是一个元素为数值数据点的一维的数组，这个数据点可以是一个单点也可以是另外一个波形，根据所执行的操作的不同而不同。模拟信号类型的一维数组的元素数据类型为双精度浮点数。离散信号则被称为"数字"信号，离散信号一般就是只有两个状态的信号，比如TRUE或FALSE、0或5V、开或关等等。对于离散信号，我们需要使用的是数字波形。对于数字波形来说。Y元素是数字数据，你可以将其想象为一个二进制值的表格，列为数字线，行为变话的值。  <li>t0：这个元素是一个时标值，用来标识Y数组中第一个点采集时的时间（相对于当期的系统时间）。它也被称为初始时间或初始时标。  <li>dt：Δt，念作"得尔它T"（哈哈，小幽默一下）。用来表示Y数组中两个相邻数据点之间的间隔时间的数值。  <li>Attribute：默认情况下，这个元素是隐藏的，只有在波形上点击鼠标右键并在右键菜单中选择Visible Items&gt;&gt;Attribute才能看到。属性元素是可选的，它是可变数据类型的量，可以让你方便的捆绑自定义信息，比如设备编号、通道号等等。该元素不会影响波形数据的表现或Y与时间值。</li></ul> <h6>波形与数组的差别</h6> <p>&nbsp; 在很多情况下，你可以将波形想象为一维数组，在这个一维数组中除了保存数据外还附加了一些关于数据点的时间以及采样时间的信息。波形数据在模拟信号采集中经常被用到。</p> <p>　　实际上你也可以使用数组来保存你的数据而不是使用波形数据。不过，波形数据比数组数据要有以下几个优势：</p> <ul> <li>t0的标识：如果没有t0的话，你就不知道你的数据是什么时候得到的。波形数据则会自动在t0中返回数据采集的日期以及时间，这提供了你的数据的现实世界的时间。</li> <li>更易绘图：波形数据同样简化了数据曲线的绘制。在较老的LabVIEW版本中，你必须绑定初始点的值(x0)以及两点之间的间隔时间(delta x)到你的数据(Y数组)，才能完成绘制曲线的工作。现在的波形数据就直接包括了这些元素，你只要将波形数据连线到曲线图控件就可以绘图了。</li> <li>更简单的多曲线图：波形数据也简化了多曲线的曲线图的绘制。在旧版的LabVIEW中，每条曲线需要先将x0、delta x以及Y数组绑定之后，再用它们创建一个数组之后才能绘制一个多曲线的曲线图。如果使用波形数据，只要将一个波形数据的一维数组连线到一个曲线图控件就可以绘出多曲线的曲线图了。</li></ul> <h5>波形函数</h5> <p>　　在LabVIEW的函数面板的Programming下的Waveform面板上全部都是用于波形数据操作的函数，如下图所示：</p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="波形函数" border="0" alt="波形函数" src="http://www.vigeek.org/WindowsLiveWriter/LabVIEW_10CC1/image_3.png" width="289" height="438"> </p> <p></p> <p>　　这里的获取波形元素(Get Waveform Components)以及创建波形(Build Waveform)函数分别用来获取或设置模拟、数组波形和数字值的波形元素。</p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="获取波形元素" border="0" alt="获取波形元素" src="http://www.vigeek.org/WindowsLiveWriter/LabVIEW_10CC1/image_6.png" width="280" height="52"> </p> <p>　　获取波形元素函数可以返回你需要的波形元素。你可以通过在该函数节点上面右键点击并选择Add Element并左键点击来选择需要的波形元素。这个函数是可扩展的。</p> <p>　　<img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="创建波形" border="0" alt="创建波形" src="http://www.vigeek.org/WindowsLiveWriter/LabVIEW_10CC1/image_9.png" width="279" height="55"> </p> <p></p> <p>　　创建波形函数可以用来创建一个新的波形或者是修改一个现有波形。如果不链接输入到waveform输入端，这个函数就会按照输入的数据来创建一个新的波形。如连接了一个波形到这个输入端，这个函数就会按照你输入的参数修改这个波形。这个函数也是可扩展的。</p> <p>　　这两个函数都是可复用的，可以对模拟波形、数字波形以及数字数据进行操作。函数的waveform输入端会根据输入波形的不同而自动转换。</p> <p>　　除此之外，还有很多对波形进行操作的函数，可以参考LabVIEW的自带帮助文件或例子来自己熟悉。</p> <h5>动态数据(Dynamic Data)</h5> <p>　　几乎所有的用于采集、分析、操作以及生成信号的Express VI都使用了一个特殊的数据类型传送信号数据，这个数据类型就是动态数据。简单地说，动态数据就是一个或多个通道的波形数据。实际上，你也可以将动态数据想象为只是一个简单的模拟波形的数组，用一个智能的线所表示。不过，在实际的使用中，动态数据确实也是非常智能的，比如将几个动态数据合并为一个动态数据的操作是非常简单的。</p> <p>　　在LabVIEW中，将一个动态数据连线到另一个动态数据，LabVIEW会自动的添加一个合并信号的函数将这两个信号线合并为一个信号线。</p> <p>　　对动态信号操作的函数都位于Express&gt;&gt;Signal Manipulation子面板中，大家可以通过帮助文件来熟悉这些函数的使用。</p>]]>
    </content>
</entry>

<entry>
    <title>密度图与颜色结合表现三维数据</title>
    <link rel="alternate" type="text/html" href="http://www.vigeek.org/2009/11/internsity-chart-graphscolor-third-dimension.html" />
    <id>tag:www.vigeek.org,2009://1.36</id>

    <published>2009-11-05T02:57:00Z</published>
    <updated>2009-11-06T05:36:02Z</updated>

    <summary>　　如果你需要绘制三个变量而不是两个变量之间的关系，你该如何处理呢？如果你使用的...</summary>
    <author>
        <name>GeekZ</name>
        <uri>http://www.vigeek.org</uri>
    </author>
    
        <category term="LabVIEW教程" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="LabVIEW相关" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="软件技术" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="3d" label="3D" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="colorscale" label="color scale" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="intensitychart" label="Intensity chart" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="三维数据" label="三维数据" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="三维曲线图" label="三维曲线图" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.vigeek.org/">
        <![CDATA[　　如果你需要绘制三个变量而不是两个变量之间的关系，你该如何处理呢？如果你使用的操作系统是Windows的话，在<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>中是可以使用ActiveX的三维曲线图控件(ActiveX 3D Graph Control)来实现该功能的，在后面我们会讨论这个控件。 <p>　　在所有版本的<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>中，我们都可以绘制密度图。密度图(Intensity charts and graphs)可以通过使用颜色来显示第三维数据的值（Z轴）来在二维的曲线图上显示三维的数据。与波形图类似，当密度图的显示大小固定的时候，密度图也提供了滚动显示的功能。密度图在显示像地势图这样的模型数据时特别有用，在这种使用方式下，颜色表示了一个二维区域的海拔高度，或在一个二维区域上的温度分布。</p>]]>
        <![CDATA[ <p>　　密度曲线图与密度图表的例子如下图所示，它们用颜色来显示第三维的数据。</p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="密度图" border="0" alt="密度图" src="http://www.vigeek.org/images/6b9a403ad0d6_9D83/image.png" width="386" height="471">  </p> <p></p> <p>　　密度图控件的功能和二维的曲线图与波形图控件大多是类似的，只不过添加了使用颜色来表示第三维的变量数据。密度图同时也提供了一个色标，通过设置这个色标可以改变颜色映射方案。密度曲线图控件的光标显示也会显示Z轴的值。</p> <p>　　密度曲线图与波形图接受二维数组类型的输入数据，在这个数组中每一个值表示了一个色彩的颜色。而数组中每个元素的索引则表示了该元素数据所代表颜色的坐标。除了可以通过色标(color scale)设置数据与颜色的转换关系之外，还可以通过属性节点来程控的设置这个转换关系。</p> <p>　　如果要为色标中某个值关联一个颜色，只要在相应的标志(marker)上点击鼠标右键，之后在弹出的右键菜单中选择Marker Color&gt;&gt;，并选择要设定的颜色即可。密度图的Z轴的标尺默认情况下是任意间距标尺(Arbitrary Maker Spacing)的，这时你就可以通过拖动其上的某个标尺来改变其颜色的"渐变"。通过在色标上点击右键，在右键菜单中选择添加标尺(Add Marker)并将其拖动到预定的位置并可为其关联一个新的颜色。如果你想要对密度图了解更多，我们建议你的就多玩玩这些控件，或者是多看看<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>在线帮助中的相关部分来熟悉这个控件。</p> <h5>三维曲线图控件(3D Graphs)</h5> <p>　　对于真正的三维曲线来说，Windows下的专业版的LabVIEW提供了3D Surface Graph、3D Parametric Graph以及3D Curve Graph三个控件。</p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="三维曲线图" border="0" alt="三维曲线图" src="http://www.vigeek.org/images/6b9a403ad0d6_9D83/image_3.png" width="415" height="394"> <br><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="三维曲线图框图" border="0" alt="三维曲线图框图" src="http://www.vigeek.org/images/6b9a403ad0d6_9D83/image_4.png" width="500" height="175"> </p> <p>　　在上面的两个图形中分别显示了一个包含三维曲线图控件的VI的前面板以及其对应的程序框图。与以往的曲线图控件不同的是，这里的3D曲线图VI框图非常简单，并且该3D曲线图控件使用特定的针对其的子VI函数。</p> <p>　　这三类3D曲线图控件都绘制三维图形，不过它们之间也有小小的差别：</p> <p>　　三维曲面控件(3D Surface Graph)，基于Z的数据绘制一个简单的曲面。这个曲面根据X与Y向量而绘制，并根据XY平面的变换而移动。它的输入数据为一个二维数组以及两个可选的一维数组。该控件的VI如下图所示：</p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="三维曲面" border="0" alt="三维曲面" src="http://www.vigeek.org/images/6b9a403ad0d6_9D83/image_5.png" width="282" height="96"> </p> <p>　　三维参数曲面(3D Parametric Surface)根据XYZ的曲面绘制一个曲面。它的输入数据为三个二维数组或矩阵输入，这些数据确定了图中XYZ的每一个平面，该VI如下图所示：</p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="三维参数曲面" border="0" alt="三维参数曲面" src="http://www.vigeek.org/images/6b9a403ad0d6_9D83/image_6.png" width="283" height="91"> </p> <p>　　三维曲线(3D Curve)则是按照XYZ的数据绘制曲线。这个VI的输入数据为三个一维数组或向量，这些数据标识了曲线上的每一个数据点，该VI如下图所示：</p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="三维曲线" border="0" alt="三维曲线" src="http://www.vigeek.org/images/6b9a403ad0d6_9D83/image_7.png" width="284" height="90"> </p> <p>　　三维曲线比以前讲过的曲线图、波形图要复杂多了，它应该是LabVIEW里面的比较进阶的议题。在这里我们就不做过多的讨论，现在说说它们是为了让你在需要的时候知道它们的存在。如果你想更详细的了解它们，我们建议你仔细琢磨一下LabVIEW自带的三维曲线图的例子。</p>]]>
    </content>
</entry>

<entry>
    <title>曲线图与波形图控件的组成</title>
    <link rel="alternate" type="text/html" href="http://www.vigeek.org/2009/09/chart-graph-components.html" />
    <id>tag:www.vigeek.org,2009://1.35</id>

    <published>2009-09-26T01:53:13Z</published>
    <updated>2009-11-14T04:23:48Z</updated>

    <summary>　　  　　曲线图与波形图有很多强大的特色功能，通过掌握对这些功能的应用，你可以...</summary>
    <author>
        <name>GeekZ</name>
        <uri>http://www.vigeek.org</uri>
    </author>
    
        <category term="LabVIEW教程" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="LabVIEW相关" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="软件技术" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="chart" label="Chart" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="component" label="Component" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="组成" label="组成" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="graph" label="Graph" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="曲线图" label="曲线图" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="波形图" label="波形图" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.vigeek.org/">
        <![CDATA[　　  <p>　　曲线图与波形图有很多强大的特色功能，通过掌握对这些功能的应用，你可以自定义自己的曲线。在本文中将讲解如何运用与配置这些曲线图的选项。</p> <p>　　一个曲线图的组成元素如下图所示：</p>]]>
        <![CDATA[ <p>&nbsp;</p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Graph " border="0" alt="Graph " src="http://www.vigeek.org/WindowsLiveWriter/19b74bb75378_8C41/image_9.png" width="500" height="385"> </p> <p>　　其中每个组件的说明如下：<br>1——曲线图例(Plot legend) <br>2——光标(Cursor) <br>3——分度标记(Grid mark)<br>4——小分度标记(Minor-grid mark)&nbsp;&nbsp; <br>5——曲线图工具栏(Graph palette)<br>6——光标移动器(Cursor mover)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>7——光标图例(Cursor legend)<br>8——比例图标(Scale legend)<br>9—— X轴刻度(X-scale)<br>10——Y轴刻度(Y-scale)<br>11——曲线图标记(Label)</p> <h5>玩转比例尺</h5> <p>　　波形图与曲线图都能自动调整它们的水平与垂直方向的刻度比例以对绘于其上的数据点作出反应，也就是说比例尺能够按最大的分辨率调整自己以显示数据曲线上的所有数据点。你可以在曲线图或波形图对象上面点击鼠标右键，在右键弹出菜单中的X Scale菜单或Y Scale菜单里面对AutoScale X或AutoScale Y选项进行设置就可以将自动比例尺调整功能关闭或打开。在比例图标(Scale Legend)里面我们也可以对自动比例尺调整进行设置（在后面我们会讲到这些）。在LabVIEW中，默认是将曲线图控件的自动调整功能启用的，而波形图控件这是默认关闭的。不过，通过启用这个选项可能会使波形图或曲线图更新缓慢，缓慢程度与计算机的处理性能和显示性能有关，缓慢的原因是每条曲线的新比例在每次数据更新的时候都要重新计算一次。</p> <h6>X与Y轴比例尺菜单</h6> <p>　　X与Y轴的比例尺都有一个用来设置的子菜单，如下图所示：</p> <p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="LabVIEW Scale Menu" border="0" alt="LabVIEW Scale Menu" src="http://www.vigeek.org/WindowsLiveWriter/19b74bb75378_8C41/untitled_3.jpg" width="290" height="179">  <p>　　通过选择该菜单中的AutoScale选项，就可以关闭或打开自动比例尺功能。</p> <p>　　一般情况下，当你执行自动比例尺功能的时候，比例尺就设定为输入数据的实际数值范围。如果你想要让LabVIEW将比例尺显示为更好看的数值，可以启用菜单中的Loose Fit选项。在启用该选项之后，比例尺上的数值就成为比例尺增量的整数倍值。比如，你的比例尺的增量为5，那么比例尺的最大最小值就是5个倍数而不是实际的数值范围。</p> <p>　　Formatting...选项就会打开一个曲线图属性对话框，并显示该对话框的格式与精度页面（Format&nbsp; and Precision），如下图所示。在这里就可以配置比例尺上的数字的格式。</p> <p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Format DIalog" border="0" alt="Format DIalog" src="http://www.vigeek.org/WindowsLiveWriter/19b74bb75378_8C41/image_3.png" width="495" height="480"> </p> <p></p> <p>　　在Scale标签页里面，如下图所示。可以对如下选项进行设置：</p> <ol> <li>Name是坐标轴标签；  <li>Show scale label选项可以用来设置显示与隐藏坐标轴标签；  <li>Log选项用来设置数值是以线性（不选中）或是对数（选中）比例进行显示；  <li>Inverted选项用来设置比例尺的最大与最小值翻转（选中）或正常（不选）；  <li>Autoscale选项用来启用或关闭自动比例功能。如果自动比例关闭，就可以在下面的最大值以及最小值里面设置比例尺的取值范围；  <li>Scale Style and Colors部分可以设置主分隔与从分隔的颜色；  <li>Scaling Factors部分，在Offset处，你可以设置该坐标轴值的起点，在Multiplier部分可以设置坐标增量。</li></ol> <p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Scale" border="0" alt="Scale" src="http://www.vigeek.org/WindowsLiveWriter/19b74bb75378_8C41/image_6.png" width="497" height="481"></p>]]>
    </content>
</entry>

<entry>
    <title>LabVIEW中的XY曲线图</title>
    <link rel="alternate" type="text/html" href="http://www.vigeek.org/2009/09/labview-xy-graph.html" />
    <id>tag:www.vigeek.org,2009://1.34</id>

    <published>2009-09-21T07:38:10Z</published>
    <updated>2009-09-21T07:59:18Z</updated>

    <summary>　　我们常用的曲线图的设计目的就是用来显示以固定间隔采样的波形数据的。不过当我们...</summary>
    <author>
        <name>GeekZ</name>
        <uri>http://www.vigeek.org</uri>
    </author>
    
        <category term="LabVIEW教程" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="LabVIEW相关" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="软件技术" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="plot" label="Plot" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="xygraph" label="XY Graph" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="xy曲线图" label="XY曲线图" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="控件" label="控件" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="曲线图" label="曲线图" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.vigeek.org/">
        　　我们常用的曲线图的设计目的就是用来显示以固定间隔采样的波形数据的。不过当我们使用不规则间隔进行采样或者是需要绘制对每个X值都有多个Y值的数学函数时，我们就得通过使用坐标来确定每个数据点了。XY曲线图就是用来绘制这种特殊的数据的；它们的输入数据类型与波形曲线图控件的输入数据类型是不一样的。一个单曲线XY曲线图控件以及对应的程序框图如下所示。
        <![CDATA[ <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.vigeek.org/images/LabVIEWXY_DC91/image.png" width="380" height="334"> </p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.vigeek.org/images/LabVIEWXY_DC91/image_3.png" width="334" height="153"> </p> <p>　　对于只有一条曲线的情况，XY曲线图的输入应该是一个X数组（上端的输入）与一个Y数组（下端的输入）的绑定。这个绑定函数（Bundle函数，可以在Programming&gt;&gt;Cluster &amp; Variant子面板找到）将X与Y数组绑定为一个簇，并将这个簇输入到XY曲线图中。可以看到这时的XY曲线图的端点显示为它是一个簇类型的数据。 <p>　　如果打开在线帮助窗口，并将鼠标光标移动到XY曲线图的输入端点，就可以看到可以连接到XY曲线图控件的单曲线或多曲线的数据类型的详细描述。 <p></p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.vigeek.org/images/LabVIEWXY_DC91/image_4.png" width="348" height="247">　　对于多曲线的XY曲线图，就像下图这样创建一个单曲线簇的数组即可。</p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.vigeek.org/images/LabVIEWXY_DC91/image_5.png" width="407" height="187"> </p> <p>　　需要注意的是，我们很容易将Bundle和Build Array函数搞混，在为曲线图提供数据的时候要留意不要搞错了。</p> <p>　　除了在Context Help窗口中所提到的XY曲线图所能使用的数据类型之外，我们也可以创建一个由XY簇（配对坐标值）所组成的数组来绘制一条曲线。如下图所示。使用这种方式的唯一缺点就是不能够使用这种方式来创建可以绘制多条曲线的数组。</p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.vigeek.org/images/LabVIEWXY_DC91/image_6.png" width="356" height="159"> </p> <h5>在XY曲线图显示可选位面</h5> <p>　　XY曲线图可以用来显示特殊的网格线，这些特殊网格线被称为位面（planes），启用的方式就是在XY曲线图上点击鼠标右键并在右键菜单的Optional Plane子菜单中选择。可选项包括了Nyquist、Nichols、S以及Z位面。这些位面在射频（RF）以及声音与振动分析中是十分有用的，因为在这些情况下信号是在频域而非时域进行分析的。通过在XY曲线图的右键菜单的Optional&gt;&gt;Show Cartesian Lines选项，你可以设置是否显示笛卡尔坐标系的网格线。同样在Optional Plane子菜单中也可以设置是否显示选中位面的标题。下面的图片分别是使用Nyquist以及Z位面显示的XY曲线图。注意的是曲线上显示的线是网格线而不是显示的数据。</p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.vigeek.org/images/LabVIEWXY_DC91/image_7.png" width="378" height="332"> </p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.vigeek.org/images/LabVIEWXY_DC91/image_8.png" width="375" height="330"></p>]]>
    </content>
</entry>

<entry>
    <title>LabVIEW中的曲线图</title>
    <link rel="alternate" type="text/html" href="http://www.vigeek.org/2009/09/labview-graph.html" />
    <id>tag:www.vigeek.org,2009://1.33</id>

    <published>2009-09-21T05:19:35Z</published>
    <updated>2009-09-21T05:27:35Z</updated>

    <summary>　　LabVIEW的曲线图与波形图控件不同之处在于：波形图可以交互的实时绘出数据...</summary>
    <author>
        <name>GeekZ</name>
        <uri>http://www.vigeek.org</uri>
    </author>
    
        <category term="LabVIEW教程" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="LabVIEW相关" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="软件技术" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="chart" label="Chart" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="graph" label="Graph" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="labview" label="LabVIEW" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="曲线图" label="曲线图" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="波形图" label="波形图" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.vigeek.org/">
        <![CDATA[<p>　　<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>的曲线图与波形图控件不同之处在于：波形图可以交互的实时绘出数据曲线；而曲线图则是一次性绘出预先生成的数据数组，曲线图没有向已有数据追加新数据的能力。在LabVIEW中有多种曲线图控件的类型，这大大提高了曲线图控件的灵活性，这些类型包括了波形曲线图、XY曲线图、密度曲线图、3D曲线图、数字信号波形曲线图以及一些特殊类型的曲线图。在本文里面我们主要讲一下波形和XY曲线图。波形曲线图以及XY曲线图控件在VI程序的前面板中的外观是一样的，不过其功能却是完全不同的。</p> <p>　　一个有多个曲线的曲线图控件如下图所示：</p>]]>
        <![CDATA[ <p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="LabVIEW Graph" border="0" alt="LabVIEW Graph" src="http://www.vigeek.org/images/LabVIEW_BC66/image6.png" width="529" height="234"> </p> <p>　　这两种类型的曲线图控件可以在Controls控件面板的Modern&gt;&gt;Graph子面板中找到。波形曲线图空间只能用来绘制单值曲线（就是说对每个X值只对应一个Y值），并且这些值所对应的X轴的间距都是一致的，例如由固定采样间隔采集到的波形数据曲线。这个控件最适合绘制数据点均匀分布的数组数据。</p> <p>　　XY曲线图控件则是通用的、基于笛卡尔坐标系的曲线图控件，可以用来绘制变时基或者一个X值对应多个Y值的数据曲线。这两种曲线图控件看起来一样，不过它们的输入数据类型是不同的，这一点要非常注意才是。</p> <h6>单曲线波形曲线图</h6> <p>　　对于简单的单点曲线图，你可以如下图所示将一个Y值的数组直接连接到波形曲线图控件的输入端点上。在这种模式下，默认X的初始值为0，并且X值的增量为1。你可以看到在下图中，程序框图中曲线图控件的输入端点是一个数组指示控件。  <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="LabVIEW Graph" border="0" alt="LabVIEW Graph" src="http://www.vigeek.org/images/LabVIEW_BC66/image13.png" width="253" height="101">  <p><a name="ch08fig14"></a> <p>　　如前面所讲到的<a href="http://www.vigeek.org/2009/07/labview-array-auto-index.html" target="_blank">数组的介绍</a>，上图中的For循环中的输出就是一个一维的数组。  <p>　　有些时候，为了灵活起见，你可能需要修改曲线图的时基。例如，你在进行数据采集的起始时间并不是0，或者是你的数据采样间隔并不是1个标准单位（可能大或者小于一个标准单位）。这是要修改时基的话，就将X0起始值、ΔX 值以及数据数组绑定到一个簇中，之后再将这个簇连接到曲线图。如下图所示，可以看到曲线图控件的输入端已经变成簇指示器的模样了。  <p><a name="iddle1797"></a><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="LabVIEW Graph" border="0" alt="LabVIEW Graph" src="http://www.vigeek.org/images/LabVIEW_BC66/image20.png" width="320" height="126">&nbsp; <p><a name="ch08lev2sec14"></a></p> <h6>多曲线波形曲线图</h6> <p>　　通过创建一个上面单曲线例子中数组（或者是新建一个2维数组）就能够在曲线图控件中显示多条曲线了，如下图所示。可以看到曲线图的输入端随着连接到其上的数据结构的不同也产生了相应的变化。  <p><a name="ch08fig16"></a> <h6><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="LabVIEW中的曲线图" border="0" alt="LabVIEW中的曲线图" src="http://www.vigeek.org/images/LabVIEW_BC66/image27.png" width="285" height="98">&nbsp;</h6> <p>　　在上图中，所显示的两个数组都是设定为初始X值为0，X值的增量为1。Build Array函数是从两个一维数组创建了一个二维数组。可以看到这个二维数组的两个有100行的列。默认情况下，曲线图控件会将二维数组的每列作为一个独立的波形曲线进行绘制。如果你的数据是按行进行组织的，那么在绘图之前你需要转置你的数组。转置意味着将行和列中的数值调换位置。例如，如果你要转置一个三列十行的二维数组，你最后得到的就是一个十列三行的二维数组。在LabVIEW中，只要简单的在曲线图控件上点击鼠标右键并在右键菜单中选择Transpose Array选项即可，如果你的曲线图没有二维数组的输入，这个选项就为灰色并不可点击。另外你也可以使用Functions菜单中的Array子面板中的Transpose 2D Array函数来完成此操作。</p> <p>　　在下图中，每个数组的X0值以及ΔX值都进行了设定。每组数据的X参数没有必要是一样的。  <p><a name="ch08fig17"></a> <h6><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="LabVIEW中的曲线图" border="0" alt="LabVIEW中的曲线图" src="http://www.vigeek.org/images/LabVIEW_BC66/image34.png" width="392" height="141"></h6> <p>&nbsp; <p>　　同样，我们可以使用Context Help窗口来查看连接到曲线图控件的数据类型的详细描述，如下图所示。这是一个很有用的参考。只要在程序框图中，将鼠标光标移动到曲线图的输入端点就可以在Context Help窗口看到绘制曲线的数据输入的详细描述了。通过菜单Help&gt;&gt;Show Context Help或者是快捷键&lt;Ctrl+H&gt;都可以启动这个Context Help窗口。  <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="LabVIEW中通过帮助窗口查看数据类型" border="0" alt="LabVIEW中通过帮助窗口查看数据类型" src="http://www.vigeek.org/images/LabVIEW_BC66/image41.png" width="380" height="269"></p>]]>
    </content>
</entry>

<entry>
    <title>LabVIEW中的波形图</title>
    <link rel="alternate" type="text/html" href="http://www.vigeek.org/2009/09/labview-waveform-charts.html" />
    <id>tag:www.vigeek.org,2009://1.32</id>

    <published>2009-09-08T07:33:15Z</published>
    <updated>2009-09-18T08:10:18Z</updated>

    <summary>　　所谓曲线就是一组X与Y对应数值的图形化显示。通常曲线图中的Y值代表了数据值，...</summary>
    <author>
        <name>GeekZ</name>
        <uri>http://www.vigeek.org</uri>
    </author>
    
        <category term="LabVIEW教程" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="LabVIEW相关" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="软件技术" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="labview" label="LabVIEW" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="waceformchart" label="Waceform Chart" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="显示控件" label="显示控件" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="曲线" label="曲线" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="波形图" label="波形图" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.vigeek.org/">
        <![CDATA[　　所谓曲线就是一组X与Y对应数值的图形化显示。通常曲线图中的Y值代表了数据值，而X值则代表了时间。波形图控件（waveform chart）可以在Controls工具面板的Modern&gt;&gt;Graph子面板中找到。这个控件是一个专门用来显示一个或多个数据曲线的数值类型的指示器控件。这个控件经常在循环结构中使用，用来保留与显示以前采集到的数据，并追加新产生的数据，将这些数据以连续更新的方式进行显示。在波形图控件中，Y值表示了新产生的数据，X值表示了时间（通常，每次循环就产生一组新的Y值，而X值则表示了一个循环的时间）。在 <a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>中只有一种波形图控件，不过这个控件有三种数据刷新模式。下图就是一个多曲线波形图的例子。]]>
        <![CDATA[ <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.vigeek.org/images/LabVIEW_DB75/image.png" width="202" height="143"> </p> <h5>波形图更新模式</h5> <p>　　波形图控件的三种数据更新模式分别是带状记录纸模式(strip chart)，示波器图模式（scope chart）以及扫描图模式（sweep chart），如下图所示。数据更新模式可以通过在波形图控件上面点击鼠标右键后在弹出菜单中的Advanced&gt;&gt;Update Mode&gt;&gt;子菜单来加以改变。如果在VI程序运行期间想要修改波形图控件的数据更新模式，由于运行时的控件右键菜单与编程时的不同，就在该控件的邮件菜单中的Update Mode中选择即可。</p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.vigeek.org/images/LabVIEW_DB75/image_3.png" width="468" height="118"> </p> <p>　　带状记录纸模式的显示和真正的带状记录设备的显示相像。示波器图模式则和真正示波器的曲线显示相像，该模式中当曲线到达波形图的右边界之后，整个曲线就会清除并从波形图的左边界重新开始显示。扫描图模式与示波器图模式十分相似，不过扫描图模式中曲线到达右边界后并不会有清除动作，而是有一个竖线出现在波形图中，该竖线标识着新数据的开始，并在新数据不停添加的时候，该竖线会慢慢移动。这些区别在看到实际波形图控件在不同刷新模式先运行之后就很容易区别开来的。由于示波器图模式与扫描图模式在追溯以往曲线上比带状记录纸模式的开销要少，所以这两种数据更新模式要比带状记录纸模式很明显的快得多。</p> <p><strong>注意：</strong>波形图中一直都是设定为X值代表了等间隔的点。在LabVIEW的波形图中，你可以只提供Y值而不用管X值。每次波形图中添加一个新的Y值之后，就会自动为X值加一。对于X值是任意值的情况就需要使用后面介绍的曲线图而不要使用波形图了。</p> <p>　　波形图控件可以接收的数据类型包括了数值、数组以及波形数据类型。在波形数据类型中包含了时间信息（比如第一个数据点的时间标志以及每点之间的时间间隔）。波形图控件将使用这些时间信息来显示数据，这也就意味着这时初始的X值以及每点之间的间隔在每次有新数据写入到波形图时是不同的。</p> <h5>单曲线波形图</h5> <p>　　使用波形图控件的一个最简单的方法就是将一个数值在VI程序框图中连接到波形图控件的输入端点，如下图所示。在每循环一次就会有一个点被添加到波形图中所显示的波形中。</p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.vigeek.org/images/LabVIEW_DB75/image_4.png" width="214" height="177"> </p> <p>　　也可以通过一次添加多个点来更新单曲线的波形图，如下图所示，传送一个数组的数值给波形图。</p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.vigeek.org/images/LabVIEW_DB75/image_5.png" width="247" height="179"> </p> <h5>多曲线波形图的连线</h5> <p>　　波形图控件也可以用来显示多条曲线。不过，由于比不能从多个数据源连线到单一的波形图控件输入端点，所以需要先使用捆绑函数(Bundle函数，可以在 Programming&gt;&gt;Cluster &amp; Variant子面板找到)将多个数据捆到一起。如下图所示，该函数“捆绑”或聚合了三个不同的采集温度的VI的输出到了一个簇中，以便这些数据能够被波形图控件说显示。大家可以注意一下波形图控件的端点连接到捆绑函数的输出之后的变化。如果需要添加多个曲线，只要增加捆绑函数的输入端点的个数即可。</p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.vigeek.org/images/LabVIEW_DB75/image_6.png" width="244" height="175"> </p> <p>　　在连接多曲线的波形图的时候，要确保使用的是Bundle函数，而不是Build Array函数。LabVIEW会将数组中的数值看成同属于一条曲线，把簇中的数值看成是属于多条曲线。如果使用了创建数组函数，你得到的将是每次循环中有三个新数据点的单条曲线。这种情况在从硬件读取波形时是很有用的，因为这时你读取的是单个通道的多个采样点的数据。</p> <h5>单曲线与多曲线数据类型对比：需要记住的技巧</h5> <p>　　曲线图与波形图是可复用的。它们可以接受几种不同类型的数据，并可以用来显示单条或多条曲线。不过有些时候，很难记清楚用于单曲线、多曲线的数据类型。另外，曲线图与波形图也有多种类型，这使这一切变得更复杂了。 <p>　　不过有一个简单快捷的方法可以找出用于某种曲线图或波形图的数据类型。这个方法就是在程序框图中，将鼠标光标移动到曲线图或波形图输入端点上方，这时在Context Help窗口中就可以看到曲线数据类型的详细描述了。这个Context Help窗口可以通过菜单Help&gt;&gt;Show Context Help或者是使用快捷键&lt;ctrl+H&gt;打开。 <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.vigeek.org/images/LabVIEW_DB75/image_7.png" width="536" height="287">  <h5>显示数值？</h5> <p>　　与其他的数值显示器控件类似，波形图也有显示或隐藏数值显示的选项（在曲线图上点击鼠标右键，在右键菜单的Visible Items&gt;&gt;Option中可以设置）。这个数值显示部分就会显示波形图中显示的最后一个数据的值。</p> <h5>X轴滚动栏</h5> <p>　　波形图也有一个X轴滚动栏，可以通过右键菜单Visible Items&gt;&gt;中的子菜单来设置其是否可见。你可以通过拖动这个滚动栏查看波形图中已经不在显示屏中的旧数据。</p> <h5>清空波形图</h5> <p>　　有些时候，我们必须从波形图中删除旧数据。可以通过右键菜单中的Data Operations&gt;&gt;Clear Chart选项在编辑模式下清空波形图中的所有数据。如果你的VI不在运行状态下一般就是处于编辑状态，如需要在VI未运行是更改状态，可以在 Operator菜单中选择Change to Run/Edit Mode即可。如果VI处于运行状态，Clear Chart选项就可以在右键菜单直接找到，而不用在Data Operations子菜单中寻找了。 <p>　　如果需要在程序中通过编程来自动清除波形图中的数据，你就需要向波形图控件的History Data属性中写入一个空数组，如下图所示。 <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="" border="0" alt="" src="http://www.vigeek.org/images/LabVIEW_DB75/image_8.png" width="161" height="72">  <h5>覆盖模式以及堆叠模式的波形图</h5> <p>　　如果你使用的是多曲线的曲线图控件，你可以选择将所有曲线共用同一个Y轴显示，这种显示模式就称为覆盖模式；或者是让每一条曲线有一个独立的Y轴，这种显示模式就称为堆叠模式。这可以在波形图的右键菜单中选择显示类型来完成设定。下图显示了这两种显示模式的区别：</p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.vigeek.org/images/LabVIEW_DB75/image_9.png" width="319" height="117"> </p> <h6>多标度Y轴</h6> <p>　　如果一个波形图中有多条曲线，并且在覆盖模式下进行显示，有些时候就需要为每条曲线设定不同的Y轴标度。例如，一条曲线的Y值范围是从-1到+1，另一条曲线的Y值范围是-100到+100，这是使用覆盖模式并以同一个标度的Y轴进行显示就可能看不清Y值范围较小的那条曲线，这时使用多标度的Y轴就显得必要了。使用多标度Y轴的具体步骤如下，首先在Y轴点击鼠标右键在弹出的右键菜单中选择Duplicate Scale选项；之后，在这个新标度上点击鼠标右键，在右键菜单中选择Swap Sides将这个复制的标度移动到曲线图的另一侧。如果需要删除一个Y轴标度，就在该标度上点击鼠标右键并选择Delete Scale选项即可。下图是一个使用了两个Y轴标度的波形图的示例：</p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="" border="0" alt="" src="http://www.vigeek.org/images/LabVIEW_DB75/image_10.png" width="338" height="223"> </p> <p>　　在波形图中不能够复制多个X轴标度。因为波形图控件只能有一个X轴标度。如果你试着在X轴标度上点击鼠标右键，就发现在弹出的右键菜单中Duplicate Scale选项是灰色不可用的。（在曲线图控件中则是可以使用多X轴标度的）</p> <p>　　通过在曲线图或波形图上点击鼠标右键，在右键菜单中选择 Advanced&gt;&gt;Reset Scale Layout就可以复位曲线图或波形图的标度。执行这个操作之后，Y轴标度就会返回到曲线显示区域的左侧，X轴标度就会返回到曲线显示区域的下端，并复位标度数值。</p> <h5>波形图历史长度</h5> <p>　　默认情况下，波形图控件可以存储1024个数据点。如果你想让它存储更多或更少的数据，可以在右键菜单的 Chart History Lenggth...选项来设定一个新的数据点数值，该值的取值范围是10到2,147,483,647（不过实际的限制可能受你的计算机的内存大小的限制而会小些）。更改了这个缓存的大小并不会改变在波形图上一次显示的数据的个数，只会改变你通过滚动栏可以回溯的数据的总数。</p>]]>
    </content>
</entry>

<entry>
    <title>LabVIEW的错误簇以及错误处理函数</title>
    <link rel="alternate" type="text/html" href="http://www.vigeek.org/2009/09/labview-error-clusters-handling.html" />
    <id>tag:www.vigeek.org,2009://1.31</id>

    <published>2009-09-02T05:30:02Z</published>
    <updated>2009-09-02T07:06:42Z</updated>

    <summary><![CDATA[　　我们可以在LabVIEW的Modern&gt;&gt;Array, Matr...]]></summary>
    <author>
        <name>GeekZ</name>
        <uri>http://www.vigeek.org</uri>
    </author>
    
        <category term="LabVIEW教程" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="LabVIEW相关" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="软件技术" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="cluster" label="Cluster" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="errorclusters" label="Error Clusters" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="错误簇" label="错误簇" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="错误处理" label="错误处理" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="labview" label="LabVIEW" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.vigeek.org/">
        <![CDATA[　　我们可以在<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>的Modern&gt;&gt;Array, Matrix &amp; Cluster控件面板找到表示错误簇数据类型的错误输入(Error In)以及错误输出(Error Out)两个错误簇控件。其实在很多LabVIEW的内置函数以及VI中，都包括了错误输入以及错误输出这两个错误簇类型的输入与输出参数。错误簇是<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>中的一个特殊的数据类型，该簇是由一个表示状态的布尔变量(status)、一个表示错误代码的32位整型变量(code)以及一个说明错误原因的字符串变量(source)组成的，错误簇用于传递<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>代码运行期间的出错信息。]]>
        <![CDATA[ <p>　　程序中出现错误并对错误进行处理是很自然的现象，我们没有必要害怕程序出错，更重要的是我们要学会发现错误发生的原因、获取错误的信息以及处理错误的方法。在LabVIEW中，什么叫做错误呢？简单的说，一个函数或子VI不能够完成其所设定的功能就可以称为出错了。出错的原因可能是无法访问必要的资源或者是函数接受的参数是无效的等等。在LabVIEW这个数据流的编程语言中，是是使用错误簇这种数据类型来传递错误信息的。</p> <h5>错误簇(Error Cluster)数据类型</h5> <p>　　如下图所示，LabVIEW中的错误簇是由以下三部分组成的：<br><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Error Cluster" border="0" alt="Error Cluster" src="http://www.vigeek.org/images/LabVIEW_C200/image.png" width="159" height="135"> </p> <ol> <li>status 状态布尔量，当有错误发生时该值为TRUE，没有错误发生时该值为FALSE；</li> <li>code 标识错误代码的32位整型变量，当该值为负时表示有程序警告，为零表示没出错，为正表示有错误发生；</li> <li>source 错误原因字符串，给出了出错原因的描述性信息。</li></ol> <h5>错误信息传递：错误数据流</h5> <p>　　LabVIEW本身就是一个基于数据流的编程语言，对于错误信息的传递也是使用数据流的形式在LabVIEW的程序框图中实现的。如下图中的红点标识处所示，错误簇数据在框图中是按顺序、连续的在程序中传递的。</p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Error 数据流" border="0" alt="Error 数据流" src="http://www.vigeek.org/images/LabVIEW_C200/image_3.png" width="480" height="114"> </p> <p>　　很多LabVIEW函数以及子VI都有错误输入(Error In)以及错误输出(Error Out)端点，一般这两个端点分别位于函数节点图标的左下侧以及右下侧。</p> <h5>在子VI中如何对错误做出反应</h5> <p>　　函数以及子VI对于错误的一般反应都是按照如下两点实现的：</p> <ol> <li>如果错误输入(Error In)参数输入了一个错误，不要进行除了清理操作之外的任何其他操作，而清理操作包括了：关闭文件、关闭设备或通讯端口、将系统切换回空闲或安全状态（例如关闭电机等等）；</li> <li>如果在函数或子VI内部出错，就需要通过函数或子VI的错误输出(Error Out)端点将该错误信息传递出去。如果从函数或子VI的错误输入端点早就传入了一个错误信息，那就原封不动的将该错误信息从错误输出端点输出。</li></ol> <h5>以错误簇为条件的Case结构</h5> <p>　　通过使用如下图所示的错误簇Case结构，我们可以轻易的实现上面中的第2条的常规错误处理动作。实现错误簇Case结构只需要将一个错误簇数据连接到Case结构的选择端上。</p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Error Case" border="0" alt="Error Case" src="http://www.vigeek.org/images/LabVIEW_C200/image_4.png" width="311" height="137"> </p> <p>　　当错误簇数据连接到Case结构的选择端子后，Case结构的两个默认帧的名称就自动变为“No Error”和“Error”了。在程序运行时，如果输入的错误簇中没有出错信息，就会执行Case结构中的No Error帧中的代码，反之则执行Error帧中的代码。实现上面提到的第2条功能只需要将Error帧中错误簇直接连接到VI的错误输出端，将没错误的情况下的执行代码放到No Error帧中。</p> <h5>错误数据融合</h5> <p>　　在程序中如果上游的函数就已经出错了，这时要做清理工作该怎么办呢？这时就不便使用错误Case结构了，最好就是使用融合错误(Merge Error)函数将所有的上游错误融合在一起，如下图所示：</p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Merge Error LabVIEW" border="0" alt="Merge Error LabVIEW" src="http://www.vigeek.org/images/LabVIEW_C200/image_5.png" width="174" height="163"> </p> <p>　　这个函数可以在Programming&gt;&gt;Dialog &amp; User Interface面板中找到。在使用这个函数的时候要注意，错误簇只能包含一个错误信息，而这个融合错误的函数将多个错误融合为一个错误，最终得到的错误是按照该函数的输入端至上而下的优先级得到的，也就是说优先级最高的输入端上如果有错误数据，最终的输出就是该错误数据。在实际的编程中，就需要按照程序中实际需要连接这个函数的错误输入数据。如果所有的输入端都没有错误发生，最后该函数的输出也是无错误的(no error)。</p>]]>
    </content>
</entry>

<entry>
    <title>LabVIEW中用于数组与簇的比较函数</title>
    <link rel="alternate" type="text/html" href="http://www.vigeek.org/2009/08/labview-comparison-for-arrays-clusters.html" />
    <id>tag:www.vigeek.org,2009://1.30</id>

    <published>2009-08-31T06:23:09Z</published>
    <updated>2009-08-31T06:47:51Z</updated>

    <summary>　　我们在前面就曾经讲过LabVIEW中的函数具有复用功能。下面说说用于数组与簇...</summary>
    <author>
        <name>GeekZ</name>
        <uri>http://www.vigeek.org</uri>
    </author>
    
        <category term="LabVIEW教程" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="LabVIEW相关" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="软件技术" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="array" label="Array" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="cluster" label="Cluster" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="簇" label="簇" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="labview" label="LabVIEW" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="数组" label="数组" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="比较函数" label="比较函数" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.vigeek.org/">
        <![CDATA[　　我们在前面就曾经讲过LabVIEW中的函数具有复用功能。下面说说用于数组与簇的比较函数的两种比较模式：总体比较(Compare Aggregates)以及元素比较(Compare Elements)。这两种比较模式可以通过在比较函数节点上点击鼠标右键，在弹出的右键菜单的Comparison Mode子菜单中进行设置，如下图所示：<br />]]>
        <![CDATA[<img alt="comparison mode select.PNG" src="http://www.vigeek.org/2009/08/31/comparison%20mode%20select.PNG" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="381" height="272" />　　这里如果选择总体比较(Compare Aggregates)模式的话，LabVIEW将对被比较的簇或数组的总体进行比较，并返回一个单独的布尔量。只有在被比较的簇或数组的每个元素的比较结果都为TRUE的时候，该比较函数的返回值才为TRUE。在元素比较(Compare Elements)模式下，比较函数返回一个布尔值的数组或簇，该布尔值数组或簇的组成元素为对应数组或簇的元素的比较结果。下图为两个数组分别进行总体比较与元素比较的示意图：<br /><img alt="Comparison Demo.PNG" src="http://www.vigeek.org/2009/08/31/Comparison%20Demo.PNG" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="480" height="114" />　　在上图左侧是按照元素比较的模式对两个数组进行比较的，得到的结果是一个元素为布尔量的数组，该数组的每个元素代表了数组1与数组2的对应元素的比较结果。在右侧的是按照总体比较模式对两个数组进行比较，得到的结果是一个布尔值，该值表示两个被比较的数组是否完全一致，也就是说其所有元素都符合比较条件。]]>
    </content>
</entry>

<entry>
    <title>LabVIEW中数组与簇的相互转换</title>
    <link rel="alternate" type="text/html" href="http://www.vigeek.org/2009/08/labview-arrays-clusters-interchange.html" />
    <id>tag:www.vigeek.org,2009://1.29</id>

    <published>2009-08-27T05:30:00Z</published>
    <updated>2009-08-27T08:50:03Z</updated>

    <summary>　　在使用LabVIEW的过程中，我们会发现将数组转换为簇会比较便于我们的编程；...</summary>
    <author>
        <name>GeekZ</name>
        <uri>http://www.vigeek.org</uri>
    </author>
    
        <category term="LabVIEW教程" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="LabVIEW相关" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="软件技术" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="array" label="Array" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="cluster" label="Cluster" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="簇" label="簇" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="labview" label="LabVIEW" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="数组" label="数组" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="互换" label="互换" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.vigeek.org/">
        <![CDATA[<p>　　在使用<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>的过程中，我们会发现将数组转换为簇会比较便于我们的编程；有些时候，将簇转换为数组也为编程提供了便利。在LabVIEW的内置函数中，其中可以对数组操作的函数远多于可以对簇进行操作的函数。这就更显得簇与数组相互转换的功能是十分有用的。</p>]]>
        <![CDATA[ <p>　　例如，你的VI的前面板上有一个簇，其中的元素都是按钮，如果你想要对这些按钮上的值执行一个反转操作，数组操作中有一个Reverse 1D的函数就非常适合这种情况，不过该函数只对数组才能进行操作。这时就可以使用簇转换为数组(Cluster To Array)函数将这个簇转换为数组，再使用Reverse 1D函数对该数组完成反转操作，之后再使用数组转换为簇函数(Array To Cluster)将该数组转换为簇，这样就完成了预定的目标。</p> <p>　　簇转换为数组(Cluster To Array)函数与数组转换为簇(Array To Cluster)函数分别如下图所示：<img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="LabVIEW数组与簇互相转换" border="0" alt="LabVIEW数组与簇互相转换" src="http://www.vigeek.org/WindowsLiveWriter/LabVIEW_E603/image_3.png" width="290" height="87"> </p> <p>　　簇转换为数组(Cluster To Array)函数可以用来将具有同一种数据类型的N个元素的簇转换为该数据类型的N个元素的数组。数组的次序与簇中的元素次序是一致的。（就是说，簇中次序为0的元素在数组中就是索引为0的元素）。这个函数对于有数组为元素的簇是不适用的，因为在LabVIEW中是不允许创建以数组为元素的数组的。这个函数只对所有元素为同一数据类型的簇才能使用。<br>　　数组转换为簇(Array To Cluster)函数可以将具有N个元素的一维数组转换为具有N个同样数据类型元素的簇。在使用该函数的时候，需要使用鼠标右键点击该函数并在弹出的右键菜单中选择Cluster Size…菜单，并在弹出的对话框中设定输出的簇的元素个数。这是因为簇不像数组那样可以自动调整大小。簇的元素个数默认设定为9。如果你的输入数组的元素个数少于你设定的簇元素个数，LabVIEW就会按照该数据类型的默认值来添加其他的簇元素。如果输入的数组的元素个数多于设定的簇元素的个数，LabVIEW就会按照设定的簇元素的个数截取输入数组的前面的元素。<br>　　这两个函数可以在Programming&gt;&gt;Array或Programming&gt;&gt;Cluster &amp; Variant子工具面板找到。</p>]]>
    </content>
</entry>

<entry>
    <title>LabVIEW中簇的使用</title>
    <link rel="alternate" type="text/html" href="http://www.vigeek.org/2009/08/labview-cluster-usage.html" />
    <id>tag:www.vigeek.org,2009://1.28</id>

    <published>2009-08-27T04:00:00Z</published>
    <updated>2009-08-27T07:57:45Z</updated>

    <summary>　　在前一篇文章，我们讲了LabVIEW中簇的一些基本概念。下面介绍一下LabV...</summary>
    <author>
        <name>GeekZ</name>
        <uri>http://www.vigeek.org</uri>
    </author>
    
        <category term="LabVIEW教程" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="LabVIEW相关" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="软件技术" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="cluster" label="Cluster" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="簇" label="簇" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="labview" label="LabVIEW" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="使用方法" label="使用方法" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.vigeek.org/">
        <![CDATA[<p>　　在<a href="http://www.vigeek.org/2009/08/cluster-in-labview.html" target="_blank">前一篇文章</a>，我们讲了<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>中<a href="http://www.vigeek.org/2009/08/cluster-in-labview.html" target="_blank">簇</a>的一些基本概念。下面介绍一下<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>中簇的使用。</p> <h5>使用簇与子VI之间传送数据</h5> <p>　　在<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>中，每个VI的连接端点的个数最多为28个。不过在实际的使用中，你可能也不想使用有这么多个连接端点的VI，一方面连接线太多看起来很烦，另一方面就是很容易接错端点。通过使用<a href="http://www.vigeek.org/2009/08/cluster-in-labview.html" target="_blank">簇(Cluster)</a>就可以轻松的将多个输入控件或输出控件捆绑到一起，这样就只要一个连接端点就可以与子VI(subVI)之间完成传送多个数据的任务。通过这种使用<a href="http://www.vigeek.org/2009/08/cluster-in-labview.html" target="_blank">簇</a>的方法，在VI的输入输出数据个数多于28个时，就可以绕过<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>的这个限制。如果你只是想减少LabVIEW中VI的连线数目，也可以使用<a href="http://www.vigeek.org/2009/08/cluster-in-labview.html" target="_blank">簇</a>来实现。</p>]]>
        <![CDATA[ <h5>簇捆绑函数(Bundle Function)</h5> <p>　　簇捆绑函数（Bundle Function）可以在工具面板的Programming&gt;&gt;Cluster &amp; Variant子面板上面找到。该函数如下图所示：<img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="簇捆绑函数 Bundle Function" border="0" alt="簇捆绑函数 Bundle Function" src="http://www.vigeek.org/WindowsLiveWriter/LabVIEW_D0E6/image_3.png" width="235" height="69"> </p> <p>　　通过使用这个函数，我们可以将多个独立的元素组合到一起来创建一个新的簇，或者是用来替换簇中已有的元素。在将该函数放置到LabVIEW的程序框图中，它只有两个输入端口，如果需要增加输入的个数时，可以通过使用鼠标在该函数顶端或底端使用鼠标拖动该函数的对应边界即可。当将输入数据连接到该函数的对应输入端之后，在输入端的白色部分就会显示对应输入数据类型的标识。使用该函数最终生成的簇中的元素的次序就是这个函数的每个元素对应输入端的次序。<br>　　如果使用这个函数用来创建一个新簇，就不需要在中间的簇(cluster)输入端连接输入簇。不过对于需要替换原有簇中元素的情况，就需要将被替换簇连接到这个中间的簇输入端。如果在该输入端连接了已有的簇，这个簇捆绑函数就会根据所连接的已有簇的元素的情况自动进行调整。<br>　　有一点需要注意的是，如果你在簇中添加了一个新的元素而没有修改这个簇函数的输入的话，你的程序就会出错。反之亦然。</p> <h5>替换簇的元素</h5> <p>　　如果你需要替换已有簇中的某一个元素，可以像下图这样使用簇捆绑函数来完成任务。<img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="替换LabVIEW簇元素" border="0" alt="替换LabVIEW簇元素" src="http://www.vigeek.org/WindowsLiveWriter/LabVIEW_D0E6/image_6.png" width="175" height="64"> </p> <p>　　在这里将簇连接到簇捆绑函数中间的簇连接端点，之后该函数的元素输入部分就会按照输入簇的元素的情况自动调整，之后将需要替换的元素的新值连接到对应的输入端点，对于不需要替换的元素对应的端点不需要连接新的输入值。</p> <h5>簇解绑函数(Unbundle Function)</h5> <p>　　簇解绑函数可以在工具面板的Programming&gt;&gt;Cluster &amp; Variant子面板找到。该函数可以用来将一个簇中的每一个元素分解出来。该函数分解出的各元素输出端点的自上到下的次序与簇中各个元素对应的次序一致。如果这些元素的数据类型一样，用来区分各元素的唯一方式就是它们在簇中的次序。<br><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="LabVIEW簇解绑函数" border="0" alt="LabVIEW簇解绑函数" src="http://www.vigeek.org/WindowsLiveWriter/LabVIEW_D0E6/image_9.png" width="227" height="61"> </p> <p>　　该函数在框图中如上图所示，当将簇连接到该函数的输入时，该函数会自动调整其输出元素端点的个数与当前簇中元素的个数一致，并在右侧的空白处会自动根据其对应的元素的数据类型显示相应数据类型的图标。</p> <h5>根据元素名称捆绑与解绑簇</h5> <p>　　有些时候，我们只对簇中的一两个元素进行操作，就没有必要捆绑或是解绑整个簇。这时我们可以使用根据元素名称捆绑与解绑簇函数（Bundle By Name/Unbundle By Name）。 <br>　　根据元素名称捆绑簇函数(Bundle By Name)可以在Cluster子面板找到。该函数使用名称来引用元素而不是根据元素次序来进行引用。与Bundle函数不同，使用这个函数你可以只访问你需要访问的元素。不过，根据元素名称捆绑函数不能用来创建新的簇，只能够用来替换已有簇中的元素。而且每次使用这个函数函数中间的输入端点“簇”必须连接你需要进行元素替换的簇。<img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Bundle By Name" border="0" alt="Bundle By Name" src="http://www.vigeek.org/WindowsLiveWriter/LabVIEW_D0E6/image_14.png" width="292" height="74"></p> <p></p> <p>　　根据元素名称解绑簇函数(Unbundle By Name)同样可以在Cluster子面板找到。该函数可以用来输出你指定的簇元素的值。使用这个函数就不必担心簇中元素的次序问题了。</p>]]>
    </content>
</entry>

<entry>
    <title>LabVIEW中的簇</title>
    <link rel="alternate" type="text/html" href="http://www.vigeek.org/2009/08/cluster-in-labview.html" />
    <id>tag:www.vigeek.org,2009://1.27</id>

    <published>2009-08-19T04:31:14Z</published>
    <updated>2009-08-27T02:29:35Z</updated>

    <summary>　　在前面的几篇文章中，我们已经介绍过了LabVIEW中的数组了，现在我们就讲一...</summary>
    <author>
        <name>GeekZ</name>
        <uri>http://www.vigeek.org</uri>
    </author>
    
        <category term="LabVIEW教程" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="LabVIEW相关" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="软件技术" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="cluster" label="Cluster" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="簇" label="簇" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="labview" label="LabVIEW" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="数据类型" label="数据类型" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.vigeek.org/">
        <![CDATA[　　在前面的几篇文章中，我们已经介绍过了<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>中的<a href="http://www.vigeek.org/2009/08/compound-arithmetic-in-labview.html" target="_blank">数组</a>了，现在我们就讲一下簇(Cluster)。与<a href="http://www.vigeek.org/2009/08/compound-arithmetic-in-labview.html" target="_blank">数组</a>类似，簇也是一种将数据集合到一起的一种数据结构。簇与数组的不同点在于：数组只能将同一类型的数据集合到一起，而簇却能将不同种类的数据集合到一起（例如布尔类型、数值类型以及字符串等等）。如果将簇与传统编程语言中的数据类型进行比较的话，它就类似于C语言中的结构(struct)或是C++或Java语言中类(class)中的数据元素。在<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>中，一个簇可以想象为一个将多根线捆在一起的捆线器，就像是包含了多根电线的电缆一样。在这根缆中的每根线代表了簇中不同的元素。由于簇在<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>的框图中只有一根线，使用簇就可以减少连线太多而导致的框图混乱不堪的情况，并能够有效减小子VI的端点的个数。另外，在绘制曲线图的时候，我们也会大量接触到簇。<br>　　在下图中，我们示意了对簇中的元素数据的捆绑以及解绑的概念：]]>
        <![CDATA[ <p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="LabVIEW中的簇的示意图" border="0" alt="LabVIEW中的簇的示意图" src="http://www.vigeek.org/WindowsLiveWriter/LabVIEW_132F5/image_3.png" width="272" height="158">&nbsp;<br>　　如果需要访问簇中的数据，可以对簇进行全部解绑或者是有选择的解绑来分离出要访问的数据。簇的解绑函数有两种，分别可以用来全部解绑或是索引式的只解绑某一特定数据元素。对于解绑簇，可以想象为割开电话电缆，之后就可以看到其间的不同颜色的电线。簇与数组的不同点是，数组的大小是可以动态变化的，而簇的大小是固定的，簇通过解绑引出的线的个数是固定的。<br>　　如果在LabVIEW的框图中两个簇之间进行连接，只有在这两个簇类型一致的情况下才能够连接成功。也就是说这两个簇必须有同样数目的元素，并且对应元素的数据类型与其在簇中的排列次序必须一致。只要两个簇之间的数据类型一致，对于数组适用的复用运算规则对簇也是适用的。<br>　　在使用LabVIEW编程的时候，我们经常可以在调用的子VI上看到簇被用于错误处理。在VI的面板上看到下图所示的Error In.ctl与Error Out.ctl两个簇控件在程序框图中用于在多个VI之间传递程序错误记录。这个错误簇在LabVIEW中十分常用，以至于在控件面板的Modern&gt;&gt;Array, Matrix &amp; Cluster就可以看到LabVIEW已经将其做成了内置控件。<img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="用于错误处理的簇" border="0" alt="用于错误处理的簇" src="http://www.vigeek.org/WindowsLiveWriter/LabVIEW_132F5/image8.png" width="300" height="137"></p> <h5>如何创建簇控件及簇指示器</h5> <p>　　首先，在前面板上面先放置簇外壳（可以在控件工具栏的Modern&gt;&gt;Array, Matrix &amp; Cluster里面找到）。之后，就可以将任何种类的前面板控件放到这个簇的外壳里面。这一点与数组的操作很像，你可以直接从控件工具栏中将控件拖入簇中或者是将前面板的其他空间拖入簇中。不过有一点需要切记，就是簇中的控件只能全部是控件类型或全部是指示器类型，不能有两类的混合。因为簇本身只能作为控件或者是指示器。根据你第一个放入的控件的类型，簇就自动设定为何种类型的控件了。如果簇的内部空间不够，可以在簇的边界使用鼠标进行拖动即可。<br>　　在程序框图中创建簇也基本上就是和上面的两步一样。<br>　　如果想要让簇与其内部的元素大小一致，可以在簇的边界点击鼠标右键，在弹出的菜单中选择Autosizing即可。</p> <h6>簇中元素的次序</h6> <p>　　簇中的元素有一个逻辑的次序，这个次序与这些元素在簇中的位置无关。第一个放置进入簇中的元素的次序为0，第二个放入的次序为1，以此类推。如果删除了一个元素，这个次序就会自动调整。如果你想要让你的簇与其他的簇相连，就得特别注意这两个簇中的元素的次序完全一致。同样，在你解绑簇的时候，你也需要知道第几个元素对应着哪个输出。<br>　　如果要改变簇中元素的次序，可以在簇的边界点击鼠标右键，在弹出的菜单中选择“Reorder Controls in Cluster...”选项。之后，在工具栏就会出现几个新的图标，簇的显示也会改变，在该界面上就可以调整簇中元素的次序了。</p>]]>
    </content>
</entry>

<entry>
    <title>LabVIEW中的复合运算</title>
    <link rel="alternate" type="text/html" href="http://www.vigeek.org/2009/08/compound-arithmetic-in-labview.html" />
    <id>tag:www.vigeek.org,2009://1.26</id>

    <published>2009-08-14T02:21:12Z</published>
    <updated>2009-08-14T03:36:09Z</updated>

    <summary>　　 　　我们在前面的LabVIEW中的复用中，讲到了如何将不同大小的数据相加与...</summary>
    <author>
        <name>GeekZ</name>
        <uri>http://www.vigeek.org</uri>
    </author>
    
        <category term="LabVIEW教程" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="LabVIEW相关" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="软件技术" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="compoundarithmetic" label="Compound Arithmetic" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="labview" label="LabVIEW" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="复合运算" label="复合运算" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.vigeek.org/">
        <![CDATA[　　 <p>　　我们在前面的<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>中的<a href="http://www.vigeek.org/2009/07/labview-polymorphism.html" target="_blank">复用</a>中，讲到了如何将不同大小的数据相加与相乘，使用<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>中的复用可以同时对多个数据进行运算操作。既然谈到了运算操作，我们就必须要提一下<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>中的复合运算。<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>的复合运算(Compound Arithmetic)函数可以免除你在需要对多个数据同时进行加、乘、与、或以及异或运算时需要放置多个运算函数节点的困扰，通过一个复合运算函数就可以解决了。</p> <p>　　两个使用复合运算函数的例子如下图所示：</p>]]>
        <![CDATA[ <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="LabVIEW的复合运算示例" border="0" alt="LabVIEW的复合运算示例" src="http://www.vigeek.org/WindowsLiveWriter/LabVIEW_A0A9/image_3.png" width="291" height="167"> </p> <p>　　复合运算函数（Compound Arithmetic）可以在函数面板的Numeric和Bollean子面板上面找到。与其他的LabVIEW函数类似，你可以通过拖动该函数的上下边界来增加或减少该函数的输入端点的个数。复合运算函数一次只能执行一种运算操作，这个运算操作的类型可以通过使用鼠标点击该函数图标右侧的运算符号，在弹出的菜单中的Change Mode里面选择你想要其执行的运算的种类。<br></p> <p>　　另外，对于逻辑运算的变量，可以在相应的输入或输出端点通过点击右键并在弹出的右键菜单中选择Invert来将对应的逻辑变量求反（也就是从FALSE变为TRUE，或从TRUE变为FALSE）。在执行完该操作之后，对应端点就会出现一个小圆环，表示该端点的逻辑变量已经取反值了。</p>]]>
    </content>
</entry>

<entry>
    <title>LabVIEW中的复用</title>
    <link rel="alternate" type="text/html" href="http://www.vigeek.org/2009/07/labview-polymorphism.html" />
    <id>tag:www.vigeek.org,2009://1.25</id>

    <published>2009-07-31T05:38:29Z</published>
    <updated>2009-07-31T06:15:29Z</updated>

    <summary>　　LabVIEW中所使用的数学函数，例如加减乘除等等，的一个特别易用的特点就是...</summary>
    <author>
        <name>GeekZ</name>
        <uri>http://www.vigeek.org</uri>
    </author>
    
        <category term="LabVIEW教程" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="LabVIEW相关" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="软件技术" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="labview" label="LabVIEW" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="polymorphism" label="Polymorphism" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="复用" label="复用" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.vigeek.org/">
        <![CDATA[<p>　　<a href="http://www.vigeek.org/software/labview/" target="_blank">LabVIEW</a>中所使用的数学函数，例如加减乘除等等，的一个特别易用的特点就是复用功能。所谓复用就是指这些函数的输入参数可以是不同大小不同类型的。例如，对于同一个数学函数“加”，可以用来将一个单值数据与一个数组相加，也可以用来将两个数组相加。下图就演示了“加”函数的几种复用组合：</p>]]>
        <![CDATA[ <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="LabVIEW的复用" border="0" alt="LabVIEW的复用" src="http://www.vigeek.org/WindowsLiveWriter/LabVIEW_C1B8/image_6.png" width="467" height="232">  </p> <p></p> <p>　　在这里的第一个组合中，两个浮点数相加结果为一个浮点数；在第二个组合中，浮点数与数组中的每一个数相加，最后得到一个数组；在第三个组合中，两个数组相加，数组中的每个元素与另外一个数组的对应元素相加，最后得到的是一个数组。在这三个组合中，使用的相加函数为同一个函数，但是在三种情况下它却执行了不同的操作。</p> <p>　　类似的，对于其他的数学运算函数同样可以这样进行使用。可以使用的组合可以是数值与数值、数值与数组、数组与数组、数值与簇、簇与簇、簇与簇数组等等。</p> <p>　　另外需要注意的是，在数组与数组的组合情况下，如果两个数组所包含的元素个数不同，最终得到的结果数组的元素个数结果是较少的元素个数。</p>]]>
    </content>
</entry>

</feed>
