同一个magnitude,三种含义:星等、震级与信号幅度全解析
前阵子整理一批天文观测数据我照着星表核对测光结果发现有几颗星的星等数值和参考星表差了快0.2等。一起处理的同事只看了一眼就说了句这magnitude的问题你查一下零点。我第一时间想到的是星等差0.2等而他说的magnitude其实是信号幅度。同一句话里我们俩居然在两个领域各说各话。这个撞词经历让我重新把magnitude从头到尾捋了一遍它在天文学里叫星等在地震学里叫震级在信号处理和数学里叫幅度或模长。三个词中文翻译完全不同英文却是同一个词背后的标度方式、数学定义、使用习惯更是天差地别。这篇文章就把我在实际场景里遇到最多的三种magnitude一次讲透公式是怎么来的、真实项目里会在哪里翻车以及我处理那些“带mag的数据表格”时总结出来的硬规矩。不管你是玩天文摄影、做地震数据处理还是天天跟FFT打交道的工程师读完后应该都能避开几个真正的坑。1. 先给这个词划清边界三个领域里的三种价值观1.1 天文学星等数字越小越亮负值更亮天文学里的magnitude中文叫星等是一套用来表示天体亮度的标尺。很多人第一次接触会觉得它完全反直觉织女星约0等天狼星约-1.5等满月约-12.7等太阳约-26.7等。对你没看错太阳的星等是负二十六点七数字越小越亮负得越厉害越亮。这套反向标尺不是现代人故意刁难而是从古希腊一路继承下来又经过数学改造得到的。公元前2世纪喜帕恰斯编星表时把肉眼能见的恒星粗略分成6等最亮的那批叫1等星勉强能看见的叫6等星。19世纪天文学家发现1等星的亮度大约比6等星亮100倍。到了1856年普森把这个关系数学化既然相差5等就是100倍亮度差那么每差1等亮度比就是100的1/5次方约等于2.512倍。于是有了著名的普森公式m1 - m2 -2.5 × log10(F1 / F2)这里的m是星等F是测量到的流量单位时间内通过单位面积的能量。公式里的负号和2.5这两个数字就是让“1等比6等亮100倍”这个古老约定成立的关键。1.2 地震震级每差一级能量不是差一倍而是约31.6倍地震学里的magnitude叫震级和星等一样走的是对数标度但物理对象完全不同。一次地震释放的能量、某台地震仪记录到的振幅跨度从微米级到米级甚至更高如果线性画在坐标轴上小地震会完全被压成一条看不见的直线。于是对数登场。里氏震级ML是1935年里克特和古登堡提出的核心思路非常朴素测量地震仪记录的某个波最大振幅然后取对数。但振幅和能量不是线性关系震级每增加1级对应的能量大约变为原来的10的1.5次方倍也就是31.6倍。这意味着一次6.0级地震释放的能量大约是5.0级地震的31.6倍而不是“只多了20%”。稍后我会专门展开推导和矩震级的区别。1.3 信号处理里的幅度一个向量模长问题信号处理中的magnitude中文叫幅度或模长严格说它没有前两种那么深的物理约定就是一个纯数学量。一个复数z a bi它的magnitude定义为|z| sqrt(a² b²)在几何上就是复平面上从原点到这个点的距离。FFT输出的每一个频率点都是一个复数人们常说的频谱幅度就是对这个复数取模长。一个随时会踩的坑是幅度和功率、幅度和dB之间有人为定义的比例关系很多人在“mapping”时拿错系数。第5章我会详细讲。为了后续讨论方便先放一张总表领域中文常见译名数学本质最容易犯的直觉错误天文星等-2.5 × log10(流量)以为数字越大越亮地震震级log10(振幅或能量换算量)以为差1级能量差10倍信号处理幅度/模长sqrt(a² b²)直接拿幅度当功率或错用dB换算2. 天文学星等系统从“肉眼排序”到“对数标尺”2.1 普森公式的来龙去脉为什么偏偏是2.5要理解星等关键是理解2.512这个数。它来自“五星等等于百倍亮度”这个经验约定。当初赫歇尔通过粗略测量发现1等星亮度约为6等星的100倍这个100被普森固定为数学定义。于是相邻星等的亮度比为100^(1/5)约2.512。而-2.5这个系数本质上是-1除以log10(2.512)后取近似。为什么要负号为了让古代“1等星比6等星亮”变成现代公式里的“m越小流量越大”只能加负号。实际计算中你不会用m1 - m2 -2.5log10(F1/F2)这种形式每次都做比值而会用带零点的形式m -2.5 × log10(F) C这里的C叫零点常数它的作用是把流量F映射到某个标准星等系统。最经典的Vega系统定义织女星在所有波段的星等都是0等附近零点就是“织女星的星等为0”这个基准。后来为了更精确人们又发展出AB星等系统定义任意波段下恒定的频谱通量密度3631 Jy对应0等。零点从“一颗具体恒星”变成了“一个物理常数”稳定性更好。2.2 视星等和绝对星等差的只是一个距离平时说的“天狼星-1.46等”是视星等表示它在地球上看起来有多亮。两个星星的固有光度可能相差巨大但因为距离不同视星等可能接近。为了比较天体本身的光度天文学家定义了绝对星等M把天体放到距离10秒差距约32.6光年处时它呈现的视星等。由距离造成的星等变化关系叫距离模数公式是m - M 5 × log10(d) - 5其中d的单位是秒差距。这个公式的推导其实不难亮度与距离平方成反比。目标天体现在距离10秒差距那么比值F_now / F_10pc (10/d)²代入普森公式就是m - M -2.5 × log10(F_now/F_10pc) -2.5 × log10(100/d²) 5 × log10(d) - 5。实际做恒星物理时只要测到视星等、知道距离立刻能算出绝对星等从而估算恒星的真实光度。2.3 常见天体的星等建立参照系为了训练星等直觉我把常碰到的天体数值列在下面。对照这个表基本能建立画面感。天体视星等约值感受太阳-26.7直视必瞎眼超过任何探测器动态范围满月-12.7月光下能看到地面物体轮廓金星最亮时-4.6白天也能肉眼看到天狼星-1.46全天最亮恒星织女星0.03曾是Vega星等系统零点基准牛郎星0.76夏季大三角之一北极星1.98目视比较暗找它靠位置不靠亮度肉眼极限约6.0城市光污染下通常只能看到2等左右哈勃深场极限约30单颗恒星已经很难测光靠成图一个特别实用的心算技巧5个星等差100倍亮度2.5个星等差约10倍亮度0.75个星等差约2倍。做观测计划时用这些近似就能快速判断“目标比参考星暗了多少”。3. 我踩过的星等换算坑三段血泪史3.1 第一个坑仪器星等不是标定星等刚开始做CCD测光时我以为软件给出的Instrumental Magnitude就是最终星等。其实那只是原始响应没有经过零点标定。CCD相机采集到的是ADU计数而仪器星等的定义是minst -2.5 × log10(ADU)这里既没有曝光时间也没有大气消光改正更没有零点常数。真正常用的标定公式长这样m_std minst - k × 大气质量 ZPZP就是零点定标常数需要通过观测标准星来求。有一回我图省事直接用软件默认零点处理一批观测结果整体偏了约0.15等而且不同天区之间还不一致。背后的原因很简单同一天晚上大气透明度在缓慢变化空气分子和气溶胶对不同天顶距的消光也不同只用固定零点当然会出错。从那以后我养成了一个习惯每一批数据里至少选3到5颗可靠的参考星做零点拟合实测下来整体精度能控制在0.03等以内。3.2 第二个坑Vega、AB、ST三个系统差点把我绕晕大多数天文目录返回的mag背后用的是不同测光系统。Vega系统的零点基于Vega流量AB系统的零点基于恒定通量密度3631 JyST系统则以erg/s/cm²/Angstrom为单位。在光学V波段附近Vega和AB的零点只差约0.02等很多人在可见光波段直接混用影响不大。但在紫外、近红外甚至更红的位置两个系统的差值可能超过1等。我遇到过一次做近红外色指数从两个来源各取一个mag一个标着Vega一个标着AB直接相减想得到颜色结果色指数出现负的3.8等怎么看怎么荒谬。排查之后发现就是参考系统不一致。正确做法是先查文档确认每个字段的定义如果是AB系统而你的其他数据是Vega系统按过滤器波长查找转换关系不能拍脑袋用常数。现在很多接口都会在元数据里标出photSystem这行字值得认真读。3.3 第三个坑对数空间直接求平均星等是对数对数空间里不满足普通叠加的直觉。举个最简单的例子两颗星等都是10等的恒星如果两颗星离得足够近望远镜分辨不出来合在一起的总流量是单颗的两倍。总星等不是10等而是m_total -2.5 × log10(2 × F10) 10 - 2.5 × log10(2) ≈ 9.247等看上去只亮了约0.75等因为亮度翻倍在对数标尺里本来就只有这么多。做多历元叠合、SED拟合时如果先对星等做平均再换算流量结果会带系统性偏差。正确的顺序永远是把所有星等还原成流量在流量空间做叠加或平均最后再转回星等。4. 地震震级的光谱从里氏震级到矩震级4.1 里氏震级怎么来的振幅的对数里氏震级的原始定义是记录在特定型号地震仪上的最大振幅A单位微米与一个距离校正函数A0的比值取对数ML log10(A / A0)这里的A0不是常数而是随震中距变化的经验校正目的是把不同台站记录到的振幅统一到“相当于距震中100公里处”的水平。为什么要取对数因为一次大地震的地面运动振幅可能是小地震的几百万倍线性标尺根本没法用。里氏震级的问题在于“饱和”。当地震很大时实际位移增幅已经超出里氏定义的适用范围震级会停在一个数值附近不再增长不能反映真实能量差异。这就是后来需要新标度的原因。4.2 新闻里的震级为什么大多是矩震级现代地震学研究里最受认可的是矩震级Mw它不依赖某个具体型号的仪器和波的振幅而是从地震矩出发。地震矩Mo的定义是Mo μ × A × D其中μ是断层岩石的剪切模量A是破裂面积D是平均位错量。地震矩直接描述了整个破裂过程的能量规模不容易饱和。矩震级通过金森博雄提出的关系式计算Mw (2/3) × log10(Mo) - 6.07这里的Mo以牛顿·米为单位。注意系数2/3正是因为这个系数震级每增加1级地震矩变成原来的10的1.5次方倍约31.6倍。在能量估算中也经常近似采用震级每增加1级释放能量增加约31.6倍这个结论。所以一次8.0级地震的能量大概是7.0级地震的31.6倍是6.0级地震的足足1000倍。这比大多数人想象的差距大得多。4.3 读地震目录时的实战建议我去处理历史地震数据时常遇到各种震级符号ML、mb、Ms、Mw。它们测的波不同适用范围也不同。面波震级Ms用的是周期约20秒的面波振幅体波震级mb用的是短周期P波里氏震级ML主要针对加州地方震。对中强地震mb普遍偏小这是物理原因造成的不是数据错了。还有一个容易被忽略的点不同机构给出的同一个地震的Mw参考震级差0.2到0.3等非常正常。这主要是反演模型、台站分布和震源机制假设的差别。做统计时不要直接把不同机构、不同类型标度的数字混进同一个样本至少要先做类型筛选和一致性检查。对时间序列对比而言尽量统一采用Mw因为它在大震段不饱和物理意义也最清晰。5. 信号处理里的magnitude从FFT幅度谱到RMS5.1 FFT的mag到底代表啥只要做过信号处理一定会遇到fft()输出复数然后取模得到一个频率点的magnitude。这个数值本身看似普通但极易出错。拿一个幅值为A的正弦波来做FFT如果采样点数为N并且没有加窗单频信号会集中在一个或少数几个bin里单边频谱中该bin的峰值约为A × N / 2。如果直接看原始magnitude会发现它大得离谱。很多人第一次做FFT都会疑惑为什么我的正弦波幅值只有1FFT后某个bin却冒出几千几万原因就是这个N/2的缩放关系。实际处理时要么直接使用库的归一化选项要么在脑中对这个比例有数。更常见的是加窗。加窗函数比如汉宁窗会改变信号能量集中度主瓣幅度会下降到不加窗时的一半左右通常需要通过乘以2来恢复真实幅值。我开始做振动信号分析时对一段加速度信号做了汉宁窗FFT发现峰值只有理论值的一半后来才意识到是窗函数相干增益的问题。要严谨地读FFT幅度必须明确这三件事是否除以N、是否乘了窗函数修正系数、是否做了双边谱转单边谱的合并。这三样组合处理错一个结果都差得很远。5.2 dB、线性幅度和满量程最容易低估的10倍和1000倍分贝是一个容易栽跟头的领域。功率增益用10 × log10(P/P0)幅度增益用20 × log10(A/A0)。两种表示相差一个2倍关系很多人拿错。更危险的是很多人看到“60 dB”会线性理解成“60倍”但幅度增益60dB意味着1000倍因为20 × log10(1000) 60。我做一个音频降噪项目时需要把麦克风采集的-20 dBFS信号放大到-6 dBFS按幅度算目标幅度除以当前幅度等于10^((-620)/20)大概5倍左右而不是14dB当成14倍。这类换算在音频领域几乎天天遇到一个实用的速查关系是dB值幅度线性倍数0 dB16 dB约220 dB1040 dB10060 dB1000凡是看到dB先不下结论优先确认它到底是幅度还是功率然后换算成线性值再比较。5.3 RMS和峰值响度测量为什么看RMS而不看峰值信号的magnitude还有一种常见形式是RMS即均方根。对品质因数为标准正弦波而言RMS 峰值 / sqrt(2) ≈ 0.707峰值。但方波的RMS就等于峰值尖脉冲的RMS则远小于峰值。因此如果你不知道波形形态不能拿一个固定的0.707系数随便换算。在音频测量里人耳感知的响度和RMS有更强的相关性而峰值只是瞬时最大值。做响度归一化或降噪阈值设置时只看峰值会出大错。一个鼓点信号峰值可能很高但响度很低一段白噪声看似峰值不高但感知响度很强。行业里用的LUFS指标本质上就是把RMS按频带加权重再进行长时间积分。无论做播客、视频配音还是音乐混音碰到响度需求应该参考RMS或LUFS而不是盯着峰值不放。6. 三个跨领域铁律望你少走弯路6.1 铁律一先看清API文档里mag的“母语”处理任何带mag字段的数据第一件事不是算而是问这个mag来自哪个学科是星等、地震震级还是信号幅度即使是同一天文项目不同接口返回的mag也可能采用不同测光系统。碰到数据库字段名就叫mag时务必打开元数据看四件事定义是视星等、绝对星等、仪器星等还是其他单位星等无量纲地震矩有单位信号幅度有原始单位不能混。参考系统Vega、AB、ST或者地震目录里的ML、mb、Ms、Mw。误差随行给出的误差范围是什么水平。这四条看起来像废话但每一次荒唐结果基本都源于其中一条没看清。6.2 铁律二统计、平均、叠加之前先还原成线性量对数空间只能做加减表示乘积关系直接求和、平均都会引入系统性偏差。例如第二章里两颗10等星合成的例子直接星等平均会得到10等实际是9.247等。地震震级平均和信号幅度平均也有同样的逻辑如果一组事件要算“平均能量影响力”必须先转成地震矩或能量再平均一组信号的频谱幅度要平均也要在线性幅度域做而不是先转log平均完再转回来。对测光数据做加权平均时建议按流量加权权重可用信噪比或1/σ²。公式可以写成m_weighted -2.5 × log10( Σ(wi × Fi) / Σwi )其中Fi是第i个测量对应的线性流量wi是权重。这样既尊重了对数标尺又充分利用了误差信息。6.3 铁律三误差不是摆设我见过太多对比数据的人拿着两个带误差的数值直接比小数点后两位。0.02等的差距能不能说明A比B亮要看误差。如果两个测量各自的随机误差都是0.05等那么0.02等的差值和零在噪声内没有区别。正确做法是先做误差传播或至少做加权平均而不是直接读差。对星等来说误差传播还要注意对称性问题。流量空间里误差接近正态分布但转换到星等空间后正负误差不再对称。这也是为什么正规测光目录给出的magerr通常是在流量空间里算出标准误再转换出来的。如果你从另一个来源只有星等和误差却要在流量空间做计算可能需要先重建通量误差再按误差传递公式走。这些年我处理过天文测光表、地震目录和音频频谱数据本质上都是在和不同定义的magnitude打交道。回头看来最大的经验不是背住了哪个公式而是在拿到数据的第一个小时里先问清楚一句话这个magnitude到底是哪个世界的magnitude问清这一句比一切都重要。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →