UNPKG

@rfkit/spectrum-analyzer

Version:

A high-performance spectrum analyzer library for RF signal processing, supporting real-time spectrum analysis, waterfall display, and multi-segment frequency scanning

132 lines (98 loc) 3.3 kB
# @rfkit/spectrum-analyzer 高性能 RF 频谱分析库,支持实时频谱分析、瀑布图显示和多段频率扫描。 提供 **JS 版本** 和 **WASM 高性能版本** 两种选择。 ## 安装 ```bash pnpm add @rfkit/spectrum-analyzer ``` 正式版本默认走 `Release PR -> 合并 -> GitHub Actions 自动发布 npm`。仓库里的 `publish:npm` / `build:npm` 只保留为调试或应急入口,不作为日常正式发版流程。 ## 使用 ### JS 版本(默认) ```typescript import { ExtraDataMode, SpectrumAnalyzer, LevelStreamAnalyzer, type SpectrumConfig, type SpectrumOutputData, } from '@rfkit/spectrum-analyzer'; const analyzer = new SpectrumAnalyzer({ maxPoints: 2048, outputPoints: 1024, enableStatistics: true, onSpectrumUpdate: (data) => { console.log(data.realData); }, }); // 处理频谱数据 analyzer.process({ data: Float32Array, timestamp: Date.now() }); ``` ### 分段额外数据 `setExtraData` 默认保持完整数组设置语义。传入第三个参数后,每条额外数据会独立维护全长缓冲区,并按 `segmentOffset + offset` 局部写入;未写入的位置保留为 `NaN````typescript analyzer.setExtraData( { traceA: traceAChunk, traceB: traceBChunk, }, ExtraDataMode.MERGE, { segmentOffset: 1, offset: 200 }, ); ``` ### WASM 高性能版本 `SpectrumAnalyzer``LevelStreamAnalyzer`WASM APIJS 版本一致;`WaterfallAnalyzer``SeriesManager` 为纯 JS 实现,同样可从 `/wasm` 入口导入(重导出)。 ```typescript import { initWasm, SpectrumAnalyzer, LevelStreamAnalyzer, WaterfallAnalyzer, SeriesManager, } from '@rfkit/spectrum-analyzer/wasm'; // 应用启动时初始化(仅需一次) await initWasm(); // 之后使用方式与 JS 版本完全一致 const analyzer = new SpectrumAnalyzer({ maxPoints: 2048, outputPoints: 1024, enableStatistics: true, onSpectrumUpdate: (data) => { console.log(data.realData); }, }); analyzer.process({ data: Float32Array, timestamp: Date.now() }); ``` ## 核心组件 ### SpectrumAnalyzer 频谱分析器,支持: - 实时数据处理与重采样 - 最大值/最小值/平均值统计 - 瀑布图数据管理 - 天线因子补偿 - 模板超限检测 - 多段频率扫描 ### WaterfallAnalyzer 独立瀑布图数据分析器,支持完整矩阵更新、增量帧,以及 X/Y 二维裁剪与降采样。采样范围使用原始矩阵索引的半开区间 `[start, end)````typescript import { WaterfallAnalyzer } from '@rfkit/spectrum-analyzer'; const analyzer = new WaterfallAnalyzer({ onWaterfallUpdate: ({ data }) => { console.log(data); }, }); analyzer.setData(waterfallFrames); analyzer.updateSamplingRange({ x: [100, 900], y: [20, 120], outputWidth: 400, outputHeight: 100, }); ``` `setData()` 要求数据为非空等宽矩阵,传入空数组表示清空;`appendFrame()` 用于实时增量场景,应配置 `maxFrames` 避免缓存无限增长。采样范围会夹紧到矩阵边界,夹紧后为空的范围会报错。 `WaterfallAnalyzer` 为纯 JS 实现,可从默认入口或 `/wasm` 入口导入。 ### LevelStreamAnalyzer 电平流分析器,支持: - 电平概率分布统计 - 时间/点数缓存模式 ## License MIT