论信号处理研究中可视化问题的解决

引子

很多人在做研究时,采用了MATLAB作为主要工具,主要原因,大致是基础模块多,计算结果易于用多种可视化方式展现,如波形曲线,动画,视频,图像,声音播放等等,都能在MATLAB中轻易实现。这对于算法的验证很有帮助。然而,MATLAB距离工程实现比较遥远,真正工程实现的算法往往都是在C/C++/JAVA语言级别上完成的。应当承认,MATLAB在数据的输入输出接口处理上做了大量的工作,研究者可以不在乎音视频文件的各种格式,轻松读写,以矩阵作为数据处理对象,直入算法核心。加之以很多经典的算法包,更使之如虎添翼。成为MATLAB最大的买点。

离开MATLAB,我们真的就寸步难行吗?特别是在可视化工作和数据接口工作上,我们真的没有出路吗?

其实,在国外,MATLAB并非唯一,或最广泛的选择,因为:(1)太贵(因为没有盗版);(2)太大(不必要的东西太多);(3)离应用太远(直接在服务器上运行不方便或效率太低)。

在开源世界,有许多方法和软件可以取代MATLAB。如统计学专用的R语言,与MATLAB兼容的Octave,接近MATLAB简单性又接近C语言效率的Julia,还有如日中天的Python,互联网之霸JAVA以及Javascript等等都可用。其中,R、Python、Octave的可视化也做得很好,计算包也很多,而且可直接工程应用。

纯C语言下的可视化问题

让最合适的工具去做最合适的事。C语言(即便是VC++在MFC的帮助下)是不擅长画图的,所以,C语言就应专注算法,其他的,就让专用的工具软件去做好了。

在信号处理领域,有许多开源软件工具可用:如

  • 数据输入输出接口工具
  • 可视化工具
    • Gnuplot (www.gnuplot.info ) 曲线、图像、动画gif图
    • GraphViz (www.graphviz.org )流程图
    • echarts ( echarts.baidu.com ) 百度出品的基于js的开源网页图表展示
    • 一些看图工具(很多,任意一款都可。用于查看图片、动画等)

有了数据输入输出接口工具,我们就可以以文本(或简单二进制流,如转化为音频wav格式,图像bmp格式)的方式,用C语言读入要处理的各种格式的数据,并将数据处理后以文本输出,转换为要求的格式。

有了可视化工具,我们就可以将数据以曲线、图形、动画等方式展示出来,还可以直接将可视化结果保存为文件(如位图png、bmp、jpg格式,动画gif格式,矢量图svg格式等等),供浏览软件查看,也可供服务器端WEB调用。

利用许多开源软件工具集成实现好用的软件开发环境,这也是如Octave、R、python、Julia等许多更高级开源软件平台通行的做法。

所以,用C语言开发信号处理算法,数据的输入输出及可视化都可用其他开源工具完成,我们也能将编程的主要精力集中在算法上。C语言能调用经典的数学算法包,不足的也可用R或Python等补充(工程上,只要是命令行程序,就能通过操作系统指令来调用,这也正是在操作系统上实现多语言协作的精意)。

最后的一个问题是,当得到了图片、动画、声音、视频、甚至只是数据,我们自己能开发一个最简单软件去展示计算结果吗?

最简模式的功能要求

能将文本、图片、动画、声音、视频、甚至只是数据用一个可视化方式的软件展现,还要自己开发这个软件,似乎工作量和难度都不小。比如,我们需要这样功能的可视化软件:

  • 能显示各种格式的位图图片 (是一个看图软件)
  • 能显示矢量图(svg,wmf,emf)
  • 能显示动画(gif)或flash的swf
  • 能看各种格式的视频 (是一个视频播放器)
  • 能播放音频文件 (是一个音频播放器)
  • 能阅读pdf格式文档 (是一个Acrobat Reader)

还要求:

  • 这个软件要是有源码的(自己编写的)
  • 无商业版权冲突的,可以带上自己的LOGO。
  • 在软件体积上不能太大,最好在1M以内。
  • 这个软件是以命令行模式工作的。
  • 而且编写的代码量在100行以内。

解决法

可能吗?

可能。肯定能。因为这样的软件,一定是要站在巨人的肩膀上的。

依据我上一篇文章所论,可视化属于人机界面,应尽可能交给浏览器去做啊!

我的解决方案是:开发一个最简单的窗口程序,其中直接嵌入IE浏览器控件。这样,IE浏览器能做的事,我就能做了。

显然,这大概算不上编程吧。

实现时,用VC行,用C#也行。但C#实现后的软件是需要.net的,所以,还就是用VC最干净。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值