Qizhen's profileLabVIEWPhotosBlogListsMore ![]() | Help |
LabVIEWLabVIEW工程师的生活
文章安内容分类
O Troupe of little vagrants of the world, leave your footprints in my words.
|
压缩感知最近研究了一下压缩感知理论。压缩感知大概是近几年里,测试测量领域唯一称得上革命性的理论了。它在理论上证明了信号采集可以突破奈奎斯特-香农采样定理(Nyquist–Shannon sampling theorem)的限制:即,以低于原始信号频率2倍的采样率采集并还原原始信号。 压缩感知的理论是这样的: 一个信号可以拆分成多个不相关的小信号的叠加(小信号称作向量),在不同拆分方法之间转换叫做域变换。如果某一个域上,只有一部分向量的值比较大,其它向量的值接近于0,则这个信号时可压缩的(近似0值的向量可以被去除,却不影响信号整体性质)。 所有的信号都是可压缩的,只要找到合适的转换域。 如果对信号先压缩,再做AD转换,就可以用低速率的AD转换器来采集高带宽的信号了。因为信号压缩后数据量减少,相当于带宽降低了。 在这个理论框架下,实现的采集与传统方法相比,有两点主要不同: 一是,数据采集硬件不同。因为采样函数变了。目前常见的硬件设备,采集一维信号的数据采集卡,相当于使用等距脉冲函数对原始信号做调制;二维图像的采集函数是像素位置函数。而压缩感知理论框架下需要使用高斯随即矩阵或等效的函数作为采样函数,这导致采集硬件必须完全重新设计。 二是,原始信号重建方法不同。传统数据采集可以直接从采集到的样本还原原始信号(受奈奎斯特定理的限制)。但在压缩感知理论下,采集到的样本数,少于可以直接重建原始信号所需的数量,不能直接重建。只能首先重建原始信号在某一稀疏域上的信号(通过最优化算法求得该域的最稀疏解)。再通过域转换,重建原始信号。 压缩感知最大的优势在于可以使用低速率的数据采集设备,来采集时域上高频的信号。这听起来很诱人,不过由于这需要重新设计所有的采集硬件,这一理论到实用也许还有相当长一段距离。 Startup VI 可以包含多个VI今天发现,在发布产品,生成.exe文件时,Build Specification->Source Files->Startup VIs 栏目中可以包含多个VI。 这样生成的EXE,在一启动时,就会同时打开多个VI的面板。 为列表框控件添加自定义的图标LabVIEW 中 Listbox, Tree 等控件,每个条目之前都可以显示出一个图标。选中控件的右键菜单 Visible Items->Symbols 就可以把这些图标显示出来。 控件中每个条目的图标可以直接通过控件的 Item Symbol 右键菜单来选择,也可通过才程序中设置控件的 Item Symbols属性来设置。控件自带的图标都比较简陋,并且总共只有40几个。(最后一个图标其实不是“图标”,它是分割线,有时可能是非常有用的) 但是LabVIEW提供了对这些图标的扩展功能。通过编程,可以为Listbox控件添加自定义的图标。设置图标时使用的“Custom Item Symbol –> Set To Custom Symbol” 方法,这个方法有两个输入,Index 表示图标的序号。应给给新图标选一个比较大的序号,以免覆盖掉控件自带的图标。第二个参数是图标的图片。 我在这个例子中,自己做了一张图片 Icon.png,它是一张彩色的LabVIEW标志。打开这个图片文件,得到它的图像数据,然后设置给Listbox控件。效果图如下: 转贴一个笑话
Live Space 无法看到最新的留言了? 最近这个Space改版了一下。以前可以直接看到所有文章下最新的留言,这样我也可以比较及时的回答一些问题。现在号线看不到了。有人遇到跟我同样的问题吗? Google支持HTTPS加密搜索 对于中国用户来说,HTTPS的加密搜索一劳永逸地解决了中国用户对于Google搜索的稳定性问题。在Google中搜索某些敏感词语,会出现“连接被重置”,这导致一些很常用的词语,例如“学习”、“胡萝卜”、“温度计”等无法在Google搜索,而现在,使用HTTPS的Google,我们可以搜索你想搜索的任何词语,
再也不会出现“连接被重置”了。 为了你的用户隐私、安全和稳定性,现在就把你的Google搜索地址更换为 https://www.google.com 吧。 对于中国 用户来说,如果你访问 https://www.google.com 自动跳转Google.com.hk,请点一下页面底部的Google.com in English,然后再访问https的Google即可使用。 参考来源:http://www.williamlong.info/archives/2131.html如何在程序中同时弹出多个子VI的界面,各自运行互不影响回答网友一个问题:“我设计了一个labview界面子VI,我想在主VI中多次调用该界面VI(同时执行,单独分配内存),并显示出多窗口,该如何设置?我尝试将子VI属性设置成可重入,仍无法解决。” 这个问题其实挺常见的。若需要子VI打开多份实例,子VI必须是可重入的。所以第一步要把子VI设置为可重入。但仅仅这样还不够,主程序运行到子VI处,把子VI打开后,会一直等在这里,知道子VI运行结束,才继续执行主VI后续的代码。主VI既然已经停在这里了,自然不会再继续去打开其它子VI。解决的办法是在调用子VI的地方,改为动态调用,并且不等待子VI运行结束。这样一来,主程序运行到这里,将子VI调起后,立即执行后续代码,又可以去调用其它的子VI了。 需要注意的是,用于子VI是可重入的,需要给“Open VI Reference”函数设置一个值为“8”的Options参数。主VI程序代码如下: 在Google Wave上讨论LabVIEW问题如果还不了解 Google Wave,点击后面的链接查看 Google Wave 的各种介绍。需要 Wave 的邀请,可以在这里留下 Email。 最近公司同事都积极的开始用上它了。在我看来,Google Wave 取代或整合 Gmail 是迟早的事,已经在用 Gmail 的兄弟姐妹,赶快来熟悉一下新系统吧。但 Wave 会不会整体取代传统 Email 就很难说了。商业公司对待更换 Email 系统这样的决定会非常的保守。毕竟,它的影响面实在太广了,公司的营运时刻也离不开 Email。而且,很可能会有一大堆的数据库、服务应用等于 Email 系统绑定在一起。移植的工作量极其巨大。就说我们公司吧,使用的 Loutus Notes 系统。Notes 做的真的很烂,用过的人没有不骂的。可是抱怨了十几年,我们公司也还是在坚持用着。 但不论怎样,Wave 的出现给了大家提供了一条新的交流途径。我的 Wave 帐号和 Eamil 是同一个:ruanqizhen@gmail.com,需要加我的话题尽管加:)。 如果有兴趣在 Wave 上讨论 LabVIEW 问题,可以登录 Wave 后加入这个帖子“试验在Wave上讨论LabVIEW问题”,获得所有LabVIEW讨论者的名单。打算讨论《我和LabVIEW》这本书的问题,可以加入“《我和LabVIEW》讨论区。 LabVIEW 2009 新功能 - 图标编辑器与文本语言相比,图形化的 LabVIEW VI 有个非常好的特点,就是使用图标来表示 VI 的功能。这样,在程序中,看一眼子VI的图标,就大致知道它的作用了。这比看枯燥的函数名方便迅速多了。 VI 的图标虽然会给使用子 VI 的人带来方便,但却需要子 VI 的编写者花费一定的时间与心思来设计绘制它。旧版本 LabVIEW 的图标编辑器非常简单,功能有限。因此,很多开发者宁愿在子 VI 的图标上面写几个字就算了。 打开新的图标编辑器,可以看到,它拥有多个选项卡页面。每个页面助开发者从不同的角度对图标进行加工。 第一个页面是模板页。开发者制作图标时,往往不是从一个空白图标开始。功能相关的一批子VI,总会有共同的风格。比如说共同的边框、底色、标签等。有的公司也会为自己开发的 VI 制定规范,统一图标风格。这些共同的部分,可以作为模板,保存起来。编辑新图标时,先从模板中选取一个模板,然后再其基础上修改,可以简化不少工作量。
选取图形大概是新图标编辑器中最有用的部分了。VI开发者最头疼的就是设计绘制好看的图片,如果能从现成的图形库里选几个出来,组成一个图标,那就方便多了。“图形”选项页里选项页中提供了大量候选的小图片元素,直接把它们拖到右侧图标上就可以使用了。 新图标编辑器中制作的图标是有涂层的。图标中的模板背景、文字、图形元素等,都被保存在独立的图层中。有了图层,我们就可以只针对图标中某一图层进行修改,而不影响其它图层上的内容。比如将这一图层上的图形挪动一下位置、设置为半透明等。 新图标编辑器还有一个额外的优点:它是开源的G代码程序。如果大家想参考一下这个复杂程序是如何编写的,它的主VI是“<labview>\resource\plugins\lv_icons.vi”,打开来就可以看到源代码了。 尽管新的图标编辑器在功能上改进不少,但我个人还是更喜欢旧的图标编辑器。新图标编辑器与旧的相比,也并非完全是优点。比如,新图标编辑器启动速度慢、无法书写清晰的小字号文字、运行不稳定等。幸好旧的图标编辑器没有从LabVIEW中移除,我们仍然还可以使用它。给“<labview>\resource\plugins\lv_icons.vi”改个名字,再试图编辑图标时,LabVIEW找不到新的编辑器,就会自动打开旧的那个了。 如何激活LabVIEW Scripting高级功能LabVIEW Scripting的高级功能(比如创建新的VI,修改VI程序框图上的程序等)是需要特殊授权的。从2009年8月开始,NI公司将这一授权公开给了所有LabVIEW用户。也就是任何一个LabVIEW用户都可以免费申请获得LabVIEW Scripting的高级功能的使用授权。 取得授权并激活这一功能的方法是: 首先打开 LabVIEW Scripting 的网页,网址(http://decibel.ni.com/content/docs/DOC-4973),下载 LabVIEW Scripting 的安装包。安装包在页面的最下方。 比如,我的电脑是Windows XP操作系统,LabVIEW版本8.6,那就下载 LabVIEW Scripting API - WinXP.zip 这个安装包。 这个安装包会为LabVIEW添加一个 LabVIEW Scripting 许可证,许可证还要激活后才能使用。打开NI许可证管理器,找到LabVIEW xx版本下“工具包->Scripting Development”, 选择激活。输入注册码“L12S86758”(这是NI提供给所有用户,专用于激活LabVIEW Scripting 高级功能的注册码)就可以将 LabVIEW Scripting 的高级功能激活了。 激活 LabVIEW Scripting 后,再打开LabVIEW,可以看到在函数选板“Programming->Application Control”下,多出了三个函数,这三个函数分别用于创建一个新的VI,得到某VI上某个对象的引用,和创建一个新的对象。这里说的对象包括前面板的控件,程序框图上的函数、结构、子VI、数据线,等。 并且,在使用Property Node和Invoke Node的时候会发现,它们多出了很多新的属性和方法共用户使用。使用这些 LabVIEW Scripting 的高级功能,几乎可以完成所有手工编辑VI可以完成的操作。 《我和LabVIEW》勘误这里列出的是在本书出版之后,又发现的一些错漏。对于不清晰的插图,可以点击这里查看清晰版插图。
女儿的名字虽然我的下一代影都还没有呢,但我未雨绸缪,已经开始为他们想名字了。由于干我这行的倾向于生女儿,目前只考虑了女儿的名字。 老婆是山东人,所以老早给女儿想了个名字叫“阮思齐”。我并不是很喜欢这个名字,理想的名字应当是:字不算太生僻,但组合起来却没有重名的。“思齐”这个名字网上一搜一大把,创意不够。 上个星期,回南京参加同学聚会。老同学得知我十年没跳槽,还在NI工作,跟我打趣说:“你打算在NI呆一辈子啦,将来生个孩子叫‘阮恩爱’得了。” 不过这事还没完,回上海的路上,老婆说如果把你们公司名称里的“恩”“仪”两个字取出来做名字还是不错的。回到家Google上一搜还真没有叫“阮恩仪”的。我仔细想了想,这个名字还不错:常用字、无重名、有纪念意义,还带着台湾味,比韩版的好听多了。 LabVIEW 2009 新功能 - 传引用以前版本的LabVIEW虽然也有多种方法可以让数据以引用的方式在程序间传递,但是用起来都有些麻烦。LabVIEW有了构建数据传引用的节点,大大简化了传引用的程序代码。 新添的有关传引用的两个节点在函数选板“Programing->Application Control->Memory Control”中,分别是“New Data Value Reference”和“Delete Data Value Reference”。“New Data Value Reference”用于创建一个数据的引用,“Delete Data Value Reference”可以从引用中取回原来的数据。 引用最主要应用于多线程程序中。如果两个线程同时对同一份数据进行修改,则必须使用传引用的机制。否则,使用值传递的方式,数据在数据线分叉的地方,就会编程独立的两份,之后在两个线程内分别修改的是两份完全独立的数据,没办法对同一份数据进行修改的。 比如下图这个程序,程序输入了一个数组,然后需要在两个并行的子VI中同时对这个数组中的数据进行修改。每个子VI可能修改了数组不同的元素,程序运行结束产生的数组应当把两个子VI中的修改都包含进来。因此,程序一开始需要数组数据生成一个引用,然后把引用分别传递到两个子VI中去。两个子VI都运行结束后,在从引用中取回数据。 LabVIEW中已有的函数还都是为值传递设计的,所以使用值传递少不了把数据取出、放回的过程。这以过程中,可能又会产生数据拷贝,效率会比较差。好在我们可以使用“In Place Element Structure”结构来处理从引用中取出、放回数据的过程。配合了“In Place Element Structure”结构使用后,LabVIEW会尽量使用数组原地址,而不是把从引用中取出的数据复制一份,这样就做到了传引用与效率的兼顾。比如下面两图中的程序,功能是完全相同的,但LabVIEW会对下面一幅图中的程序进行优化,提高效率。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|