三维立体画呈现实验数据

July 20, 2008 12:10 pm GMT-0700 | In Study | 2 Comments | hide

stereogram

Tags: ,

三星相聚

July 5, 2008 10:39 pm GMT-0700 | In Misc | 6 Comments | hide

饭后无事看星图的时候突然发现今晚是三星相聚,于是出去随手照了一张。今天六月初三,傍晚月牙已经西沉,后跟狮子座轩辕十四、火星、土星连成一直线,似乎是今夏精彩天象之一。

Tags: , ,

Matlab under Ubuntu

June 27, 2008 10:17 pm GMT-0700 | In Tech | 1 Comment | hide

Some tips:

  • Q: Matlab desktop does not show up correctly.
    A: export MATLAB_JAVA=/usr/lib/jvm/java-6-sun/jre/ (requires Sun Java 6 Runtime)
  • Q: Matlab windows disappear in taskbar (Window List applet).
    A: minimizing all windows (show desktop button) seems to bring all windows back into taskbar. Or you can try to export AWT_TOOLKIT=MToolkit
  • Q: Printing in Matlab throws java exception.
    A: Go set all printers > Job Options > Orientation to something other than “Automatic Rotation”.

Links: 1, 2.

Tags: , ,

导航技术

June 10, 2008 7:28 pm GMT-0700 | In Study | 13 Comments | hide

A. GPS

某日 delphij 同学来访,到我楼下给我打电话是这么说的:“我现在 GPS 显示的坐标是北纬 37 度 25 分 33 秒,西经 122 度 9 分 25 秒,我不确定是不是就是这个楼?”我只好立刻在 Google Map 输入经纬度,心里默念这是不是太军事化了……

全球定位系统(GPS),一个耳熟能详的名字,我以前几篇土文曾提到过一些。GPS 卫星网目前有超过 30 颗在工作,在地球上大部分地区大部分时间可以同时看到至少 8 颗卫星,其中 45 度仰角之上至少 4 颗。能看到 4 颗卫星就够定位用了,所以即使在高楼耸立的大城市里,GPS 定位还是十分有效的。现代 GPS 芯片可以同时处理 12 颗 GPS 卫星的信号以提高精度,一般在空旷地带可以达到 10 米以下的水平定位精度。

GPS 的民用卫星信号曾经人为的加入高达 100 米的误差(所谓的 Selective Availability,简称 SA),后来由于种种原因终于在 2000 年 5 月被关掉,将来的卫星也将不再包含 SA 功能,所以相信 SA 已经永远消失了。也正是在 SA 被关闭之后,GPS 的民用价值才大大的被发挥出来了。有人评论美国国防部干过的最有用的两件事情之一就是架构这个 GPS 了。不过假如美国哪天不高兴了把它关掉,那么全世界的 GPS 接收器就都完完了。为此,欧盟、俄罗斯、印度、日本都有卫星定位系统的项目,中国的北斗似乎也开始工作了,不过这些个系统要达到 GPS 的规模都还需要很多年的时间。

GPS 的定位误差来源于很多方面,比较大的有电离层干扰、原子钟和卫星轨道误差等。大部分大的误差项在空间和时间上的变化都是缓慢的,在某个时间段某个大城市里所有的 GPS 接收器都有几乎相同的误差,这就为进一步修正 GPS 误差提供了可能性。

B. DGPS

接上面一段,如果某个大城市里有一个固定不动的 GPS 接收站事先知道自己的精确坐标,那么它接收 GPS 信号之后就可以判断出 GPS 信号的误差;如果它再把这些误差信息广播给这个城市里所有的 GPS 接收器,那么大家就都可以修正自己的坐标得到很精确的定位了。这个就是差分 GPS(Differential GPS,DGPS)的基本思想。

要发挥出 DGPS 的潜能,需要大批地面基站网,这个有不少国家都做了,甚至自己也可以建。如果和基站距离很近,厘米级的定位是可以达到的,Precision Farming 就是农民应用现代 DGPS 技术的一个例子,也有人用 DGPS 来让轮船精确靠岸等等,不过大部分大型 DGPS 系统都要交点钱才能用(解码误差信号),在美国很受欢迎的 WAAS 系统,使用则不需要缴年费。

WAAS 最早开发出来是用来在美国境内精确导航飞机的。WAAS 在地面有几十个基站,各个基站的误差数据汇总后发给两颗同步卫星(间隔 26 度经线,固定在美洲大陆赤道上空),再由这两颗卫星转发给地面的 WAAS-enabled GPS 接收器。这类接收器现在市面上很多,如果在美国用就能(在屏幕上)看到南方大概 45 度仰角的地方两颗固定不动的卫星(编号 48、51),只要接收到其中一颗的信号,那么定位精度就可以到 5 米以下,最好的地方可能能到 1 米左右。

很多带 GPS 的手机现在都开始用 A-GPS(Assisted GPS)技术了,用手机基站的 GPS 信号来辅助定位,不但可以在 GPS 信号很差的情况下定位,同时手机基站也可以作为 DGPS 基站提供差分误差数据以提高定位精度。

C. INS

我们平时坐车都会感受到惯性力,车加速的时候人会往后靠,车拐弯的时候人会往侧面倾斜。想象把人用上下左右前后六个弹簧秤吊在车里,那么就可以把三个方向的惯性力也就是加速度测量出来,加速度累加可以得到速度,速度再累加一次就可以得到位置,这样就可以导航了(准确的说,是把加速度积分两次得到位置,需要预先知道初始速度和初始位置)。这种导航机制叫做 INS,全称 Inertial Navigation System 惯性导航系统,本质上和 GPS 完全不同。

光测量三个方向的加速度是不够的。想象有一架飞机在往北飞,飞机上的加速度仪感受到了一个向东的力,这可能是因为飞机在往西转弯(转动产生的离心力),也可能是因为突然吹来一阵东风但飞机仍在往正北飞行,如果不能区分这两种情况,那么机头朝向就会算偏掉。因此,真正能用的 INS,还需要一个精度很高的定向仪,一般叫做陀螺仪(gyroscope),最简单的做法就是在飞机里放一个高速旋转的陀螺,在比较理想的情况下,陀螺的指向基本不随飞机转动而变化(物理学里这个叫做角动量守恒),这样就可以定向了。

总结起来,加速度仪 + 陀螺仪 + 强大的计算机就可以制作 INS 了。实用的 INS 需要考虑经纬度、地球自转、科里奥利力等,需要做大量的转动坐标系变换,还需要事先知道各地引力的变化。爱因斯坦说,引力和加速度是等效的,所以假如飞机经过一个事先不知道的金矿时引力变大,那么 INS 测到额外的加速度就会误以为飞机开始上升了。INS 还有一个致命的问题是累积误差会越来越大。单是电子设备的噪声,如果不加修正,经过一段时间的两轮累加就会产生巨大的误差。在 GPS 建成之前,人们花了很多功夫在 INS 上面,尽管 INS 早已实用,但是仍旧太复杂,造价太高,大概只有军用、航天和大型客机之类的地方才用得起。当初,如果 INS 和小型计算机没有及时的被发明出来,阿波罗登月那是不可能的(肯尼迪当年就是如此牛逼的预计到了各类技术都快成熟了)。

D. GPS + INS

GPS 和 INS 的关系非常互补,表现在一个的缺点往往是另一个的优点。INS 长期工作出现的累积误差可以被拥有外部参照系的 GPS 及时修正;而正因为 INS 不需要外部参照,在 GPS 失效的情况下(隧道、海底、敌人干扰等),INS 可以暂时接替导航工作直到 GPS 信号恢复;另外 INS 的数据输出很快,即使 GPS 信号良好,INS 也可以辅助提供更精确的定位信息。如果再加上 DGPS,DGPS + INS 的组合基本就是无敌的了,不过飞机起降还有本地雷达无线电导航,据说最帅的自动降落系统因为实在太精确了,不得不人为加入随机误差以免太多飞机在同一个地方触地把跑道砸坏。

Tags: , , , , ,

网络能有多快?

June 10, 2008 7:22 pm GMT-0700 | In Tech | 12 Comments | hide

网络到底能有多快?废话少说,先从一些基本问题说起。

A. 速度单位和测速方法

文件传输速度一般用 MB/s 表示。这个缩写 MB 涉及到 Binary Prefix 的问题,按照最正统的约定,1 MB = 106 = 1 000 000 bytes,而 1 MiB = 220 = 1 048 576 bytes,这两者只相差 5%,很多地方就常常混用。比方 dd 命令汇报的速度是正统的 MB/s,而 wget 和大部分浏览器显示的 MB/s 则实际上是 MiB/s。

网络连接速度则一般用 Mbps 表示,百兆以太网连接速度是 100 Mbps,也即 100 000 000 bits per second。一个 byte 是 8 个 bit,注意一般小写 b 表示 bit,大写 B 表示 byte。比方 USB 2.0 极限速度是 480 Mbps,实际上只不过是 60 MB/s,现代内置硬盘的速度都远高于此。

因此我们可以看到,百兆以太网 100 Mbps 数据传输的极限速度是 100 000 000 / 8 / 220 = 11.9 MiB/s。但是这些数据中大概至少有 2% 是网络包头之类的,其真正的有用数据吞吐率(throughput)极限是 11.6 MiB/s 左右。

有关测速方法,fishy 同学对此似乎研究。现成的可以测试和显示网络传输速度的命令有比如 dd, rsync --progress, wget, scp 等,windows 下面那就用 ftp 软件或者浏览器好了……

B. 影响速度的因素

我们平时架的家用局域网一般都是百兆以太网,通常情况下,传文件至少可以达到 11 MiB/s 的速度,但是也未必,有各种因素会减慢这个速度。

  • 网络传输协议:通常在局域网里面使用的文件传输/共享协议有:afp, ftp, http, sftp, rsync, nfs, smb。大部分协议传大文件都可以不费力气的打满带宽,唯一要提一下的就是这个 smb 协议。smb 也就是平常在 windows 里面共享文件夹用的那个协议,很诡异的一点是这个协议传文件即使是两台 windows 之间也常常打不满带宽,而 Mac 下面性能尤其低,至于为什么会这样,我也不知道(请高人指点)。另外一点是如果传输大量小文件,有很多额外数据要浪费带宽,rsync 协议在这一点上稍强,但是比较通用的提速办法是在源机器把文件打包传输到目标机器再解包。
  • 机器性能:通常来说,主频 500 MHz 以下的机器做路由器,或者主频 1 GHz 以下的机器用有加密/压缩的协议(比如 sftp)传文件,其本身都有可能成为性能瓶颈。即便是 Linksys,早期有些号称百兆以太网的路由器其实根本达不到 100 Mbps 交换数据,被骗的人不在少数。另外硬盘的写入性能如果达不到网络带宽,测试网络性能可以只传文件而不写磁盘,比如 wget 加 -O /dev/null,千兆以太网传文件的速度瓶颈就有可能在硬盘写入速度。
  • 程序设置:通常来说程序的参数设置只要不太离谱都不会影响传文件的速度,但是也有例外。比如,Mac 下面的 dd 命令从 smb mount 的目录拖文件,如果使用默认 bs 大小速度非常之慢。另外,sftp 协议用不同的软件差别很大,但是我忘记我以前的测试结果了,所以等我有空再补上来……
  • 网况:(这个词不知道谁发明的,貌似是从“路况”一次发展出来的)在局域网内一般网络结构比较容易控制,打满带宽并不是难事;但是到了大因特网上网络传输速度基本上就不由你控制了,这个问题就不在这里讨论了。

C. 关于无线网

无线网 Wi-Fi 技术日新月异,以下是三种常见的规格:

  • 802.11b:频段 2.4 GHz,连接速度最高 11 Mbps,吞吐率极限大概在 0.5 MiB/s 左右。
  • 802.11g:频段 2.4 GHz,连接速度最高 54 Mbps,吞吐率能达到 2.4 MiB/s。
  • 802.11n:频段可选 2.4 GHz 或者 5 GHz,连接速度最快似乎可以到 300 Mbps,吞吐率极限据说高于 12 MiB/s。

不要被无线网的连接速度所迷惑,用目前最常见的 802.11g 传文件实际上只能到 2.4 MiB/s 的样子,而且现在市面上的低端 802.11g 无线路由器往往不能稳定保持这个速度。有一种 802.11g+ 技术可以把 802.11g 的性能翻倍,但是通用性不强,所以使用的地方并不多。

事实上,在 802.11b 之前还有过一个 802.11a,频段是 5 GHz,性能和 802.11g 差不多,可是因为频段选的不好,并没有流行起来。

802.11n 是目前最新的 Wi-Fi 技术,协议还没有最终定稿,但是市面上用协议草案制作的 802.11n 路由器已经不少了。也正因为协议没有最终定稿,不同公司生产的无线基站和无线网卡配合工作往往达不到最高性能。从目前的情况看,802.11n 网络连接至少可以到 130 Mbps 的连接速度,传文件可以达到 5 MiB/s 以上,所以即便是最差情况,802.11n 也已经可以超过 802.11g 的性能。(比如,苹果的 Airport Extreme 如果要兼容 802.11g 就必须工作在 2.4 GHz 频段,这样即使和自家苹果电脑的 802.11n 网卡互联,也只能达到 130 Mbps 的速度;而如果换用 5 GHz 频段,连接速度就是 300 Mbps,传文件可以保持 10 MiB/s 以上。)

无线网的性能会受到很多东西的影响,比方,信号穿的墙厚不厚、什么材料的,周围有没有同频率的干扰信号。2.4 GHz 这个频段很热门(主要是因为这个频段在大多数国家不需要许可证就可以发射),无绳电话、卫星信号、蓝牙、甚至微波炉都是这个频段,所以一般的建议是无线基站要尽量远离别的电子设备。

D. 关于 DSL 等

一般家用安装的 DSL 或者什么宽带专线的带宽数字都是虚的,只有问同类用户才能估计实际的性能。米国最近出了一个规定,至少 768 kbps 才能号称 broadband。记得以前一个小旅馆几十间房共用一个 128 kbps 的出口也好意思对外号称他们有 high speed internet access。

E. 结语

我真唐僧。

Tags: , , , , ,

高老头出现了……

June 8, 2008 8:04 pm GMT-0700 | In Misc | 4 Comments | hide

上个星期 Knuth 又出来讲 Computer Musing 了……高老头精神很好,幽默风格不减,现场笑声不断。记两小段:

… that’s when I first heard BDDs (Binary Decision Diagram), and I said, oh boy, I got put that into volume four of The Art of Computer Programming. Well, I started writing this part a year ago in May, so that’s more than twelve months, more than a year ago then you see. And, every other section of The Art of Computer Programming, well, I used to polish off a section in six weeks. Now, er… you know I am getting older and computer science is getting harder (laughter), so it’s taking longer now but I had no idea that I was gonna spend a whole year on it. But the more I looked into it, it was just… er… I couldn’t put it down. There’s so much stuff that needed to be in my book. … When people talk about combinatorial explosion which usually means the size of the problem is getting big; to me, combinatorial explosion means the size of volume four is getting big (laughter). I mean, there’s just so much stuff that has to be said about, even when I am sticking to what i considered the basics …

高老头提到他希望引用 Wikipedia 里面的一段话:In popular usage, the term BDD almost always refers to Reduced Ordered Binary Decision Diagram (ROBDD in the literature, used when the ordering and reduction aspects need to be emphasized).

… when I wanted to get permission to get quote from the Wikipedia, and they have been working all the laws for the other way around for when Wikipedia is quoting from me (laughter). But, anyway they said it was O.K. for me to quote the Wikipedia even though my book is not issued with the GPL.

高老头提到他幽默感时曾说:I don’t take everything too seriously. 对以上两段,也请勿 take too seriously…

Tags:

GPS 拜康神

June 4, 2008 12:24 am GMT-0700 | In Tech | 18 Comments | hide

kxnorz tracklog最近似乎流行用 GPS 接收器轨迹作画,号称是把地球当画布,GPS 当画笔,气势何等磅礴。不过,行为艺术其本质就是闲得蛋疼,那个号称画了世界上最大的简笔画的家伙最后自曝是假的。另两个相关的站点:The world is my canvas复活节大兔子

这个想法还是蛮有趣的。不过我没有那么吃饱了撑的,我直接爬到实验室楼顶去试画了一张跪拜康神图,耗时不到六分钟,然后把 GPS tracklog 导出即可。下面有绘画过程,GPS tracklog 可下载,童叟无欺,如假包换。

GPS tracklog 每秒一个数据点,下面这张 GIF 我设置的是 25 fps,也就是说比我实际速度快 25 倍,不到 14 秒就应该完成绘画,但是似乎有些弱的浏览器不能这么快的放 GIF……据观察,Firefox 表现良好。

Tags: , ,

有关计划、危机意识、以及其它

June 2, 2008 7:29 pm GMT-0700 | In Life | 2 Comments | hide

针对上次那篇 培养自制力,Eric Yu 同学来信说:

……

我基本同意你文中的最核心的观点,即制定具体的计划,越具体越好。事实上我以前也是这么想的,不过我发现要做好计划是一件很难的事情,按照这个计划执行更难。

比如我计划今天早上8:30 – 9:30阅读Google Reader上的文章,然后完成功能A的代码编写,包括单元测试。但是即使是这么简单的两个任务,也很具体了,还是不能很好的执行。就比如我在读文章的时候看到你这篇文章,很有同感,忍不住要思考一下,然后就超过预期的时间了(如果你的文章有一些link,我又去看这些link,然后递归直到吃午饭为止都有可能),然后就会影响后面的计划,然后就恶性循环。我也尽力了我想,惩罚自己其实很难:-)。

所以我之前的结论是对于我,计划没有变化快,索性就不做计划了。

总的来说就是计划会出现很多意料之外的分支流程,这些流程有的还很重要,导致计划不能按计划执行。

……

嗯,说得很好。我一直以来觉得真正的大牛不但会制定计划,而且会考虑到各类不确定因素和可能的问题,制定一个合理的计划。而像我等凡人,虽然也知道生活和学习要有计划,并且也或多或少有一些计划,但是却没有一个合理的计划,也就差不多等于没有计划。

另一个我一直觉得牛人和凡人的区别是,牛人并不是不犯错误,而是知道自己或者别人可能会在什么地方犯错误并提前加以防范。牛人在代码里放 assert,并不是因为自己的代码有问题,而是为了将来代码被人拿去乱改的时候防止一些错误。就像汽车保险杠,平时我们并不拿它来撞墙。事实上,工业界 fail-safe 的设计随处可见,可是具体到个人的工作习惯,却不见得人人都有这个思维方式。

========== 华丽的分隔线 ==========

有关牛人善于防范错误,有人问过我一个有些关联的问题,你平时生活和工作是否有危机意识?

你熟悉住宅和公司的防火通道吗?

你周围是否有灭火器,是否熟悉它们在哪里,是否会使用?

你到了陌生的地方或者上了公交车和飞机,是否会首先观察一下逃生路径?

如果你居住在地震带,是否随时准备好了应对地震?

你知道离家最近的医院在哪里吗?

你是否熟悉 CPR(心肺复苏/人工呼吸)?

你是否随身携带证件以便发生意外的时候及时确认身份?

危机无处不在,麻痹大意就是对生命的蔑视。没有危机意识的人,在灾难中是最容易失去逃生机会的。我们不太去思考这些危机问题,有很多原因,比如,何必乌鸦嘴去说灾难?而且,一百个人里面,恐怕九十九个人一辈子也碰不到需要紧急处理的危机,即使碰到了,你也往往会发现你所准备的并不足以应对危机。好吧,说教固然无用,只能看各位自己的生活哲学了。

========== 华丽的分隔线 ==========

另一个不太相关的问题,有人说过,科学家的思维方式其实和侦探很像,侦破客观世界奥秘,和侦探破案的过程大同小异。这一点在诺贝尔奖得主 Eric Cornell 截肢后的见面会上又有体现:

Question: In your work you solve physics problems. What was it like for you to be the subject really now of this mysterious disease that for many is still baffling?

Eric: It’s interesting to be a professional scientist and to be the subject of treatment and study. You look at the physicians and nurses who are trying to understand what’s wrong with you and make you better and you look at them as colleagues, you know, and you try to avoid second guessing them because they know much more about medicine than you do. But you also sort of see the wheels turning in their heads as they’re trying to rule this out and rule that out, let’s do this test. It’s a lot like what I do in the lab, it just matters more, or at least it did to me at the time.

Question: Did you find yourself getting involved at all in the treatment?

Eric: Yes. They’d say, “Well, we think this is probably an allergy and not an infection.” I had some little rash, which was a very serious thing because a rash could have been a symptom of the disease coming back. So they had to understand what the rash was. They were discussing in a scientific way among themselves and I wanted to chime in, “Well, have you ruled this out, ruled this out.” It would have been fun in a way, in fact it was fun in a way, since I wasn’t able to do my own research during that time.

物理学家,特别是实验物理学家,常常是用排他法在工作。拿精密测量来说,实验工作者常常耗费大量的时间来排查各类可能的噪声源,对于他们来说,知道某个噪声源的影响很小,其意义并不亚于发现真正影响他们测量精度的大噪声源。运营网站的人,总想找到服务器的性能瓶颈在哪里,一把揪住问题症结固然最好,但是如果知道某个模块的性能没有问题,这也同样会帮助解决问题。

Tags: ,

« 上一页下一页 »

This weblog is licensed under a Creative Commons License.
Powered by WordPress. Theme based on Pool by Borja Fernandez.