diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 20d0c4b..2377a50 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -42,13 +42,17 @@ jobs: pip install --upgrade pip pip install -e .[docs] - - name: Build Sphinx documentation + - name: Build English docs run: | cd python/docs python -m sphinx -b html source build/html - # Create .nojekyll file to allow files starting with underscore touch build/html/.nojekyll + - name: Build Chinese docs + run: | + cd python/docs + python -m sphinx -b html -D language=zh_CN source build/html/zh_CN + - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: diff --git a/.gitignore b/.gitignore index bf44bb2..1c956ba 100644 --- a/.gitignore +++ b/.gitignore @@ -201,7 +201,7 @@ python/docs/source/_autosummary/ # Claude Playground (temporary test scripts and experiments) # ============================================================================= .claude - +CLAUDE.md test_dataset/ agent_playground/ matlab/debug diff --git a/docs/python_matlab_parity.md b/docs/python_matlab_parity.md new file mode 100644 index 0000000..b2dbe44 --- /dev/null +++ b/docs/python_matlab_parity.md @@ -0,0 +1,82 @@ +# Python vs MATLAB Parity Tracker + +Last updated: 2026-03-10 + +This document tracks feature parity between the Python (`adctoolbox` v0.5.0) and MATLAB (`ADCToolbox` v1.30) implementations. + +--- + +## Function Mapping + +### Shared (present in both) + +| Category | MATLAB | Python | Notes | +|---|---|---|---| +| Spectrum | `plotspec` | `analyze_spectrum` | Python returns dict; MATLAB returns individual values | +| Polar Spectrum | `plotphase` | `analyze_spectrum_polar` | | +| Perf vs OSR | `perfosr` | *(in-example only)* | Python has no dedicated function; done in `exp_s06` example script | +| Sine Fit | `sinfit` | `fit_sine_4param` | | +| Find Coherent Bin | `findbin` | `find_coherent_frequency` | Python returns frequency, MATLAB returns bin index | +| Estimate Frequency | `findfreq` | `estimate_frequency` | | +| Alias Folding | `alias` | `fold_frequency_to_nyquist` | Python also has `fold_bin_to_nyquist` | +| Error by Phase/Value | `errsin` | `analyze_error_by_phase`, `analyze_error_by_value` | MATLAB uses `xaxis` param to switch; Python split into two functions | +| Error by Value (shortcut) | `errsinv` | `analyze_error_by_value` | Python absorbed the shortcut | +| Time Decomposition | `tomdec` | `analyze_decomposition_time`, `analyze_decomposition_polar` | Python split into time and polar variants | +| INL from Sine | `inlsin` | `analyze_inl_from_sine` | | +| Overflow Check | `bitchk` | `analyze_overflow` | | +| Weight Calibration | `wcalsin` | `calibrate_weight_sine` | | +| Weight/Radix Plot | `plotwgt` | `analyze_weight_radix` | | +| NTF Analysis | `ntfperf` | `ntf_analyzer` | | +| Dashboard | `adcpanel` | `generate_aout_dashboard`, `generate_dout_dashboard` | Python split analog/digital into separate dashboards | + +### MATLAB-only (not yet ported to Python) + +| MATLAB Function | Description | Priority | +|---|---|---| +| `cdacwgt` | Capacitive DAC weight calculation from capacitor values (cd, cb, cp) | Low — niche, design-phase utility | +| `ifilter` | FFT-based ideal (brickwall) bandpass filter | Medium — useful general utility | +| `plotres` | Partial-sum residual plots for bit-matrix correlation analysis | Medium — useful debug visualization | +| `plotressin` | Shortcut: `wcalsin` + `plotres` combined | Low — follows once `plotres` is ported | +| `perfosr` (dedicated fn) | Sweep and plot SNDR/SFDR/ENOB vs OSR | Medium — exists as example script but not a reusable function | + +### Python-only (not in MATLAB) + +| Python Function | Description | Notes | +|---|---|---| +| `analyze_two_tone_spectrum` | Two-tone spectrum with IMD analysis | New feature in Python | +| `analyze_error_pdf` | Error probability density function | New analysis | +| `analyze_error_spectrum` | FFT of error signal | New analysis | +| `analyze_error_autocorr` | Error autocorrelation | New analysis | +| `analyze_error_envelope_spectrum` | Envelope spectrum of error | New analysis | +| `fit_static_nonlin` | Fit static nonlinearity polynomial | New analysis | +| `analyze_bit_activity` | Bit toggle activity analysis | MATLAB has legacy `bitact.m` only | +| `analyze_enob_sweep` | ENOB per bit sweep | MATLAB has legacy `bitsweep.m` only | +| `calibrate_weight_sine_lite` | Lightweight calibration variant | Internal (not exported), no MATLAB equivalent | +| `analyze_phase_plane` | Phase-space anomaly detection | Internal (not exported), no MATLAB equivalent | +| `siggen.nonidealities` | Signal generation with jitter, thermal noise, quantization, settling, nonlinearity | Entire module, no MATLAB equivalent | +| Unit conversions (16 functions) | `db_to_mag`, `snr_to_enob`, `lsb_to_volts`, `dbm_to_vrms`, etc. | Utility library, no MATLAB equivalent | +| FOM calculators (4 functions) | `calculate_walden_fom`, `calculate_schreier_fom`, `calculate_thermal_noise_limit`, `calculate_jitter_limit` | Utility library, no MATLAB equivalent | +| `vpp_for_target_dbfs` | Calculate Vpp for target dBFS | Internal utility, no MATLAB equivalent | + +--- + +## Structural / Behavioral Differences + +| Aspect | MATLAB | Python | +|---|---|---| +| **Naming** | camelCase (`plotspec`, `sinfit`, `wcalsin`) | snake_case (`analyze_spectrum`, `fit_sine_4param`, `calibrate_weight_sine`) | +| **Return type** | Multiple return values (`[enob,sndr,sfdr,...] = plotspec(...)`) | Single dictionary (`result = analyze_spectrum(...)`) | +| **Plot control** | `disp` parameter (0/1) | `create_plot` boolean; separate `plot_*` functions | +| **API granularity** | One function does multiple things (e.g., `errsin` handles both phase and value binning) | Split into focused functions (`analyze_error_by_phase` vs `analyze_error_by_value`) | +| **Dashboard** | Single `adcpanel` handles both analog and digital | Separate `generate_aout_dashboard` and `generate_dout_dashboard` | +| **Legacy functions** | 15 deprecated functions in `legacy/` | No legacy layer; MATLAB names were never shipped | +| **Shortcut wrappers** | `shortcut/` directory with convenience wrappers | Absorbed into main API (no separate layer) | + +--- + +## Recommendations for Convergence + +1. **Port to Python**: `ifilter`, `plotres`, `perfosr` (as dedicated functions) +2. **Port to MATLAB**: `analyze_two_tone_spectrum`, error analysis suite (PDF, spectrum, autocorr, envelope), `fit_static_nonlin`, signal generation module, unit conversion utilities, FOM calculators +3. **Promote in Python**: `analyze_phase_plane` and `calibrate_weight_sine_lite` are implemented but not exported — decide whether to make them public +4. **Decide on `cdacwgt`**: Very MATLAB-specific (CDAC design). May not be needed in Python if the toolbox focuses on measurement/characterization rather than circuit design diff --git a/python/docs/source/_templates/layout.html b/python/docs/source/_templates/layout.html new file mode 100644 index 0000000..04f68c8 --- /dev/null +++ b/python/docs/source/_templates/layout.html @@ -0,0 +1,16 @@ +{% extends "!layout.html" %} +{% block extrahead %} +{{ super() }} + +{% endblock %} +{% block content %} +
+ 🌐 Language: + English | + 中文 +
+{{ super() }} +{% endblock %} diff --git a/python/docs/source/conf.py b/python/docs/source/conf.py index b3acb05..bdf3c98 100644 --- a/python/docs/source/conf.py +++ b/python/docs/source/conf.py @@ -38,6 +38,9 @@ language = 'en' +locale_dirs = ['locale'] # where .po files live (relative to source/) +gettext_compact = False # one .po file per source file (easier to manage) + # -- Options for HTML output ------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output diff --git a/python/docs/source/index.rst b/python/docs/source/index.rst index 3916dad..c5d1120 100644 --- a/python/docs/source/index.rst +++ b/python/docs/source/index.rst @@ -14,6 +14,7 @@ and digital output analysis. api/index algorithms/index examples/index + python_matlab_parity changelog Features diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/AlgorithmOverview.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/AlgorithmOverview.po new file mode 100644 index 0000000..aee9b5d --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/AlgorithmOverview.po @@ -0,0 +1,790 @@ +# ADCToolbox 中文翻译 +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: 2026-03-10 20:52+0800\n" +"Last-Translator: ADCToolbox Contributors\n" +"Language: zh_CN\n" +"Language-Team: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/algorithms/AlgorithmOverview.md:1 +msgid "ADCToolbox Algorithm Overview" +msgstr "ADCToolbox 算法概览" + +#: ../../source/algorithms/AlgorithmOverview.md:3 +msgid "**Last Updated:** 2025-12-03" +msgstr "**最后更新:** 2025-12-03" + +#: ../../source/algorithms/AlgorithmOverview.md:5 +msgid "Introduction" +msgstr "简介" + +#: ../../source/algorithms/AlgorithmOverview.md:7 +msgid "" +"This document describes the working principles and architectural design " +"of the MATLAB algorithms in ADCToolbox. The toolbox has been streamlined " +"for efficiency, maintainability, and consistent output formatting." +msgstr "" +"本文档介绍 ADCToolbox 中 MATLAB 算法的工作原理与架构设计。" +"工具箱经过优化,注重执行效率、可维护性和统一的输出格式。" + +#: ../../source/algorithms/AlgorithmOverview.md:11 +msgid "Toolset Architecture" +msgstr "工具集架构" + +#: ../../source/algorithms/AlgorithmOverview.md:13 +msgid "Design Principles" +msgstr "设计原则" + +#: ../../source/algorithms/AlgorithmOverview.md:15 +msgid "" +"**Separation of Concerns**: Tool execution and panel generation are " +"separate functions" +msgstr "**关注点分离**:工具执行与面板生成为独立函数" + +#: ../../source/algorithms/AlgorithmOverview.md:16 +msgid "" +"**Data-Driven Execution**: Tool lists defined as data structures to " +"eliminate repetitive code" +msgstr "**数据驱动执行**:以数据结构定义工具列表,消除重复代码" + +#: ../../source/algorithms/AlgorithmOverview.md:17 +msgid "" +"**Auto-Detection**: Panel functions automatically locate plot files using" +" naming conventions" +msgstr "**自动检测**:面板函数根据命名规范自动定位图表文件" + +#: ../../source/algorithms/AlgorithmOverview.md:18 +msgid "" +"**Consistent Formatting**: All tools use standardized figure properties " +"and output" +msgstr "**统一格式**:所有工具使用标准化的图形属性和输出" + +#: ../../source/algorithms/AlgorithmOverview.md:20 +msgid "File Organization" +msgstr "文件组织" + +#: ../../source/algorithms/AlgorithmOverview.md:33 +msgid "toolset_aout: Analog Output Analysis" +msgstr "toolset_aout:模拟输出分析" + +#: ../../source/algorithms/AlgorithmOverview.md:35 +#: ../../source/algorithms/AlgorithmOverview.md:103 +msgid "**Files:**" +msgstr "**文件:**" + +#: ../../source/algorithms/AlgorithmOverview.md:36 +msgid "MATLAB: `matlab/src/toolset_aout.m`" +msgstr "MATLAB:`matlab/src/toolset_aout.m`" + +#: ../../source/algorithms/AlgorithmOverview.md:37 +msgid "Python: `python/src/adctoolbox/toolset_aout.py`" +msgstr "Python:`python/src/adctoolbox/toolset_aout.py`" + +#: ../../source/algorithms/AlgorithmOverview.md +#: ../../source/algorithms/AlgorithmOverview.md:39 +#: ../../source/algorithms/AlgorithmOverview.md:107 +msgid "Purpose" +msgstr "功能说明" + +#: ../../source/algorithms/AlgorithmOverview.md:41 +msgid "" +"Executes 9 diagnostic tools on calibrated ADC analog output data (sine " +"wave). Covers time-domain, frequency-domain, and statistical error " +"analysis." +msgstr "" +"对校准后的 ADC 模拟输出数据(正弦波)执行 9 个诊断工具," +"涵盖时域、频域和统计误差分析。" + +#: ../../source/algorithms/AlgorithmOverview.md:43 +#: ../../source/algorithms/AlgorithmOverview.md:111 +msgid "Algorithm Workflow" +msgstr "算法流程" + +#: ../../source/algorithms/AlgorithmOverview.md:62 +msgid "Tool Execution Pattern" +msgstr "工具执行模式" + +#: ../../source/algorithms/AlgorithmOverview.md:64 +msgid "Each tool follows a standardized pattern:" +msgstr "每个工具遵循标准化执行模式:" + +#: ../../source/algorithms/AlgorithmOverview.md:78 +#: ../../source/algorithms/AlgorithmOverview.md:167 +msgid "Tools Executed" +msgstr "执行的工具" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "#" +msgstr "#" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "Tool" +msgstr "工具" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "Key Parameters" +msgstr "关键参数" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "1" +msgstr "1" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`tomdec`" +msgstr "`tomdec`" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`freqCal`, `10` harmonics, `1` OSR" +msgstr "`freqCal`,`10` 次谐波,`1` OSR" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "2" +msgstr "2" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`plotspec`" +msgstr "`plotspec`" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`label=1`, `harmonic=5`, `OSR=1`, `window=@hann`" +msgstr "`label=1`,`harmonic=5`,`OSR=1`,`window=@hann`" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "3" +msgstr "3" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`plotphase`" +msgstr "`plotphase`" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`harmonic=10`, `mode='FFT'`" +msgstr "`harmonic=10`,`mode='FFT'`" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "4" +msgstr "4" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`errsin` (code)" +msgstr "`errsin`(码值)" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`bin=20`, `fin=freqCal`, `xaxis='value'`" +msgstr "`bin=20`,`fin=freqCal`,`xaxis='value'`" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "5" +msgstr "5" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`errsin` (phase)" +msgstr "`errsin`(相位)" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`bin=99`, `fin=freqCal`, `xaxis='phase'`" +msgstr "`bin=99`,`fin=freqCal`,`xaxis='phase'`" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "6" +msgstr "6" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`errpdf`" +msgstr "`errpdf`" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`Resolution`, `FullScale`" +msgstr "`Resolution`,`FullScale`" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "7" +msgstr "7" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`errac`" +msgstr "`errac`" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`MaxLag=200`, `Normalize=true`" +msgstr "`MaxLag=200`,`Normalize=true`" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "8" +msgstr "8" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`plotspec` (error)" +msgstr "`plotspec`(误差)" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`label=0`" +msgstr "`label=0`" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "9" +msgstr "9" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`errevspec`" +msgstr "`errevspec`" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`Fs=1`" +msgstr "`Fs=1`" + +#: ../../source/algorithms/AlgorithmOverview.md:92 +#: ../../source/algorithms/AlgorithmOverview.md:243 +msgid "Key Features" +msgstr "主要特点" + +#: ../../source/algorithms/AlgorithmOverview.md:94 +msgid "" +"**Pre-computation**: Expensive calculations (frequency detection, sine " +"fit) done once and reused" +msgstr "**预计算**:耗时运算(频率检测、正弦拟合)只计算一次并复用" + +#: ../../source/algorithms/AlgorithmOverview.md:95 +msgid "" +"**Memory Management**: Figures closed immediately after save to prevent " +"memory buildup" +msgstr "**内存管理**:图形保存后立即关闭,防止内存积累" + +#: ../../source/algorithms/AlgorithmOverview.md:96 +msgid "" +"**Fail-Fast**: Execution stops on first error (use `try-catch` for fail-" +"safe execution)" +msgstr "**快速失败**:首次出错即停止执行(使用 `try-catch` 实现容错执行)" + +#: ../../source/algorithms/AlgorithmOverview.md:97 +msgid "**Standardized Output**: All plots have consistent size and formatting" +msgstr "**标准化输出**:所有图表具有统一的尺寸和格式" + +#: ../../source/algorithms/AlgorithmOverview.md:101 +msgid "toolset_dout: Digital Output Analysis" +msgstr "toolset_dout:数字输出分析" + +#: ../../source/algorithms/AlgorithmOverview.md:104 +msgid "MATLAB: `matlab/src/toolset_dout.m`" +msgstr "MATLAB:`matlab/src/toolset_dout.m`" + +#: ../../source/algorithms/AlgorithmOverview.md:105 +msgid "Python: `python/src/adctoolbox/toolset_dout.py`" +msgstr "Python:`python/src/adctoolbox/toolset_dout.py`" + +#: ../../source/algorithms/AlgorithmOverview.md:109 +msgid "" +"Executes 6 diagnostic tools on ADC digital bit outputs (for SAR ADCs and " +"bit-weighted architectures). Performs calibration, weight analysis, and " +"performance evaluation." +msgstr "" +"对 ADC 数字位输出(适用于 SAR ADC 和位权重架构)执行 6 个诊断工具," +"包括校准、权重分析和性能评估。" + +#: ../../source/algorithms/AlgorithmOverview.md:133 +msgid "Data-Driven Tool Execution" +msgstr "数据驱动的工具执行" + +#: ../../source/algorithms/AlgorithmOverview.md:135 +msgid "Unlike the old repetitive approach, tools are defined as a struct array:" +msgstr "与旧式重复代码不同,工具定义为结构体数组:" + +#: ../../source/algorithms/AlgorithmOverview.md:161 +msgid "**Benefits of Data-Driven Approach:**" +msgstr "**数据驱动方式的优势:**" + +#: ../../source/algorithms/AlgorithmOverview.md:162 +#, python-format +msgid "**Code Reduction**: 109 lines → 66 lines (40% reduction)" +msgstr "**代码精简**:109 行 → 66 行(减少 40%)" + +#: ../../source/algorithms/AlgorithmOverview.md:163 +msgid "**Consistency**: Single point of control for formatting" +msgstr "**一致性**:格式控制集中于单一位置" + +#: ../../source/algorithms/AlgorithmOverview.md:164 +msgid "**Maintainability**: Easy to add/remove/modify tools" +msgstr "**可维护性**:便于添加、删除或修改工具" + +#: ../../source/algorithms/AlgorithmOverview.md:165 +msgid "**Readability**: Tool properties clearly visible in struct definition" +msgstr "**可读性**:工具属性在结构体定义中一目了然" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "Figure Size" +msgstr "图形尺寸" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`plotspec` (nominal)" +msgstr "`plotspec`(标称)" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "Spectrum before calibration" +msgstr "校准前频谱" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "800×600" +msgstr "800×600" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`plotspec` (calibrated)" +msgstr "`plotspec`(已校准)" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "Spectrum after `wcalsine` calibration" +msgstr "`wcalsine` 校准后频谱" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`bitact`" +msgstr "`bitact`" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "Bit toggle rate analysis" +msgstr "位翻转率分析" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "1000×750" +msgstr "1000×750" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`ovfchk`" +msgstr "`ovfchk`" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "Overflow/redundancy check" +msgstr "溢出/冗余检查" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "1000×600" +msgstr "1000×600" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`weightScaling`" +msgstr "`weightScaling`" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "Radix visualization" +msgstr "基数可视化" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "`bitsweep`" +msgstr "`bitsweep`" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "ENoB vs number of bits" +msgstr "ENoB 与位数关系" + +#: ../../source/algorithms/AlgorithmOverview.md:180 +msgid "Panel Functions" +msgstr "面板函数" + +#: ../../source/algorithms/AlgorithmOverview.md:182 +msgid "toolset_aout_panel" +msgstr "toolset_aout_panel" + +#: ../../source/algorithms/AlgorithmOverview.md:184 +msgid "**File:** `matlab/src/toolset_aout_panel.m`" +msgstr "**文件:** `matlab/src/toolset_aout_panel.m`" + +#: ../../source/algorithms/AlgorithmOverview.md:186 +msgid "Combines 9 individual AOUT plots into a 3×3 panel figure." +msgstr "将 9 个独立 AOUT 图表组合为 3×3 面板图。" + +#: ../../source/algorithms/AlgorithmOverview.md:188 +#: ../../source/algorithms/AlgorithmOverview.md:227 +msgid "Algorithm" +msgstr "算法" + +#: ../../source/algorithms/AlgorithmOverview.md:206 +#: ../../source/algorithms/AlgorithmOverview.md:231 +msgid "File Naming Convention" +msgstr "文件命名规范" + +#: ../../source/algorithms/AlgorithmOverview.md:208 +#: ../../source/algorithms/AlgorithmOverview.md:233 +msgid "Auto-detected files:" +msgstr "自动检测的文件:" + +#: ../../source/algorithms/AlgorithmOverview.md:221 +msgid "toolset_dout_panel" +msgstr "toolset_dout_panel" + +#: ../../source/algorithms/AlgorithmOverview.md:223 +msgid "**File:** `matlab/src/toolset_dout_panel.m`" +msgstr "**文件:** `matlab/src/toolset_dout_panel.m`" + +#: ../../source/algorithms/AlgorithmOverview.md:225 +msgid "Combines 6 individual DOUT plots into a 3×2 panel figure." +msgstr "将 6 个独立 DOUT 图表组合为 3×2 面板图。" + +#: ../../source/algorithms/AlgorithmOverview.md:229 +msgid "Same as `toolset_aout_panel` but with 6 plots in 3×2 layout (1200×1000)." +msgstr "与 `toolset_aout_panel` 相同,但以 3×2 布局排列 6 个图表(1200×1000)。" + +#: ../../source/algorithms/AlgorithmOverview.md:245 +msgid "" +"**Auto-Detection**: Uses prefix to find files - no need to manually " +"specify paths" +msgstr "**自动检测**:使用前缀查找文件,无需手动指定路径" + +#: ../../source/algorithms/AlgorithmOverview.md:246 +msgid "**Flexible**: Can override with explicit `PlotFiles` parameter" +msgstr "**灵活性**:可通过显式 `PlotFiles` 参数覆盖" + +#: ../../source/algorithms/AlgorithmOverview.md:247 +msgid "**Robust**: Handles missing files gracefully (shows placeholder)" +msgstr "**鲁棒性**:优雅处理缺失文件(显示占位符)" + +#: ../../source/algorithms/AlgorithmOverview.md:248 +msgid "**Reusable**: Can re-generate panels without re-running tools" +msgstr "**可复用**:无需重新运行工具即可重新生成面板" + +#: ../../source/algorithms/AlgorithmOverview.md:252 +msgid "Common Utility Functions" +msgstr "通用工具函数" + +#: ../../source/algorithms/AlgorithmOverview.md:254 +msgid "findfreq" +msgstr "findfreq" + +#: ../../source/algorithms/AlgorithmOverview.md:256 +msgid "**File:** `matlab/src/findfreq.m`" +msgstr "**文件:** `matlab/src/findfreq.m`" + +#: ../../source/algorithms/AlgorithmOverview.md:258 +msgid "Auto-detects sine wave frequency from time-domain signal using FFT." +msgstr "使用 FFT 从时域信号中自动检测正弦波频率。" + +#: ../../source/algorithms/AlgorithmOverview.md:260 +#: ../../source/algorithms/AlgorithmOverview.md:272 +msgid "**Algorithm:**" +msgstr "**算法:**" + +#: ../../source/algorithms/AlgorithmOverview.md:261 +msgid "Compute FFT of input signal" +msgstr "计算输入信号的 FFT" + +#: ../../source/algorithms/AlgorithmOverview.md:262 +msgid "Find peak in magnitude spectrum" +msgstr "在幅度频谱中查找峰值" + +#: ../../source/algorithms/AlgorithmOverview.md:263 +msgid "Convert bin index to normalized frequency" +msgstr "将频率箱索引转换为归一化频率" + +#: ../../source/algorithms/AlgorithmOverview.md:264 +msgid "Return frequency (0 to 0.5, normalized to sampling rate)" +msgstr "返回频率(0 至 0.5,归一化至采样率)" + +#: ../../source/algorithms/AlgorithmOverview.md:266 +msgid "sinfit" +msgstr "sinfit" + +#: ../../source/algorithms/AlgorithmOverview.md:268 +msgid "**File:** `matlab/src/sinfit.m`" +msgstr "**文件:** `matlab/src/sinfit.m`" + +#: ../../source/algorithms/AlgorithmOverview.md:270 +msgid "Fits a 4-parameter sine wave to data: `A*sin(2πft + φ) + DC`" +msgstr "对数据进行四参数正弦拟合:`A*sin(2πft + φ) + DC`" + +#: ../../source/algorithms/AlgorithmOverview.md:273 +msgid "Use `findfreq` to detect frequency" +msgstr "使用 `findfreq` 检测频率" + +#: ../../source/algorithms/AlgorithmOverview.md:274 +msgid "Set up nonlinear least squares problem" +msgstr "建立非线性最小二乘问题" + +#: ../../source/algorithms/AlgorithmOverview.md:275 +msgid "Optimize amplitude, frequency, phase, DC offset" +msgstr "优化幅度、频率、相位和直流偏置" + +#: ../../source/algorithms/AlgorithmOverview.md:276 +msgid "Return fitted sine wave" +msgstr "返回拟合正弦波" + +#: ../../source/algorithms/AlgorithmOverview.md:280 +msgid "Naming Conventions" +msgstr "命名规范" + +#: ../../source/algorithms/AlgorithmOverview.md:282 +msgid "File Naming" +msgstr "文件命名" + +#: ../../source/algorithms/AlgorithmOverview.md:284 +msgid "**Individual tool outputs:**" +msgstr "**单个工具输出:**" + +#: ../../source/algorithms/AlgorithmOverview.md:289 +#: ../../source/algorithms/AlgorithmOverview.md:298 +msgid "Examples:" +msgstr "示例:" + +#: ../../source/algorithms/AlgorithmOverview.md:290 +msgid "`aout_1_tomdec.png`" +msgstr "`aout_1_tomdec.png`" + +#: ../../source/algorithms/AlgorithmOverview.md:291 +msgid "`dout_3_bitActivity.png`" +msgstr "`dout_3_bitActivity.png`" + +#: ../../source/algorithms/AlgorithmOverview.md:293 +msgid "**Panel outputs:**" +msgstr "**面板输出:**" + +#: ../../source/algorithms/AlgorithmOverview.md:299 +msgid "`PANEL_AOUT.png`" +msgstr "`PANEL_AOUT.png`" + +#: ../../source/algorithms/AlgorithmOverview.md:300 +msgid "`PANEL_DOUT.png`" +msgstr "`PANEL_DOUT.png`" + +#: ../../source/algorithms/AlgorithmOverview.md:302 +msgid "Variable Naming" +msgstr "变量命名" + +#: ../../source/algorithms/AlgorithmOverview.md:304 +msgid "`plot_files` — Cell array of PNG file paths" +msgstr "`plot_files` — PNG 文件路径的元胞数组" + +#: ../../source/algorithms/AlgorithmOverview.md:305 +msgid "`outputDir` — Directory for output files" +msgstr "`outputDir` — 输出文件目录" + +#: ../../source/algorithms/AlgorithmOverview.md:306 +msgid "`freqCal` — Calibrated/detected frequency" +msgstr "`freqCal` — 校准/检测频率" + +#: ../../source/algorithms/AlgorithmOverview.md:307 +msgid "`w_cal` — Calibrated bit weights" +msgstr "`w_cal` — 校准后的位权重" + +#: ../../source/algorithms/AlgorithmOverview.md:308 +msgid "`digitalCodes` — Digital output codes (nominal weights)" +msgstr "`digitalCodes` — 数字输出码(标称权重)" + +#: ../../source/algorithms/AlgorithmOverview.md:309 +msgid "`digitalCodes_cal` — Digital output codes (calibrated weights)" +msgstr "`digitalCodes_cal` — 数字输出码(校准权重)" + +#: ../../source/algorithms/AlgorithmOverview.md:313 +msgid "Performance Optimizations" +msgstr "性能优化" + +#: ../../source/algorithms/AlgorithmOverview.md:315 +msgid "Memory Management" +msgstr "内存管理" + +#: ../../source/algorithms/AlgorithmOverview.md:317 +msgid "Figures closed immediately after save" +msgstr "图形保存后立即关闭" + +#: ../../source/algorithms/AlgorithmOverview.md:318 +msgid "Use `'Visible', false` for batch processing (faster)" +msgstr "批处理时使用 `'Visible', false`(速度更快)" + +#: ../../source/algorithms/AlgorithmOverview.md:319 +msgid "Pre-allocate cell arrays for file paths" +msgstr "预分配文件路径的元胞数组" + +#: ../../source/algorithms/AlgorithmOverview.md:321 +msgid "Computation Efficiency" +msgstr "计算效率" + +#: ../../source/algorithms/AlgorithmOverview.md:323 +msgid "" +"**Pre-computation**: Expensive operations (frequency detection, sine fit," +" calibration) done once" +msgstr "**预计算**:耗时操作(频率检测、正弦拟合、校准)只执行一次" + +#: ../../source/algorithms/AlgorithmOverview.md:324 +msgid "**Data-driven loops**: Eliminates repetitive code" +msgstr "**数据驱动循环**:消除重复代码" + +#: ../../source/algorithms/AlgorithmOverview.md:325 +msgid "**Minimal disk I/O**: Each plot saved once" +msgstr "**最小化磁盘 I/O**:每个图表只保存一次" + +#: ../../source/algorithms/AlgorithmOverview.md:327 +msgid "Code Efficiency" +msgstr "代码效率" + +#: ../../source/algorithms/AlgorithmOverview.md:329 +msgid "**Before (repetitive):**" +msgstr "**重构前(重复代码):**" + +#: ../../source/algorithms/AlgorithmOverview.md:346 +msgid "**After (data-driven):**" +msgstr "**重构后(数据驱动):**" + +#: ../../source/algorithms/AlgorithmOverview.md:358 +#, python-format +msgid "**Result:** 109 lines → 66 lines (40% reduction)" +msgstr "**结果:** 109 行 → 66 行(减少 40%)" + +#: ../../source/algorithms/AlgorithmOverview.md:362 +msgid "Usage Patterns" +msgstr "使用模式" + +#: ../../source/algorithms/AlgorithmOverview.md:364 +msgid "Pattern 1: Generate plots and panel together" +msgstr "模式一:同时生成图表和面板" + +#: ../../source/algorithms/AlgorithmOverview.md:376 +msgid "Pattern 2: Batch generate plots, then gather panels" +msgstr "模式二:批量生成图表,然后汇总面板" + +#: ../../source/algorithms/AlgorithmOverview.md:390 +msgid "Pattern 3: Re-generate panels only (plots already exist)" +msgstr "模式三:仅重新生成面板(图表已存在)" + +#: ../../source/algorithms/AlgorithmOverview.md:400 +msgid "Error Handling" +msgstr "错误处理" + +#: ../../source/algorithms/AlgorithmOverview.md:402 +msgid "Current Behavior" +msgstr "当前行为" + +#: ../../source/algorithms/AlgorithmOverview.md:404 +msgid "Both toolsets use **fail-fast** error handling:" +msgstr "两个工具集均采用**快速失败**错误处理策略:" + +#: ../../source/algorithms/AlgorithmOverview.md:405 +msgid "Execution stops on first error" +msgstr "首次出错即停止执行" + +#: ../../source/algorithms/AlgorithmOverview.md:406 +msgid "MATLAB displays error message" +msgstr "MATLAB 显示错误信息" + +#: ../../source/algorithms/AlgorithmOverview.md:407 +msgid "Partial results may be saved" +msgstr "可能保存部分结果" + +#: ../../source/algorithms/AlgorithmOverview.md:409 +msgid "Implementing Fail-Safe Execution" +msgstr "实现容错执行" + +#: ../../source/algorithms/AlgorithmOverview.md:411 +msgid "To continue execution after errors, wrap tools in `try-catch`:" +msgstr "若需在出错后继续执行,请将工具包装在 `try-catch` 中:" + +#: ../../source/algorithms/AlgorithmOverview.md:428 +msgid "Future Enhancements" +msgstr "未来增强计划" + +#: ../../source/algorithms/AlgorithmOverview.md:430 +msgid "Planned Features" +msgstr "计划功能" + +#: ../../source/algorithms/AlgorithmOverview.md:432 +msgid "" +"**Python panel functions**: Implement `toolset_aout_panel` and " +"`toolset_dout_panel` in Python" +msgstr "**Python 面板函数**:用 Python 实现 `toolset_aout_panel` 和 `toolset_dout_panel`" + +#: ../../source/algorithms/AlgorithmOverview.md:433 +msgid "**Parallel execution**: Run independent tools in parallel using `parfor`" +msgstr "**并行执行**:使用 `parfor` 并行运行独立工具" + +#: ../../source/algorithms/AlgorithmOverview.md:434 +msgid "**Progress callbacks**: Optional callback function for progress updates" +msgstr "**进度回调**:可选的进度更新回调函数" + +#: ../../source/algorithms/AlgorithmOverview.md:435 +msgid "**Custom tool selection**: Allow users to specify which tools to run" +msgstr "**自定义工具选择**:允许用户指定要运行的工具" + +#: ../../source/algorithms/AlgorithmOverview.md:436 +msgid "**Fail-safe mode**: Option to continue execution after errors" +msgstr "**容错模式**:出错后继续执行的选项" + +#: ../../source/algorithms/AlgorithmOverview.md:438 +msgid "Architectural Improvements" +msgstr "架构改进" + +#: ../../source/algorithms/AlgorithmOverview.md:440 +msgid "**Tool registry**: Central registry of all available tools" +msgstr "**工具注册表**:所有可用工具的集中注册表" + +#: ../../source/algorithms/AlgorithmOverview.md:441 +msgid "**Plugin system**: Easy addition of custom tools" +msgstr "**插件系统**:便于添加自定义工具" + +#: ../../source/algorithms/AlgorithmOverview.md:442 +msgid "**Configuration files**: YAML/JSON config for tool parameters" +msgstr "**配置文件**:使用 YAML/JSON 配置工具参数" + +#: ../../source/algorithms/AlgorithmOverview.md:443 +msgid "**Result caching**: Cache expensive computations for reuse" +msgstr "**结果缓存**:缓存耗时计算结果以供复用" + +#: ../../source/algorithms/AlgorithmOverview.md:447 +msgid "References" +msgstr "参考文献" + +#: ../../source/algorithms/AlgorithmOverview.md:449 +msgid "**IEEE Std 1241-2010**: Standard for ADC Test Methods" +msgstr "**IEEE Std 1241-2010**:ADC 测试方法标准" + +#: ../../source/algorithms/AlgorithmOverview.md:450 +msgid "**IEEE Std 1057-2017**: Standard for Digitizing Waveform Recorders" +msgstr "**IEEE Std 1057-2017**:数字化波形记录仪标准" + +#: ../../source/algorithms/AlgorithmOverview.md:451 +msgid "MATLAB documentation: Function handles, struct arrays, exportgraphics" +msgstr "MATLAB 文档:函数句柄、结构体数组、exportgraphics" + +#: ../../source/algorithms/AlgorithmOverview.md:455 +msgid "Version History" +msgstr "版本历史" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "Version" +msgstr "版本" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "Date" +msgstr "日期" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "Changes" +msgstr "变更内容" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "**2.0**" +msgstr "**2.0**" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "2025-12-03" +msgstr "2025-12-03" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "Streamlined toolsets with data-driven execution, separated panel functions" +msgstr "精简工具集,采用数据驱动执行,独立面板函数" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "**1.0**" +msgstr "**1.0**" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "2025-01-28" +msgstr "2025-01-28" + +#: ../../source/algorithms/AlgorithmOverview.md +msgid "Initial implementation" +msgstr "初始实现" diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_decomposition_polar.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_decomposition_polar.po new file mode 100644 index 0000000..d323a61 --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_decomposition_polar.po @@ -0,0 +1,321 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/algorithms/analyze_decomposition_polar.md:1 +msgid "analyze_decomposition_polar" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:3 +msgid "Overview" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:5 +msgid "" +"`analyze_decomposition_polar` performs time-domain harmonic decomposition" +" with polar (magnitude-phase) visualization. This provides an intuitive " +"view of harmonic distortion structure, showing how each harmonic " +"component relates to the fundamental in both amplitude and phase." +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:7 +msgid "Syntax" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:20 +msgid "Parameters" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:22 +msgid "**`signal`** (array_like) — Input ADC signal (sine wave excitation)" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:23 +msgid "**`harmonic`** (int, default=5) — Number of harmonics to decompose" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:24 +msgid "**`show_plot`** (bool, default=True) — Display polar decomposition plot" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:25 +msgid "**`ax`** (matplotlib polar axis, optional) — Polar axis to plot on" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:26 +msgid "**`title`** (str, optional) — Custom title for the plot" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:28 +msgid "Returns" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:30 +msgid "Dictionary containing:" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:31 +msgid "**`fundamental`** — Fundamental component (time domain)" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:32 +msgid "**`harmonics`** — List of harmonic components (time domain)" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:33 +msgid "**`residual`** — Remaining error (noise + higher-order distortion)" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:34 +msgid "**`harmonic_amplitudes`** — Amplitude of each harmonic" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:35 +msgid "**`harmonic_phases`** — Phase of each harmonic (radians)" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:36 +msgid "**`frequency`** — Detected fundamental frequency" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:38 +msgid "Algorithm" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:55 +msgid "Polar Visualization" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:57 +msgid "The polar plot shows:" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:58 +msgid "**Angle**: Phase of each harmonic relative to fundamental" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:59 +msgid "**Radius**: Magnitude of each harmonic (dBFS or linear)" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:60 +msgid "**Markers**: Different harmonics (HD2, HD3, HD4, ...)" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:62 +msgid "**Interpretation:**" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:63 +msgid "**Clustered phases**: Coherent distortion mechanism" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:64 +msgid "**Random phases**: Multiple independent error sources" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:65 +msgid "**Phase = 0° or 180°**: In-phase/anti-phase with fundamental" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:66 +msgid "**Phase = 90° or 270°**: Quadrature distortion" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:68 +msgid "Examples" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:70 +msgid "Example 1: Harmonic Decomposition with Polar Plot" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:87 +msgid "Example 2: Compare Time and Polar Views" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:106 +msgid "Example 3: Memory Effect Detection" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:121 +msgid "Interpretation" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:123 +msgid "Harmonic Phase Patterns" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "Phase Pattern" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "Likely Cause" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "**All harmonics ~0°**" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "Symmetric compression/limiting" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "**HD2 at 0°, HD3 at 0°**" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "Positive nonlinearity (expansion)" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "**HD2 at 180°, HD3 at 0°**" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "Negative nonlinearity (compression)" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "**HD2 at 90°/270°**" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "Asymmetric transfer function" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "**Even harmonics clustered**" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "Differential pair mismatch" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "**Odd harmonics clustered**" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "Single-ended nonlinearity" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:134 +msgid "Harmonic Magnitude Analysis" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "Magnitude Pattern" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "**HD2 dominant**" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "Even-order nonlinearity (asymmetry)" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "**HD3 dominant**" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "Odd-order nonlinearity (curvature)" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "**HD2 = HD3**" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "Mixed nonlinearity" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "**High HD2, low HD3**" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "**Low HD2, high HD3**" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md +msgid "Well-matched differential design" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:144 +msgid "Use Cases" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:146 +msgid "**Distinguish nonlinearity mechanisms**: Even vs. odd order" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:147 +msgid "**Identify memory effects**: Characteristic phase signatures" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:148 +msgid "**Visualize distortion structure**: More intuitive than time domain" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:149 +msgid "**Debug ADC architectures**: Pipelined, SAR, flash" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:150 +msgid "**Compare before/after calibration**: Phase should remain stable" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:152 +msgid "See Also" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:154 +msgid "" +"[`analyze_decomposition_time`](analyze_decomposition_time.md) — Time-" +"domain view" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:155 +msgid "[`analyze_spectrum`](analyze_spectrum.md) — Frequency-domain metrics" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:156 +msgid "[`fit_static_nonlin`](fit_static_nonlin.md) — Extract k2/k3 coefficients" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:158 +msgid "References" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:160 +msgid "IEEE Std 1057-2017, \"IEEE Standard for Digitizing Waveform Recorders\"" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_polar.md:161 +msgid "" +"R. Schreier and G. C. Temes, \"Understanding Delta-Sigma Data " +"Converters,\" Wiley-IEEE Press, 2005" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_decomposition_time.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_decomposition_time.po new file mode 100644 index 0000000..5e137a7 --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_decomposition_time.po @@ -0,0 +1,138 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/algorithms/analyze_decomposition_time.md:1 +msgid "analyze_decomposition_time" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:3 +msgid "Overview" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:5 +msgid "" +"`analyze_decomposition_time` performs time-domain harmonic decomposition " +"of ADC output, separating the fundamental from harmonic distortion " +"components. This reveals the temporal structure of nonlinearity." +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:7 +msgid "Syntax" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:20 +msgid "Parameters" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:22 +msgid "**`signal`** (array_like) — Input ADC signal" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:23 +msgid "**`fs`** (float) — Sampling frequency in Hz" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:24 +msgid "**`harmonic`** (int, default=5) — Number of harmonics to decompose" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:25 +msgid "**`show_plot`** (bool, default=False) — Display decomposition plot" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:26 +msgid "**`ax`** (matplotlib axis, optional) — Axis for plotting" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:28 +msgid "Returns" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:30 +msgid "Dictionary containing:" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:31 +msgid "**`fundamental`** — Fundamental component (time domain)" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:32 +msgid "**`harmonics`** — List of harmonic components" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:33 +msgid "**`residual`** — Remaining error (noise + distortion)" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:34 +msgid "**`harmonic_amplitudes`** — Amplitude of each harmonic" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:35 +msgid "**`harmonic_phases`** — Phase of each harmonic" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:37 +msgid "Algorithm" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:52 +msgid "Use Cases" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:54 +msgid "Visualize harmonic distortion in time domain" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:55 +msgid "Understand nonlinearity structure (2nd vs. 3rd order)" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:56 +msgid "Compare with polar decomposition for phase insights" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:58 +msgid "See Also" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:60 +msgid "" +"[`analyze_decomposition_polar`](../api/aout.rst) — Polar visualization of" +" decomposition" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:61 +msgid "[`fit_sine_4param`](fit_sine_4param.md) — Core sine fitting algorithm" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:62 +msgid "[`analyze_spectrum`](analyze_spectrum.md) — Frequency-domain view" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:64 +msgid "References" +msgstr "" + +#: ../../source/algorithms/analyze_decomposition_time.md:66 +msgid "IEEE Std 1057-2017, \"IEEE Standard for Digitizing Waveform Recorders\"" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_error_autocorr.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_error_autocorr.po new file mode 100644 index 0000000..2304282 --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_error_autocorr.po @@ -0,0 +1,175 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/algorithms/analyze_error_autocorr.md:1 +msgid "analyze_error_autocorr" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:3 +msgid "Overview" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:5 +msgid "" +"`analyze_error_autocorr` computes the autocorrelation of ADC errors to " +"reveal temporal patterns. White noise has zero autocorrelation at all " +"lags; correlated errors indicate memory effects, settling issues, or " +"periodic disturbances." +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:7 +msgid "Syntax" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:19 +msgid "Parameters" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:21 +msgid "**`signal`** (array_like) — Input ADC signal" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:22 +msgid "**`max_lag`** (int, default=100) — Maximum lag for autocorrelation" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:23 +msgid "**`resolution`** (int, optional) — ADC resolution in bits" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:24 +msgid "**`show_plot`** (bool, default=False) — Display autocorrelation plot" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:25 +msgid "**`ax`** (matplotlib axis, optional) — Axis for plotting" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:27 +msgid "Returns" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:29 +msgid "Dictionary containing:" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:30 +msgid "**`autocorr`** — Autocorrelation values" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:31 +msgid "**`lags`** — Lag values" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:32 +msgid "**`error`** — Error signal used" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:34 +msgid "Interpretation" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md +msgid "Autocorrelation Pattern" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md +msgid "Likely Cause" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md +msgid "**Peak at lag=0 only**" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md +msgid "White noise (ideal)" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md +msgid "**Decay over few samples**" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md +msgid "Low-pass filtering, bandwidth limit" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md +msgid "**Periodic peaks**" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md +msgid "Switching artifacts, clock coupling" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md +msgid "**Slow decay**" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md +msgid "1/f noise, drift" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:43 +msgid "Use Cases" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:45 +msgid "Distinguish white noise from colored noise" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:46 +msgid "Detect memory effects in pipelined ADCs" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:47 +msgid "Identify periodic disturbances" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:49 +msgid "See Also" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:51 +msgid "[`analyze_error_pdf`](analyze_error_pdf.md) — Error distribution" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:52 +msgid "" +"[`analyze_error_spectrum`](analyze_error_spectrum.md) — Frequency domain " +"view" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:53 +msgid "" +"[`analyze_error_envelope_spectrum`](analyze_error_envelope_spectrum.md) —" +" AM modulation" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:55 +msgid "References" +msgstr "" + +#: ../../source/algorithms/analyze_error_autocorr.md:57 +msgid "" +"B. Razavi, \"Principles of Data Conversion System Design,\" IEEE Press, " +"1995" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_error_by_phase.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_error_by_phase.po new file mode 100644 index 0000000..bdad62e --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_error_by_phase.po @@ -0,0 +1,428 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/algorithms/analyze_error_by_phase.md:1 +msgid "analyze_error_by_phase" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:3 +msgid "Overview" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:5 +msgid "" +"`analyze_error_by_phase` performs AM/PM (Amplitude Modulation / Phase " +"Modulation) decomposition of ADC errors as a function of the input signal" +" phase. This reveals whether errors are signal-dependent and whether they" +" modulate the amplitude (AM) or timing/phase (PM) of the signal." +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:7 +msgid "Syntax" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:24 +msgid "Parameters" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:26 +msgid "**`signal`** (array_like) — Input ADC signal (sine wave excitation)" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:27 +msgid "" +"**`norm_freq`** (float, optional) — Normalized frequency (f/fs), range " +"(0, 0.5)" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:28 +msgid "If None: auto-detected via FFT" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:29 +msgid "**`n_bins`** (int, default=100) — Number of phase bins for visualization" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:30 +msgid "" +"**`include_base_noise`** (bool, default=True) — Include base noise term " +"in fitting" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:31 +msgid "**`show_plot`** (bool, default=True) — Display error vs. phase plot" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:32 +msgid "" +"**`axes`** (tuple, optional) — Tuple of (ax1, ax2) for top and bottom " +"panels" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:33 +msgid "**`ax`** (matplotlib axis, optional) — Single axis to split into 2 panels" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:34 +msgid "**`title`** (str, optional) — Test setup description for title" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:36 +msgid "Returns" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:38 +msgid "Dictionary containing:" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:40 +msgid "**Numerical Results:**" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:41 +msgid "**`am_noise_rms_v`** — AM noise RMS (amplitude modulation)" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:42 +msgid "**`pm_noise_rms_v`** — PM noise RMS in voltage units" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:43 +msgid "**`pm_noise_rms_rad`** — PM noise RMS in radians" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:44 +msgid "**`base_noise_rms_v`** — Base noise RMS (signal-independent)" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:45 +msgid "**`total_rms_v`** — Total error RMS" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:47 +msgid "**Validation Metrics:**" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:48 +msgid "**`r_squared_raw`** — R² for raw data fit (energy ratio)" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:49 +msgid "**`r_squared_binned`** — R² for binned data (model confidence)" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:51 +msgid "**Visualization Data:**" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:52 +msgid "**`bin_error_rms_v`** — RMS error per phase bin" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:53 +msgid "**`bin_error_mean_v`** — Mean error per phase bin" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:54 +msgid "**`phase_bin_centers_rad`** — Phase bin centers (radians)" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:56 +msgid "**Metadata:**" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:57 +msgid "" +"**`amplitude`**, **`dc_offset`**, **`norm_freq`** — Fitted signal " +"parameters" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:58 +msgid "**`fitted_signal`**, **`error`**, **`phase`** — Signal decomposition" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:60 +msgid "Algorithm" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:62 +msgid "AM/PM Model" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:64 +msgid "Error is decomposed as:" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:69 +msgid "where:" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:70 +msgid "**AM**: Amplitude modulation error (gain variation with signal level)" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:71 +msgid "**PM**: Phase modulation error (timing jitter, settling errors)" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:72 +msgid "**base_noise**: Signal-independent noise" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:73 +msgid "**φ**: Signal phase" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:75 +msgid "Dual-Track Analysis" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:77 +msgid "" +"**Path A (Raw)**: Fit all N samples → highest precision AM/PM values " +"**Path B (Binned)**: Compute binned statistics → visualization" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:80 +msgid "Cross-validation: Path A coefficients predict Path B trend → R² metric" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:82 +msgid "Examples" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:84 +msgid "Example 1: AM/PM Decomposition" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:100 +msgid "Example 2: Identify Dominant Error Mechanism" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:119 +msgid "Example 3: Compare Multiple Conditions" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md +#: ../../source/algorithms/analyze_error_by_phase.md:142 +msgid "Interpretation" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:144 +msgid "Error Type Classification" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md +msgid "Dominant Component" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md +msgid "Likely Cause" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md +msgid "**AM dominant**" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md +msgid "" +"Gain error, amplitude-dependent distortion, residue amplifier gain " +"variation" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md +msgid "**PM dominant**" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md +msgid "Clock jitter, timing errors, settling time issues" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md +msgid "**Base noise dominant**" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md +msgid "Thermal noise, quantization noise (signal-independent)" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md +msgid "**AM ≈ PM**" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md +msgid "Mixed analog impairments" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:153 +msgid "Phase Pattern Analysis" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md +msgid "Error vs. Phase Pattern" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md +msgid "**Sinusoidal (AM-like)**" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md +msgid "Amplitude-dependent error" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md +msgid "**Cosinusoidal (PM-like)**" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md +msgid "Timing/phase-dependent error" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md +msgid "**Flat (uniform)**" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md +msgid "Signal-independent noise" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md +msgid "**Complex shape**" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md +msgid "Multiple error mechanisms" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:162 +msgid "R² Interpretation" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:164 +msgid "**R² > 0.9**: Model fits well, errors are signal-dependent" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:165 +msgid "**0.5 < R² < 0.9**: Moderate signal dependence" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:166 +msgid "**R² < 0.5**: Errors mostly signal-independent (random noise)" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:168 +msgid "Use Cases" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:170 +msgid "**Distinguish jitter from amplitude errors**" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:171 +msgid "**Identify memory effects** in pipelined ADCs" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:172 +msgid "**Validate settling time** in SAR ADCs" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:173 +msgid "**Characterize residue amplifier** gain variations" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:174 +msgid "**Debug clock quality** (PM noise indicates jitter)" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:176 +msgid "Common Patterns" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:178 +msgid "Pipelined ADC" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:179 +msgid "High AM → Residue amplifier gain error" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:180 +msgid "High PM → Inadequate settling time" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:182 +msgid "SAR ADC" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:183 +msgid "High AM → DAC mismatch, reference variation" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:184 +msgid "High PM → Comparator metastability" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:186 +msgid "Flash ADC" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:187 +msgid "Low AM, low PM → Good performance" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:188 +msgid "High base noise → Comparator noise" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:190 +msgid "See Also" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:192 +msgid "[`analyze_error_by_value`](analyze_error_by_value.md) — Error vs. ADC code" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:193 +msgid "[`analyze_error_pdf`](analyze_error_pdf.md) — Error distribution" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:194 +msgid "" +"[`analyze_error_autocorr`](analyze_error_autocorr.md) — Temporal " +"correlation" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:196 +msgid "References" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:198 +msgid "" +"IEEE Std 1241-2010, \"IEEE Standard for Terminology and Test Methods for " +"ADCs\"" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_phase.md:199 +msgid "" +"M. Soudan et al., \"A Novel AM-PM-Jitter Decomposition Method for " +"Characterizing ADC Nonidealities,\" IEEE Trans. IM, 2008" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_error_by_value.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_error_by_value.po new file mode 100644 index 0000000..446a30d --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_error_by_value.po @@ -0,0 +1,122 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/algorithms/analyze_error_by_value.md:1 +msgid "analyze_error_by_value" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:3 +msgid "Overview" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:5 +msgid "" +"`analyze_error_by_value` rearranges ADC errors by their corresponding " +"output codes, revealing code-dependent patterns like DNL-related errors, " +"missing codes, and systematic nonlinearity." +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:7 +msgid "Syntax" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:19 +msgid "Parameters" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:21 +msgid "**`signal`** (array_like) — Input ADC signal (sine wave excitation)" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:22 +msgid "**`resolution`** (int, optional) — ADC resolution in bits" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:23 +msgid "**`show_plot`** (bool, default=False) — Display error vs. code plot" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:24 +msgid "**`ax`** (matplotlib axis, optional) — Axis for plotting" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:26 +msgid "Returns" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:28 +msgid "Dictionary containing:" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:29 +msgid "**`error_by_code`** — Errors grouped by ADC code" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:30 +msgid "**`codes`** — Unique code values" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:31 +msgid "**`mean_error`** — Mean error per code" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:32 +msgid "**`std_error`** — Standard deviation per code" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:34 +msgid "Use Cases" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:36 +msgid "Identify code-dependent errors (DNL, missing codes)" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:37 +msgid "Reveal systematic nonlinearity patterns" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:38 +msgid "Validate calibration effectiveness" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:40 +msgid "See Also" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:42 +msgid "[`analyze_error_by_phase`](../api/aout.rst) — Error vs. signal phase" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:43 +msgid "[`analyze_inl_from_sine`](analyze_inl_from_sine.md) — INL/DNL analysis" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:45 +msgid "References" +msgstr "" + +#: ../../source/algorithms/analyze_error_by_value.md:47 +msgid "" +"IEEE Std 1241-2010, \"IEEE Standard for Terminology and Test Methods for " +"ADCs\"" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_error_envelope_spectrum.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_error_envelope_spectrum.po new file mode 100644 index 0000000..725ef9b --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_error_envelope_spectrum.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:1 +msgid "analyze_error_envelope_spectrum" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:3 +msgid "Overview" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:5 +msgid "" +"`analyze_error_envelope_spectrum` analyzes the envelope spectrum of ADC " +"errors to detect amplitude modulation (AM) patterns. This reveals signal-" +"dependent errors that modulate with the input amplitude." +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:7 +msgid "Syntax" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:19 +msgid "Parameters" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:21 +msgid "**`signal`** (array_like) — Input ADC signal" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:22 +msgid "**`fs`** (float) — Sampling frequency in Hz" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:23 +msgid "**`resolution`** (int, optional) — ADC resolution in bits" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:24 +msgid "**`show_plot`** (bool, default=False) — Display envelope spectrum" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:25 +msgid "**`ax`** (matplotlib axis, optional) — Axis for plotting" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:27 +msgid "Returns" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:29 +msgid "Dictionary containing:" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:30 +msgid "**`envelope_spectrum`** — Envelope spectrum magnitude" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:31 +msgid "**`envelope_freq`** — Frequency bins for envelope" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:32 +msgid "**`error`** — Error signal" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:33 +msgid "**`envelope`** — Extracted envelope" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:35 +msgid "Interpretation" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md +msgid "Envelope Spectrum" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md +msgid "Likely Cause" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md +msgid "**DC component only**" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md +msgid "Signal-independent error (no AM)" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md +msgid "**Peak at 2×Fin**" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md +msgid "Memory effect, residue amplifier gain error" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md +msgid "**Peak at Fin**" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md +msgid "Asymmetric nonlinearity" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md +msgid "**Multiple peaks**" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md +msgid "Complex memory effects" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:44 +msgid "Use Cases" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:46 +msgid "Detect memory effects in pipelined/SAR ADCs" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:47 +msgid "Identify signal-dependent settling errors" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:48 +msgid "Reveal gain errors in residue amplifiers" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:50 +msgid "See Also" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:52 +msgid "" +"[`analyze_error_autocorr`](analyze_error_autocorr.md) — Time-domain " +"correlation" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:53 +msgid "" +"[`analyze_error_spectrum`](analyze_error_spectrum.md) — Direct error " +"spectrum" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:54 +msgid "" +"[`analyze_decomposition_time`](analyze_decomposition_time.md) — Harmonic " +"decomposition" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:56 +msgid "References" +msgstr "" + +#: ../../source/algorithms/analyze_error_envelope_spectrum.md:58 +msgid "" +"M. Mishali et al., \"Automatic Testing of Pipelined ADCs,\" Proc. IEEE " +"Int. Test Conf., 2007" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_error_pdf.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_error_pdf.po new file mode 100644 index 0000000..59bc48d --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_error_pdf.po @@ -0,0 +1,273 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/algorithms/analyze_error_pdf.md:1 +msgid "analyze_error_pdf" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:3 +msgid "Overview" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:5 +msgid "" +"`analyze_error_pdf` analyzes the probability distribution (PDF) of ADC " +"errors by comparing the input signal against a fitted sine wave. This " +"reveals error characteristics: Gaussian noise, uniform quantization, non-" +"Gaussian distortion, etc." +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:7 +msgid "Syntax" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:19 +msgid "Parameters" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:21 +msgid "**`signal`** (array_like) — Input ADC signal (sine wave excitation)" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:22 +msgid "**`resolution`** (int, optional) — ADC resolution in bits" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:23 +msgid "**`bins`** (int, default=auto) — Number of histogram bins" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:24 +msgid "" +"**`show_plot`** (bool, default=False) — Display PDF plot with reference " +"distributions" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:25 +msgid "**`ax`** (matplotlib axis, optional) — Axis for plotting" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:27 +msgid "Returns" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:29 +msgid "Dictionary containing:" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:30 +msgid "**`error`** — Error signal (data - fitted_sine)" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:31 +msgid "**`sigma`** — Standard deviation of error (LSB)" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:32 +msgid "**`histogram_counts`** — PDF histogram counts" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:33 +msgid "**`histogram_edges`** — PDF bin edges" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:34 +msgid "" +"**`kl_divergence`** — KL divergence from Gaussian (measure of non-" +"Gaussianity)" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:36 +msgid "Algorithm" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:38 +msgid "1. Fit Sine Wave" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:46 +msgid "2. Compute Error" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:53 +msgid "3. Build Histogram" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:59 +msgid "4. Compare to References" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:61 +msgid "Compare measured PDF against:" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:62 +msgid "**Gaussian**: For thermal noise" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:63 +msgid "**Uniform**: For quantization noise" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:64 +msgid "**Other**: For specific distortions" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:66 +msgid "Examples" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:68 +msgid "Example 1: Error PDF Analysis" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:81 +msgid "Example 2: Multiple Non-Idealities" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:97 +msgid "Interpretation" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:99 +msgid "Error Distribution Shapes" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md +msgid "PDF Shape" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md +msgid "Likely Cause" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md +msgid "**Gaussian**" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md +msgid "Thermal noise (random, white)" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md +msgid "**Uniform**" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md +msgid "Quantization noise (ideal ADC)" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md +msgid "**Bimodal**" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md +msgid "Missing codes, DNL issues" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md +msgid "**Heavy tails**" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md +msgid "Impulsive noise, glitches" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md +msgid "**Asymmetric**" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md +msgid "Systematic offset, drift" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:109 +msgid "KL Divergence" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:111 +msgid "**KL < 0.1**: Very close to Gaussian (thermal noise dominant)" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:112 +msgid "**0.1 < KL < 0.5**: Moderately Gaussian" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:113 +msgid "**KL > 0.5**: Non-Gaussian (distortion, deterministic errors)" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:115 +msgid "Use Cases" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:117 +msgid "Distinguish thermal noise from quantization noise" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:118 +msgid "Identify non-Gaussian error sources (glitches, interference)" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:119 +msgid "Validate ADC noise models" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:120 +msgid "Compare error characteristics across different non-idealities" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:122 +msgid "See Also" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:124 +msgid "" +"[`analyze_error_autocorr`](analyze_error_autocorr.md) — Temporal " +"correlation in errors" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:125 +msgid "" +"[`analyze_error_spectrum`](analyze_error_spectrum.md) — Frequency content" +" of errors" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:126 +msgid "[`fit_sine_4param`](fit_sine_4param.md) — Sine wave fitting" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:128 +msgid "References" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:130 +msgid "" +"IEEE Std 1241-2010, \"IEEE Standard for Terminology and Test Methods for " +"ADCs\"" +msgstr "" + +#: ../../source/algorithms/analyze_error_pdf.md:131 +msgid "" +"S. Kullback and R. A. Leibler, \"On Information and Sufficiency,\" Annals" +" of Mathematical Statistics, 1951" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_error_spectrum.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_error_spectrum.po new file mode 100644 index 0000000..8c887b1 --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_error_spectrum.po @@ -0,0 +1,434 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/algorithms/analyze_error_spectrum.md:1 +msgid "analyze_error_spectrum" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:3 +msgid "Overview" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:5 +msgid "" +"`analyze_error_spectrum` computes the FFT spectrum of the ADC error " +"signal (data - fitted sine) to reveal frequency components in the error. " +"This is distinct from analyzing the signal spectrum itself—here we " +"analyze only the residual error after removing the ideal sine wave." +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:7 +msgid "Syntax" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:24 +msgid "Parameters" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:26 +msgid "**`signal`** (array_like) — Input ADC signal (sine wave excitation)" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:27 +msgid "**`fs`** (float, default=1) — Sampling frequency in Hz" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:28 +msgid "**`frequency`** (float, optional) — Normalized frequency (0-0.5)" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:29 +msgid "If None: auto-detected via FFT" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:30 +msgid "**`show_plot`** (bool, default=True) — Display error spectrum plot" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:31 +msgid "**`ax`** (matplotlib axis, optional) — Axis to plot on" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:32 +msgid "**`title`** (str, optional) — Title for the plot" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:34 +msgid "Returns" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:36 +msgid "Dictionary containing:" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:38 +msgid "**Metrics (of error signal):**" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:39 +msgid "**`enob`** — Effective Number of Bits" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:40 +msgid "**`sndr_db`** — Signal-to-Noise and Distortion Ratio (dB)" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:41 +msgid "**`sfdr_db`** — Spurious-Free Dynamic Range (dB)" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:42 +msgid "**`snr_db`** — Signal-to-Noise Ratio (dB)" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:43 +msgid "**`thd_db`** — Total Harmonic Distortion (dB)" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:44 +msgid "**`sig_pwr_dbfs`** — Signal power (dBFS)" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:45 +msgid "**`noise_floor_dbfs`** — Noise floor (dBFS)" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:47 +msgid "**Error Data:**" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:48 +msgid "**`error_signal`** — Error signal (data - fitted sine)" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:50 +msgid "Algorithm" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:68 +msgid "Key Difference from analyze_spectrum" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Function" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "What it Analyzes" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Use Case" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "**`analyze_spectrum`**" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Original signal spectrum" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Overall ADC performance (ENOB, SNR, harmonics)" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "**`analyze_error_spectrum`**" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Error signal spectrum" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Error characteristics, frequency-dependent errors" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:75 +msgid "Examples" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:77 +msgid "Example 1: Error Spectrum Analysis" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:91 +msgid "Example 2: Compare Signal vs. Error Spectra" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:113 +msgid "Example 3: Identify Frequency-Dependent Errors" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:126 +msgid "Example 4: Batch Analysis" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +#: ../../source/algorithms/analyze_error_spectrum.md:139 +msgid "Interpretation" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:141 +msgid "Error Spectrum Shape" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Spectrum Shape" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "**Flat (white)**" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Random noise (thermal, quantization)" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "**1/f shape**" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Flicker noise, drift" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "**Peaks at harmonics**" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Nonlinearity (HD2, HD3, etc.)" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "**Peaks at non-harmonics**" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Spurs (power supply, clock coupling)" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "**High at low freq**" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Offset drift, 1/f noise" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:151 +msgid "Common Error Signatures" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Peak Location" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Likely Cause" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "**DC (0 Hz)**" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Offset drift (should be minimal)" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "**f_clock**" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Clock feedthrough" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "**f_supply**" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Power supply ripple" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "**2×f_in, 3×f_in**" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Harmonic distortion" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "**f_in ± f_clock**" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Sampling artifacts" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:161 +msgid "SFDR of Error" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:163 +msgid "**Error SFDR > 80 dB**: Excellent, noise-limited" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:164 +msgid "**60 < Error SFDR < 80 dB**: Good, some distortion" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:165 +msgid "**Error SFDR < 60 dB**: Significant spurious content" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:167 +msgid "Use Cases" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:169 +msgid "**Distinguish noise from distortion** in error" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:170 +msgid "**Identify interference sources** (spurs in error spectrum)" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:171 +msgid "**Validate fitting quality** (DC component should be near zero)" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:172 +msgid "**Debug frequency-dependent errors**" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:173 +msgid "**Measure noise floor** excluding signal energy" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:175 +msgid "Comparison with Other Error Analysis" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Domain" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Shows" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Frequency" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Error frequency components" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "**`analyze_error_pdf`**" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Statistical" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Error distribution" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "**`analyze_error_autocorr`**" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Time" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Temporal correlation" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "**`analyze_error_envelope_spectrum`**" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "AM modulation in error" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "**`analyze_error_by_phase`**" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "Phase" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md +msgid "AM/PM decomposition" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:185 +msgid "See Also" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:187 +msgid "[`analyze_spectrum`](analyze_spectrum.md) — Signal spectrum (not error)" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:188 +msgid "" +"[`analyze_error_envelope_spectrum`](analyze_error_envelope_spectrum.md) —" +" Error envelope (AM detection)" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:189 +msgid "[`analyze_error_pdf`](analyze_error_pdf.md) — Error distribution" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:190 +msgid "" +"[`fit_sine_4param`](fit_sine_4param.md) — Sine fitting for error " +"extraction" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:192 +msgid "References" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:194 +msgid "" +"IEEE Std 1241-2010, \"IEEE Standard for Terminology and Test Methods for " +"ADCs\"" +msgstr "" + +#: ../../source/algorithms/analyze_error_spectrum.md:195 +msgid "" +"B. Razavi, \"Principles of Data Conversion System Design,\" IEEE Press, " +"1995" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_inl_from_sine.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_inl_from_sine.po new file mode 100644 index 0000000..86246c2 --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_inl_from_sine.po @@ -0,0 +1,411 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/algorithms/analyze_inl_from_sine.md:1 +msgid "analyze_inl_from_sine" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:3 +msgid "Overview" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:5 +msgid "" +"`analyze_inl_from_sine` computes Integral Nonlinearity (INL) and " +"Differential Nonlinearity (DNL) from sine wave histogram test using the " +"inverse cosine method. This is the Python implementation following IEEE " +"Std 1241-2010." +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:7 +msgid "Syntax" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:25 +msgid "Parameters" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:27 +msgid "**`data`** (array_like) — ADC output signal" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:28 +msgid "Analog: Float values (normalized 0-1 or full-scale voltage)" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:29 +msgid "Digital: Integer codes or float representation" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:30 +msgid "" +"**`num_bits`** (int, optional) — ADC resolution in bits. If None, " +"inferred from data range" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:31 +msgid "**`full_scale`** (float, optional) — Full-scale voltage for quantization" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:32 +msgid "If provided: codes = round(data × 2^num_bits / full_scale)" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:33 +msgid "If None: assumes normalized input (0-1 range)" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:34 +msgid "" +"**`clip_percent`** (float, default=0.01) — Fraction of code range to " +"exclude from edges (0.01 = 1%)" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:35 +msgid "Removes unreliable bins near saturation" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:36 +msgid "**`show_plot`** (bool, default=True) — Display INL/DNL plots" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:37 +msgid "" +"**`show_title`** (bool, default=True) — Show auto-generated title with " +"min/max ranges" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:38 +msgid "" +"**`col_title`** (str, optional) — Column title above DNL plot (e.g., \"N " +"= 2^10\")" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:39 +msgid "" +"**`ax`** (matplotlib axis, optional) — Axis to plot on. If None, uses " +"current axis" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:41 +msgid "Returns" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:43 +msgid "Dictionary containing:" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:45 +msgid "**`inl`** — Integral nonlinearity (LSB units)" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:46 +msgid "**`dnl`** — Differential nonlinearity (LSB units)" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:47 +msgid "**`code`** — Corresponding code values (x-axis)" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:49 +msgid "Algorithm" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:51 +msgid "1. Histogram Construction" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:61 +msgid "2. Inverse Cosine Transform" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:63 +msgid "Sine wave PDF is `p(x) ∝ 1/√(1 - x²)`, corresponding CDF:" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:70 +msgid "" +"This maps the nonlinear sine wave distribution to a linear ideal ADC " +"response." +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:72 +msgid "3. DNL Calculation" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:80 +msgid "**Units**: LSB (Least Significant Bit)" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:81 +msgid "DNL = 0: Ideal step size" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:82 +msgid "DNL = -1: Missing code" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:83 +msgid "DNL > 0: Code width > 1 LSB" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:85 +msgid "4. INL Calculation" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:91 +msgid "**Units**: LSB" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:92 +msgid "INL = 0: Ideal transfer function" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:93 +msgid "INL > 0: Output higher than ideal" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:94 +msgid "INL < 0: Output lower than ideal" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:96 +msgid "Examples" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:98 +msgid "Example 1: Basic Usage" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:112 +msgid "Example 2: Tight Clipping" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:119 +msgid "Example 3: Custom Plotting" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:130 +msgid "Example 4: Batch Analysis" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:141 +msgid "Interpretation" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:143 +msgid "DNL Analysis" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "DNL Value" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "Meaning" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "`DNL ≈ 0`" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "Ideal uniform code width" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "`DNL < -0.5`" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "Code width < 0.5 LSB → potential missing code" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "`DNL = -1`" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "Missing code (zero histogram hits)" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "`DNL > 0.5`" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "Code width > 1.5 LSB → significant nonlinearity" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:152 +msgid "INL Analysis" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "INL Value" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "ADC Quality" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "`max(|INL|) < 0.5`" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "Excellent (< 0.5 LSB error)" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "`max(|INL|) < 1.0`" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "Good (< 1 LSB error)" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "`max(|INL|) > 2.0`" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "Poor, needs calibration" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "INL shape: bow" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "Gain/offset error" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "INL shape: S-curve" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "2nd-order nonlinearity" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "INL shape: periodic" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md +msgid "Cyclic error (e.g., flash ADC)" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:163 +msgid "Limitations" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:165 +msgid "" +"**Sine wave input required**: Assumes sine wave histogram PDF `∝ 1/√(1 - " +"x²)`" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:166 +msgid "Ramp or triangle inputs require different methods" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:167 +msgid "" +"**Sufficient samples**: Requires `>> 2^N` samples for N-bit ADC " +"(typically 10× minimum)" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:168 +msgid "For 12-bit ADC: need > 40,000 samples for reliable results" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:169 +msgid "" +"**Clipping sensitive**: Edge bins unreliable due to saturation → adjust " +"`clip_percent`" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:170 +msgid "" +"**Missing codes**: DNL = -1 causes CDF discontinuities, may need special " +"handling" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:172 +msgid "Common Issues" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:174 +msgid "Low Sample Count" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:183 +msgid "Signal Clipping" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:189 +msgid "See Also" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:191 +msgid "[`fit_sine_4param`](fit_sine_4param.md) — Sine wave parameter extraction" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:192 +msgid "" +"[`calibrate_weight_sine`](calibrate_weight_sine.md) — Digital weight " +"calibration to reduce INL/DNL" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:193 +msgid "" +"[`analyze_spectrum`](analyze_spectrum.md) — Frequency-domain linearity " +"(SFDR, THD)" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:194 +msgid "" +"[`compute_inl_from_sine`](../api/aout.rst) — Core computation without " +"plotting" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:196 +msgid "References" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:198 +msgid "IEEE Std 1241-2010, Section 5.5, \"Histogram Test Method\"" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:199 +msgid "" +"J. Doernberg et al., \"Full-Speed Testing of A/D Converters,\" IEEE JSSC," +" 1984" +msgstr "" + +#: ../../source/algorithms/analyze_inl_from_sine.md:200 +msgid "" +"M. F. Wagdy and W. Ng, \"Validity of Uniform Quantization Error Model for" +" Sinusoidal Signals Without and With Dither,\" IEEE Trans. IM, 1989" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_spectrum.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_spectrum.po new file mode 100644 index 0000000..b7e5dd2 --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_spectrum.po @@ -0,0 +1,421 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/algorithms/analyze_spectrum.md:1 +msgid "analyze_spectrum" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:3 +msgid "Overview" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:5 +msgid "" +"`analyze_spectrum` performs FFT-based spectrum analysis for ADC " +"characterization, computing key metrics including ENOB, SNR, SNDR, SFDR, " +"THD, and harmonic content. This is the primary tool for frequency-domain " +"ADC performance evaluation." +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:7 +msgid "Syntax" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:28 +msgid "Parameters" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:30 +msgid "**`signal`** (array_like) — Input ADC signal (1D array)" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:31 +msgid "**`fs`** (float) — Sampling frequency in Hz" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:32 +msgid "**`harmonic`** (int, default=9) — Number of harmonics to analyze (2-20)" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:33 +msgid "" +"**`window`** (str, default='blackman') — Window function: 'rect', 'hann'," +" 'hamming', 'blackman', 'flattop'" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:34 +msgid "**`nfft`** (int, optional) — FFT length. If None, uses len(signal)" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:35 +msgid "**`num_avg`** (int, default=1) — Number of segments for averaging" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:36 +msgid "" +"**`mode`** (str, default='coherent') — Averaging mode: 'coherent' or " +"'power'" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:37 +msgid "**`show_plot`** (bool, default=False) — Display interactive spectrum plot" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:38 +msgid "**`ax`** (matplotlib axis, optional) — Axis for plotting" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:40 +msgid "Returns" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:42 +msgid "Dictionary containing:" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:44 +msgid "**Metrics:**" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:45 +msgid "**`enob`** — Effective Number of Bits" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:46 +msgid "**`snr_db`** — Signal-to-Noise Ratio (dB)" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:47 +msgid "**`sndr_db`** — Signal-to-Noise-and-Distortion Ratio (dB)" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:48 +msgid "**`sfdr_db`** — Spurious-Free Dynamic Range (dB)" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:49 +msgid "**`thd_db`** — Total Harmonic Distortion (dB)" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:50 +msgid "" +"**`sinad_db`** — Signal-to-Noise-and-Distortion (alternative name for " +"SNDR)" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:51 +msgid "**`nsd_dbfs_hz`** — Noise Spectral Density (dBFS/Hz)" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:53 +msgid "**Spectrum Data:**" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:54 +msgid "**`freq`** — Frequency bins (Hz)" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:55 +msgid "**`magnitude_db`** — Spectrum magnitude (dBFS)" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:56 +msgid "**`fundamental_bin`** — FFT bin of fundamental frequency" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:57 +msgid "**`fundamental_freq`** — Fundamental frequency (Hz)" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:58 +msgid "**`harmonic_bins`** — FFT bins of harmonics (list)" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:59 +msgid "**`harmonic_powers`** — Power of each harmonic (dB, list)" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:61 +msgid "Algorithm" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:63 +msgid "1. Signal Preprocessing" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:74 +msgid "2. FFT Computation" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:82 +msgid "3. Fundamental Detection" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:90 +msgid "4. Harmonic Identification" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:98 +msgid "5. Metric Calculation" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:118 +msgid "Examples" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:120 +msgid "Example 1: Basic Spectrum Analysis" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:142 +msgid "Example 2: With Interactive Plotting" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:149 +msgid "Example 3: Windowing Comparison" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:160 +msgid "Example 4: Coherent Averaging" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:168 +msgid "Window Function Selection" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "Window" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "ENBW*" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "Peak Side Lobe" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "Use Case" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "**rect**" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "1.0" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "-13 dB" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "Coherent signals only" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "**hann**" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "1.5" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "-32 dB" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "General purpose" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "**hamming**" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "1.36" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "-43 dB" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "Better side lobe rejection" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "**blackman**" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "1.73" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "-58 dB" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "High dynamic range (default)" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "**flattop**" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "3.77" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "-93 dB" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md +msgid "Accurate amplitude measurement" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:178 +msgid "*ENBW = Equivalent Noise Bandwidth (bins)" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:180 +msgid "Interpretation" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:182 +msgid "ENOB (Effective Number of Bits)" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:183 +msgid "**ENOB ≈ N-bit ADC**: Ideal performance" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:184 +msgid "**ENOB < N - 2**: Poor performance, investigate noise/distortion" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:185 +msgid "**ENOB > N**: Oversampling or dithering improving effective resolution" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:187 +msgid "SFDR (Spurious-Free Dynamic Range)" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:188 +msgid "**SFDR > 80 dB**: Excellent linearity" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:189 +msgid "**60 dB < SFDR < 80 dB**: Good for most applications" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:190 +msgid "**SFDR < 60 dB**: Significant spurs, check for:" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:191 +msgid "Power supply coupling" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:192 +msgid "Clock feedthrough" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:193 +msgid "Intermodulation products" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:195 +msgid "THD (Total Harmonic Distortion)" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:196 +msgid "**THD < -80 dB**: Very linear" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:197 +msgid "**-60 dB < THD < -80 dB**: Acceptable for most uses" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:198 +msgid "**THD > -60 dB**: Nonlinearity issues" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:200 +msgid "Common Issues" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:202 +msgid "Non-Coherent Sampling" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:213 +msgid "Insufficient FFT Length" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:222 +msgid "See Also" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:224 +msgid "" +"[`analyze_spectrum_polar`](analyze_spectrum_polar.md) — Polar phase " +"spectrum analysis" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:225 +msgid "" +"[`analyze_two_tone_spectrum`](analyze_two_tone_spectrum.md) — Two-tone " +"IMD testing" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:226 +msgid "" +"[`find_coherent_frequency`](../api/fundamentals.rst) — Calculate coherent" +" test frequencies" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:228 +msgid "References" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:230 +msgid "" +"IEEE Std 1241-2010, \"IEEE Standard for Terminology and Test Methods for " +"ADCs\"" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:231 +msgid "" +"F. J. Harris, \"On the Use of Windows for Harmonic Analysis with the " +"DFT,\" Proc. IEEE, 1978" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum.md:232 +msgid "Application Note AN-9675, \"Coherent Sampling Calculator,\" Analog Devices" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_spectrum_polar.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_spectrum_polar.po new file mode 100644 index 0000000..53dd03a --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_spectrum_polar.po @@ -0,0 +1,149 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/algorithms/analyze_spectrum_polar.md:1 +msgid "analyze_spectrum_polar" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:3 +msgid "Overview" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:5 +msgid "" +"`analyze_spectrum_polar` performs FFT-based spectrum analysis with polar " +"(phase) visualization. This tool is particularly useful for " +"distinguishing between noise (random phase) and deterministic distortion " +"(coherent phase)." +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:7 +msgid "Syntax" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:20 +msgid "Parameters" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:22 +msgid "**`signal`** (array_like) — Input ADC signal" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:23 +msgid "**`fs`** (float) — Sampling frequency in Hz" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:24 +msgid "**`harmonic`** (int, default=9) — Number of harmonics to analyze" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:25 +msgid "**`window`** (str, default='blackman') — Window function" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:26 +msgid "**`nfft`** (int, optional) — FFT length" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:27 +msgid "**`show_plot`** (bool, default=False) — Display polar plot" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:28 +msgid "**`ax`** (matplotlib axis, optional) — Axis for plotting" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:30 +msgid "Returns" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:32 +msgid "Dictionary containing spectrum metrics (same as `analyze_spectrum`) plus:" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:33 +msgid "**`phase`** — Phase spectrum in radians" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:34 +msgid "**`phase_unwrapped`** — Unwrapped phase for easier analysis" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:36 +msgid "Key Features" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:38 +msgid "" +"**Polar visualization**: Magnitude vs. phase plot reveals noise vs. " +"distortion" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:39 +msgid "" +"**Phase coherence**: Deterministic signals have fixed phase, noise has " +"random phase" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:40 +msgid "**Memory effects**: Phase deviations indicate signal-dependent errors" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:42 +msgid "Use Cases" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:44 +msgid "Distinguish thermal noise from harmonic distortion" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:45 +msgid "Identify memory effects in pipelined ADCs" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:46 +msgid "Analyze settling errors and inter-symbol interference" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:48 +msgid "See Also" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:50 +msgid "[`analyze_spectrum`](analyze_spectrum.md) — Standard spectrum analysis" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:51 +msgid "" +"[`analyze_two_tone_spectrum`](analyze_two_tone_spectrum.md) — Two-tone " +"testing" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:53 +msgid "References" +msgstr "" + +#: ../../source/algorithms/analyze_spectrum_polar.md:55 +msgid "" +"IEEE Std 1241-2010, \"IEEE Standard for Terminology and Test Methods for " +"ADCs\"" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_two_tone_spectrum.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_two_tone_spectrum.po new file mode 100644 index 0000000..bc91f8f --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/analyze_two_tone_spectrum.po @@ -0,0 +1,237 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:1 +msgid "analyze_two_tone_spectrum" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:3 +msgid "Overview" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:5 +msgid "" +"`analyze_two_tone_spectrum` performs two-tone spectrum analysis for ADC " +"characterization, measuring intermodulation distortion (IMD2, IMD3) and " +"two-tone SFDR. This is essential for evaluating ADC linearity with multi-" +"signal inputs." +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:7 +msgid "Syntax" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:19 +msgid "Parameters" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:21 +msgid "**`signal`** (array_like) — Input two-tone signal" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:22 +msgid "**`fs`** (float) — Sampling frequency in Hz" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:23 +msgid "**`window`** (str, default='blackman') — Window function" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:24 +msgid "**`nfft`** (int, optional) — FFT length" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:25 +msgid "**`show_plot`** (bool, default=False) — Display spectrum plot" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:26 +msgid "**`ax`** (matplotlib axis, optional) — Axis for plotting" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:28 +msgid "Returns" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:30 +msgid "Dictionary containing:" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:32 +msgid "**Two-Tone Metrics:**" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:33 +msgid "**`imd2_db`** — 2nd-order intermodulation distortion (dB)" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:34 +msgid "**`imd3_db`** — 3rd-order intermodulation distortion (dB)" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:35 +msgid "**`imd2_freq`** — IMD2 product frequencies (Hz)" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:36 +msgid "**`imd3_freq`** — IMD3 product frequencies (Hz)" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:37 +msgid "**`sfdr_two_tone_db`** — Spurious-free dynamic range for two-tone" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:39 +msgid "**Tone Information:**" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:40 +msgid "**`tone1_freq`**, **`tone2_freq`** — Fundamental frequencies" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:41 +msgid "**`tone1_power_db`**, **`tone2_power_db`** — Tone powers" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:43 +msgid "Algorithm" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:45 +msgid "Intermodulation Products" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:47 +msgid "For tones at f₁ and f₂:" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:49 +msgid "**IMD2**: Products at f₁±f₂" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:50 +msgid "**IMD3**: Products at 2f₁-f₂ and 2f₂-f₁" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:65 +msgid "Examples" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:67 +msgid "Example 1: Two-Tone Analysis" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:88 +msgid "Interpretation" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:90 +msgid "IMD Performance" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md +msgid "IMD Level" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md +msgid "ADC Quality" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md +msgid "IMD3 < -80 dBc" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md +msgid "Excellent linearity" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md +msgid "-60 < IMD3 < -80 dBc" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md +msgid "Good performance" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md +msgid "IMD3 > -60 dBc" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md +msgid "Significant nonlinearity" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:98 +msgid "Common Issues" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:100 +msgid "**IMD2 dominant**: Even-order nonlinearity (differential pair mismatch)" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:101 +msgid "**IMD3 dominant**: Odd-order nonlinearity (compression, limiting)" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:102 +msgid "**High IMD products**: Check for:" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:103 +msgid "Insufficient signal amplitude" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:104 +msgid "ADC overload/clipping" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:105 +msgid "Poor power supply rejection" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:107 +msgid "See Also" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:109 +msgid "[`analyze_spectrum`](analyze_spectrum.md) — Single-tone analysis" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:110 +msgid "[`fit_static_nonlin`](../api/aout.rst) — Extract nonlinearity coefficients" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:112 +msgid "References" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:114 +msgid "" +"IEEE Std 1241-2010, \"IEEE Standard for Terminology and Test Methods for " +"ADCs\"" +msgstr "" + +#: ../../source/algorithms/analyze_two_tone_spectrum.md:115 +msgid "" +"Application Note AN-742, \"Frequency Domain Response of Switched-" +"Capacitor ADCs,\" Analog Devices" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/calibrate_weight_sine.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/calibrate_weight_sine.po new file mode 100644 index 0000000..15fc77e --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/calibrate_weight_sine.po @@ -0,0 +1,1074 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/algorithms/calibrate_weight_sine.md:1 +msgid "calibrate_weight_sine" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:3 +msgid "Overview" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:5 +msgid "" +"`calibrate_weight_sine` provides comprehensive, production-ready ADC " +"foreground calibration using sinewave input. This is the full-featured " +"version supporting automatic frequency search, rank deficiency handling, " +"harmonic rejection, and multi-dataset calibration." +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:7 +msgid "**Key Features:**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:8 +msgid "✅ Automatic frequency search with coarse and fine refinement" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:9 +msgid "✅ Rank deficiency handling for redundant ADC architectures" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:10 +msgid "✅ Harmonic rejection to exclude distortion" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:11 +msgid "✅ Multi-dataset calibration for time-interleaved ADCs" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:12 +msgid "✅ Numerical conditioning for robust convergence" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:13 +msgid "✅ Comprehensive diagnostics (SNDR, ENOB, error signals)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:15 +msgid "Syntax" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:37 +msgid "Parameters" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:39 +msgid "**`bits`** (ndarray or list of ndarrays) — Binary data matrix" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:40 +msgid "Single dataset: (N samples × M bits) ndarray" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:41 +msgid "Multi-dataset: list of ndarrays for time-interleaved ADCs" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:42 +msgid "Each row is one sample, each column is a bit (MSB first)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:44 +msgid "" +"**`freq`** (float, array, or None, optional) — Normalized frequency (f_in" +" / f_s)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:45 +msgid "`None`: Automatic frequency search (default)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:46 +msgid "`float`: Single frequency for all datasets" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:47 +msgid "`array`: Per-dataset frequencies for multi-dataset mode" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:49 +msgid "" +"**`force_search`** (bool, optional) — Force fine frequency search even " +"when frequency is provided" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:50 +msgid "Default: `False`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:51 +msgid "Set to `True` to refine provided frequencies" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:53 +msgid "" +"**`nominal_weights`** (array, optional) — Nominal bit weights (only " +"effective when rank is deficient)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:54 +msgid "Default: `[2^(M-1), 2^(M-2), ..., 2, 1]`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:55 +msgid "Required for redundant ADCs (e.g., `[128, 128, 64, ...]`)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:57 +msgid "" +"**`harmonic_order`** (int, optional) — Number of harmonic terms to " +"exclude in calibration" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:58 +msgid "Default: `1` (fundamental only, no harmonic exclusion)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:59 +msgid "Higher values exclude more harmonics from error term" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:60 +msgid "Example: `harmonic_order=3` excludes 1st, 2nd, 3rd harmonics" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:62 +msgid "" +"**`learning_rate`** (float, optional) — Adaptive learning rate for " +"frequency updates" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:63 +msgid "Default: `0.5`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:64 +msgid "Range: `0 < learning_rate < 1`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:65 +msgid "Lower values = more conservative convergence" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:67 +msgid "**`reltol`** (float, optional) — Relative error tolerance for convergence" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:68 +msgid "Default: `1e-12`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:70 +msgid "" +"**`max_iter`** (int, optional) — Maximum iterations for fine frequency " +"search" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:71 +msgid "Default: `100`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:73 +msgid "**`verbose`** (int, optional) — Print verbosity level" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:74 +msgid "`0`: Silent (default)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:75 +msgid "`1`: Basic progress" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:76 +msgid "`2`: Detailed diagnostics" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:78 +msgid "Returns" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:80 +msgid "Dictionary with keys:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:82 +msgid "" +"**`weight`** (ndarray) — Calibrated bit weights, normalized by sinewave " +"magnitude" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:83 +msgid "Length: M (bit width)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:84 +msgid "Normalized so max weight ≈ 1.0" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:86 +msgid "**`offset`** (float or ndarray) — Calibrated DC offset(s)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:87 +#: ../../source/algorithms/calibrate_weight_sine.md:103 +msgid "Single value for single dataset" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:88 +#: ../../source/algorithms/calibrate_weight_sine.md:104 +msgid "Array for multi-dataset" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:90 +msgid "**`calibrated_signal`** (ndarray or list) — Signal after calibration" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:91 +#: ../../source/algorithms/calibrate_weight_sine.md:95 +msgid "Single array for single dataset" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:92 +#: ../../source/algorithms/calibrate_weight_sine.md:96 +msgid "List of arrays for multi-dataset" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:94 +msgid "" +"**`ideal`** (ndarray or list) — Best fitted sinewave (excluding harmonics" +" > H)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:98 +msgid "**`error`** (ndarray or list) — Residue errors after calibration" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:99 +msgid "error = calibrated_signal - ideal" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:100 +msgid "Excludes distortion harmonics" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:102 +msgid "" +"**`refined_frequency`** (float or ndarray) — Refined frequency from " +"calibration" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:106 +msgid "**`snr_db`** (float or ndarray) — Signal-to-noise ratio in dB" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:108 +msgid "**`enob`** (float or ndarray) — Effective number of bits" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:109 +msgid "Calculated as: `(snr_db - 1.76) / 6.02`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:111 +msgid "Algorithm" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:113 +msgid "Modular Pipeline (8 Stages)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:121 +msgid "Each stage is implemented as a separate helper function." +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:123 +msgid "Mathematical Model" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:125 +msgid "The ADC output with harmonic rejection is modeled as:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:132 +msgid "where:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:133 +msgid "`y(n)` = reconstructed analog signal" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:134 +msgid "`w_i` = weight of bit i (unknown)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:135 +#, python-brace-format +msgid "`b_i(n) ∈ {0, 1}` = binary value of bit i" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:136 +msgid "`f` = normalized frequency" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:137 +msgid "`H` = harmonic order" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:138 +msgid "`A_k, B_k` = amplitude coefficients for harmonic k" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:139 +msgid "`C` = DC offset" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:141 +msgid "Dual-Basis Least Squares" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:143 +msgid "" +"Unlike the lite version, the full algorithm tries **both** basis " +"assumptions:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:145 +msgid "**Cosine Basis** (A_1 = 1):" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:150 +msgid "**Sine Basis** (B_1 = 1):" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:155 +msgid "" +"The algorithm solves both and selects the one with **lower residual " +"error**." +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:157 +msgid "Rank Deficiency Handling" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:159 +msgid "" +"For redundant ADCs (e.g., weights `[128, 128, 64, ...]`), the bit matrix " +"has rank deficiency. The algorithm:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:161 +msgid "**Identifies redundant columns** — Bits with identical patterns" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:162 +#, python-brace-format +msgid "**Groups identical bits** — `{b_i, b_j}` if `b_i(n) = b_j(n)` for all n" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:163 +msgid "**Solves reduced system** — One representative per group" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:164 +msgid "**Distributes weights** using nominal weights:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:170 +msgid "**Example:**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:171 +msgid "Redundant bits: `[b_4, b_5]` both have pattern `[0,1,1,0,1,...]`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:172 +msgid "Nominal weights: `w_4^nom = 128, w_5^nom = 128`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:173 +msgid "Solved effective weight: `w_eff = 256`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:174 +msgid "Recovered weights: `w_4 = w_5 = 256 × (128/(128+128)) = 128` ✅" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:176 +msgid "**This preserves redundancy rather than collapsing it to zero!**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:178 +msgid "Frequency Search" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:180 +msgid "**Coarse Search** (when `freq=None`):" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:181 +msgid "Reconstruct signal using nominal weights: `y_nom(n) = Σ w_i^nom · b_i(n)`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:182 +msgid "Compute FFT: `Y(k) = FFT(y_nom)`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:183 +msgid "Find peak: `k_peak = argmax |Y(k)|`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:184 +msgid "Initial frequency: `f_0 = k_peak / N`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:186 +msgid "**Fine Search** (iterative refinement):" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:197 +msgid "Examples" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:199 +msgid "Example 1: Basic Calibration (Known Frequency)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:228 +msgid "Example 2: Automatic Frequency Search" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:243 +msgid "Example 3: Redundant ADC Calibration" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:277 +msgid "Example 4: Harmonic Rejection" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:293 +msgid "Example 5: Multi-Dataset Calibration (Time-Interleaved ADC)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:316 +msgid "Example 6: Forced Frequency Refinement" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:334 +msgid "Performance" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:336 +msgid "Computational Complexity" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:338 +msgid "**Time Complexity**: `O(I·N·M² + M³)`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:339 +msgid "I = number of frequency search iterations" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:340 +msgid "N = number of samples" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:341 +msgid "M = bit width" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:343 +msgid "**Space Complexity**: `O(N·M)`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:345 +msgid "**Typical Performance** (12-bit ADC, N=8192, Intel i7):" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:346 +msgid "Known frequency: ~20 ms" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:347 +msgid "Frequency search: ~50-100 ms (depends on convergence)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:348 +msgid "Multi-dataset (4 channels): ~80-150 ms" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:350 +msgid "Accuracy" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:352 +msgid "**Weight Recovery**:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:353 +msgid "Ideal conditions: Error < 10⁻⁶ LSB" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:354 +msgid "With noise (SNR > 60 dB): Error < 10⁻³ LSB" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:355 +msgid "Redundant weights: Fully preserved (both bits active)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:357 +msgid "**Frequency Estimation**:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:358 +msgid "Coarse FFT: Accuracy ≈ 1/N bins" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:359 +msgid "Fine search: Accuracy < 10⁻¹² (relative)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:361 +msgid "**ENOB Improvement**:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:362 +msgid "Binary ADC (no INL): +0.5 to +2 ENOB" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:363 +msgid "Redundant ADC: +2 to +4 ENOB (error correction)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:364 +msgid "Time-interleaved: +3 to +6 ENOB (timing skew correction)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:366 +msgid "Limitations" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:368 +msgid "Input Signal Requirements" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:370 +msgid "**Amplitude**: Input should be > -6 dBFS for stable weight recovery" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:371 +msgid "" +"**Purity**: Input signal should have low distortion (THD < -60 dB) for " +"best results" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:372 +msgid "" +"**Coherency**: For FFT-based frequency estimation, use coherent sampling " +"when possible" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:374 +msgid "Frequency Constraints" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:376 +msgid "**Nyquist**: `0 < f < 0.5` (normalized)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:377 +msgid "**Avoid DC and Nyquist**: `0.01 < f < 0.49` recommended" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:378 +msgid "" +"**Multi-tone interference**: Avoid frequencies near `k/M` where k is " +"small integer" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:380 +msgid "Convergence Issues" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:382 +msgid "Frequency search may fail to converge if:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:383 +#, python-format +msgid "Initial frequency estimate is very poor (> 10% error)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:384 +msgid "Input amplitude is too low (< -10 dBFS)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:385 +msgid "Learning rate is too aggressive (α > 0.8)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:387 +msgid "**Solutions:**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:388 +msgid "Provide better initial frequency estimate" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:389 +msgid "Reduce `learning_rate` to 0.1-0.3" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:390 +msgid "Increase `max_iter` to 200-500" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:391 +msgid "Check `verbose=2` output for convergence diagnostics" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:393 +msgid "Multi-Dataset Assumptions" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:395 +msgid "Multi-dataset calibration assumes:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:396 +msgid "All channels share same bit weights (valid for time-interleaved ADCs)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:397 +msgid "Independent offset and gain per channel" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:398 +msgid "Small timing skew between channels" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:400 +msgid "" +"For ADCs with **per-channel weight variation**, use separate single-" +"dataset calibrations." +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:402 +msgid "Comparison with Lite Version" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "Feature" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "Lite Version" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "Full Version" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "**Frequency handling**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "Known frequency only" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "Auto search + refinement" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "**Rank deficiency**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "❌ Collapses redundancy" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "✅ Preserves all weights" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "**Harmonic rejection**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "❌ No" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "✅ Configurable order" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "**Multi-dataset**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "❌ Single only" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "✅ Multiple datasets" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "**Numerical stability**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "Basic lstsq" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "Column scaling + conditioning" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "**Output**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "Weights only (ndarray)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "Full diagnostics (dict)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "**Return values**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "1 (weights)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "7 (weights, offset, signals, SNDR, ENOB, etc.)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "**Code complexity**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "~40 lines" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "~600+ lines (modular)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "**Typical runtime**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "5 ms" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md +msgid "20-100 ms" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:416 +msgid "When to Use Full Version" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:418 +msgid "✅ **Use full version when:**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:419 +msgid "Unknown or imprecise frequency" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:420 +msgid "Redundant ADC architecture" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:421 +msgid "Need comprehensive diagnostics" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:422 +msgid "Multi-dataset or time-interleaved ADCs" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:423 +msgid "Harmonic rejection required" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:424 +msgid "Production/research environments" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:426 +msgid "❌ **Use lite version when:**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:427 +msgid "Frequency precisely known" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:428 +msgid "Binary weighted ADC (no redundancy)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:429 +msgid "Speed critical (embedded systems)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:430 +msgid "Minimal code footprint needed" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:432 +msgid "Pipeline Details" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:434 +msgid "Stage 1: Input Preparation (`_prepare_input`)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:436 +msgid "**Purpose**: Normalize input to unified format and validate" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:438 +#: ../../source/algorithms/calibrate_weight_sine.md:459 +msgid "**Operations**:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:439 +msgid "Convert single array to list: `[bits]`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:440 +msgid "Validate all arrays have same bit width M" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:441 +msgid "Stack: `bits_stacked = [bits_1; bits_2; ...]`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:442 +msgid "Generate nominal weights if not provided: `w_i^nom = 2^(M-1-i)`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:444 +msgid "Stage 2: Rank Deficiency Patching (`_patch_rank_deficiency`)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:446 +msgid "**Purpose**: Detect and handle redundant bits" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:448 +msgid "**Algorithm**:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:449 +msgid "Compute column norms: `||b_i|| = sqrt(Σ b_i(n)²)`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:450 +msgid "Find identical columns: `||b_i - b_j|| < ε`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:451 +msgid "Group identical bits: `G_1, G_2, ..., G_K` where K = M_eff" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:452 +msgid "Select representatives for each group" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:453 +msgid "Compute weight ratios: `r_i = w_i^nom / Σ w_j^nom` (j in group)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:455 +msgid "Stage 3: Column Scaling (`_scale_columns_for_conditioning`)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:457 +msgid "**Purpose**: Normalize bit columns for numerical stability" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:465 +msgid "Stage 4: Frequency Estimation (`_estimate_frequencies`)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:467 +msgid "**Purpose**: Estimate or validate input frequencies" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:469 +msgid "**Logic**:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:470 +msgid "If `freq=None`: FFT-based coarse estimation for each dataset" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:471 +msgid "If `freq=scalar`: broadcast to all datasets" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:472 +msgid "If `freq=array`: validate length matches number of datasets" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:474 +msgid "Stage 5: Least Squares Solve" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:476 +msgid "**Purpose**: Solve for weights and sinewave parameters" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:478 +msgid "**Known Frequency Path**:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:479 +msgid "Build design matrix A with all harmonics" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:480 +msgid "Try both cosine and sine basis" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:481 +msgid "Solve both and select basis with lower residual" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:483 +msgid "**Frequency Search Path**:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:484 +msgid "Initialize with coarse frequency" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:485 +msgid "Loop until convergence:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:486 +msgid "Solve weights at current frequency" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:487 +msgid "Compute phase error" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:488 +msgid "Update frequency using gradient" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:489 +msgid "Check convergence" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:491 +msgid "Stage 6-8: Recovery and Post-Processing" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:493 +msgid "**Recover column scaling**: Undo normalization" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:494 +msgid "" +"**Recover rank deficiency**: Distribute effective weights to all physical" +" bits" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:495 +msgid "" +"**Post-process**: Assemble results dictionary with SNDR, ENOB, error " +"signals" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:497 +msgid "References" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:499 +msgid "" +"**IEEE Standard 1057-2017**: \"IEEE Standard for Digitizing Waveform " +"Recorders\"" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:501 +msgid "" +"Vogel, C., & Johansson, H. (2006). \"Time-interleaved analog-to-digital " +"converters: Status and future directions.\" *IEEE Transactions on " +"Circuits and Systems I*, 53(11), 2386-2394." +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:503 +msgid "" +"Jin, H., & Lee, E. K. F. (1992). \"A digital-background calibration " +"technique for minimizing timing-error effects in time-interleaved ADCs.\"" +" *IEEE Transactions on Circuits and Systems II*, 47(7), 603-613." +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:505 +msgid "" +"Le Dortz, N., et al. (2014). \"A 1.62GS/s time-interleaved SAR ADC with " +"digital background mismatch calibration achieving interleaving spurs " +"below 70dBFS.\" *ISSCC Digest of Technical Papers*, 386-387." +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:507 +msgid "MATLAB Signal Processing Toolbox: `sinefitweights` documentation" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:509 +msgid "See Also" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:511 +msgid "" +"[calibrate_weight_sine_lite](calibrate_weight_sine_lite.md) - Lightweight" +" version for embedded systems" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:512 +msgid "[analyze_spectrum](analyze_spectrum.md) - Spectral analysis for SNDR/ENOB" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine.md:513 +msgid "[fit_sine_4param](fit_sine_4param.md) - IEEE 1057 sinewave fitting" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/calibrate_weight_sine_lite.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/calibrate_weight_sine_lite.po new file mode 100644 index 0000000..e8ade43 --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/calibrate_weight_sine_lite.po @@ -0,0 +1,651 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:1 +msgid "calibrate_weight_sine_lite" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:3 +msgid "Overview" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:5 +msgid "" +"`calibrate_weight_sine_lite` provides a minimal, fast implementation of " +"ADC foreground calibration using a known-frequency sinewave input. This " +"is a simplified version of the full `calibrate_weight_sine` algorithm, " +"optimized for speed and code simplicity." +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:7 +msgid "**Key Characteristics:**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:8 +msgid "Single known-frequency calibration only (no frequency search)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:9 +msgid "Cosine-basis assumption (no dual-basis optimization)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:10 +msgid "No rank deficiency handling (binary weights only)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:11 +msgid "No harmonic rejection" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:12 +msgid "Returns normalized weights only" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:13 +msgid "Minimal dependencies (NumPy + SciPy only)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:15 +msgid "Syntax" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:24 +msgid "Parameters" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:26 +msgid "**`bits`** (ndarray) — Binary data matrix (N samples × M bits)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:27 +msgid "Each row is one sample" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:28 +msgid "Each column is a bit (MSB first)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:29 +msgid "Values must be 0 or 1" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:31 +msgid "**`freq`** (float) — Normalized frequency (f_in / f_s)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:32 +msgid "**Must be known precisely**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:33 +msgid "Range: 0 < freq < 0.5" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:35 +msgid "Returns" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:37 +msgid "**`weights`** (ndarray) — Calibrated bit weights normalized to [0, 1]" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:38 +msgid "Length M (bit width)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:39 +msgid "Normalized by sinewave magnitude" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:40 +msgid "Largest weight = 1.0" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:42 +msgid "To get actual ADC weights:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:48 +msgid "Algorithm" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:50 +msgid "Mathematical Model" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:52 +msgid "The ADC output can be modeled as:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:57 +msgid "where:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:58 +msgid "`y(n)` = reconstructed analog signal" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:59 +msgid "`w_i` = weight of bit i (unknown)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:60 +#, python-brace-format +msgid "`b_i(n) ∈ {0, 1}` = binary value of bit i at sample n" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:61 +msgid "`f` = normalized frequency (f_in/f_s)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:62 +msgid "`A, B` = sinewave amplitude coefficients" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:63 +msgid "`C` = DC offset" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:65 +msgid "Least Squares Formulation" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:67 +msgid "With the **cosine-basis assumption** (A = 1):" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:73 +msgid "In matrix form:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:85 +msgid "Algorithm Steps" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:87 +msgid "**Build Basis Functions**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:95 +msgid "**Construct Design Matrix**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:102 +msgid "**Solve Least Squares**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:107 +msgid "**Extract and Normalize Weights**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:115 +msgid "The normalization accounts for actual sinewave amplitude:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:120 +msgid "**Polarity Correction**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:126 +msgid "Examples" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:128 +msgid "Example 1: Basic Calibration" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:158 +msgid "**Expected Output:**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:164 +msgid "Example 2: With SNDR Calculation" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:186 +msgid "Limitations" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:188 +msgid "1. Known Frequency Required" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:190 +msgid "" +"The function requires the input frequency to be **precisely known**. " +"Unlike the full `calibrate_weight_sine`, it does not perform frequency " +"search or refinement." +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:192 +msgid "" +"**Workaround**: Use `calibrate_weight_sine` with `force_search=True` if " +"frequency is unknown." +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:194 +msgid "2. Binary Weights Only (No Redundancy)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:196 +msgid "" +"The algorithm **does not handle rank deficiency** or redundant weights. " +"For ADCs with:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:197 +msgid "Redundant bits (e.g., `[128, 128, 64, 32, ...]`)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:198 +msgid "Identical weights" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:199 +msgid "Linear dependencies between bits" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:201 +msgid "The least squares solution may:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:202 +msgid "Collapse redundant weights to zero" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:203 +msgid "Produce numerically unstable results" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:204 +msgid "Fail to recover the full code range" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:206 +msgid "**Example Failure:**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:218 +msgid "**Why this is wrong:**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:219 +msgid "Original sum: 4222 (can represent 0-4095 with redundancy)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:220 +msgid "Collapsed sum: 4094 (cannot represent code 4095!)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:221 +msgid "Lost error correction capability" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:223 +msgid "" +"**Workaround**: Use the full `calibrate_weight_sine` which includes " +"`_patch_rank_deficiency` handling." +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:225 +msgid "3. Low Signal Amplitude" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:227 +msgid "" +"At very low input amplitudes (< -6 dBFS), MSB bits may have limited " +"activity, leading to:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:228 +msgid "Ill-conditioned least squares matrix" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:229 +msgid "Numerically unstable weights (values in trillions)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:230 +msgid "Poor SNDR estimates" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:232 +msgid "**Example:**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:240 +msgid "" +"**Recommendation**: Use input signals at or near full scale (0 dBFS to -3" +" dBFS) for best results." +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:242 +msgid "4. No Harmonic Rejection" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:244 +msgid "" +"The algorithm fits only the **fundamental frequency**, without excluding " +"harmonics from the error term. This can lead to:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:245 +msgid "Harmonic distortion biasing the weight estimates" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:246 +msgid "Reduced accuracy for ADCs with significant INL/DNL" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:248 +msgid "" +"**Workaround**: Use `calibrate_weight_sine` with `harmonic_order > 1` to " +"exclude harmonics." +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:250 +msgid "Performance" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:252 +msgid "Computational Complexity" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:254 +msgid "**Time Complexity**: `O(N·M² + M³)`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:255 +msgid "N = number of samples" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:256 +msgid "M = bit width" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:257 +msgid "Dominated by least squares solve (SVD decomposition)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:259 +msgid "**Space Complexity**: `O(N·M)`" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:260 +msgid "Storage for design matrix" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:262 +msgid "**Typical Performance** (12-bit ADC, Intel i7):" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:263 +msgid "N = 2¹² (4096 samples): ~3 ms" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:264 +msgid "N = 2¹³ (8192 samples): ~5 ms" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:265 +msgid "N = 2¹⁶ (65536 samples): ~40 ms" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:267 +msgid "Accuracy" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:269 +msgid "**Weight Recovery** (ideal conditions):" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:270 +msgid "Error < 10⁻⁵ LSB (normalized)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:271 +msgid "Phase-independent performance" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:272 +msgid "ENOB: ~11-12 bits (for 12-bit ADC at 0 dBFS)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:274 +msgid "**Amplitude Requirements**:" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:284 +msgid "Comparison with Full Version" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "Feature" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "Lite Version" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "Full Version" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "**Frequency search**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "❌ No (requires known freq)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "✅ Yes (coarse + fine search)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "**Rank deficiency handling**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "❌ No" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "✅ Yes (via nominal weights)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "**Redundant weights**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "❌ Not supported" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "✅ Fully supported" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "**Harmonic rejection**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "✅ Yes (configurable order)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "**Multi-dataset calibration**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "✅ Yes" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "**Numerical conditioning**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "❌ Basic" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "✅ Column scaling + patching" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "**Return type**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "ndarray (weights only)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "dict (weights + diagnostics)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "**Code size**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "~40 lines" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "~600+ lines (with helpers)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "**Typical runtime** (N=8192)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "~5 ms" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md +msgid "~20-50 ms" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:298 +msgid "When to Use Lite Version" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:300 +msgid "✅ **Use lite version when:**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:301 +msgid "Frequency is precisely known" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:302 +msgid "Binary weighted ADC (no redundancy)" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:303 +msgid "Speed is critical" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:304 +msgid "Simple embedded deployment" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:305 +msgid "Minimal code footprint needed" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:307 +msgid "❌ **Use full version when:**" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:308 +msgid "Unknown or imprecise frequency" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:309 +msgid "Redundant ADC architecture" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:310 +msgid "Need harmonic rejection" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:311 +msgid "Multi-dataset calibration" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:312 +msgid "Production calibration requiring robustness" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:314 +msgid "References" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:316 +msgid "" +"IEEE Standard 1057-2017: \"IEEE Standard for Digitizing Waveform " +"Recorders\"" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:318 +msgid "" +"Vogel, C., & Johansson, H. (2006). \"Time-interleaved analog-to-digital " +"converters: Status and future directions.\" *IEEE Transactions on " +"Circuits and Systems I*, 53(11), 2386-2394." +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:320 +msgid "" +"Jin, H., & Lee, E. K. F. (1992). \"A digital-background calibration " +"technique for minimizing timing-error effects in time-interleaved ADCs.\"" +" *IEEE Transactions on Circuits and Systems II*, 47(7), 603-613." +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:322 +msgid "MATLAB Signal Processing Toolbox: `sinefitweights` documentation" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:324 +msgid "See Also" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:326 +msgid "" +"[calibrate_weight_sine](calibrate_weight_sine.md) - Full version with " +"frequency search and rank handling" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:327 +msgid "" +"[analyze_spectrum](analyze_spectrum.md) - Spectral analysis for SNDR/ENOB" +" calculation" +msgstr "" + +#: ../../source/algorithms/calibrate_weight_sine_lite.md:328 +msgid "[fit_sine_4param](fit_sine_4param.md) - IEEE 1057 sinewave fitting" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/fit_sine_4param.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/fit_sine_4param.po new file mode 100644 index 0000000..caa116b --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/fit_sine_4param.po @@ -0,0 +1,309 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/algorithms/fit_sine_4param.md:1 +msgid "fit_sine_4param" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:3 +msgid "Overview" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:5 +msgid "" +"`fit_sine_4param` fits a pure sine wave to ADC output using iterative " +"least-squares with frequency refinement. This implements the IEEE Std " +"1057/1241 algorithm for precise sinusoidal parameter estimation." +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:7 +msgid "Syntax" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:23 +msgid "Parameters" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:25 +msgid "**`data`** (array_like) — ADC output signal (1D or 2D array)" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:26 +msgid "" +"**`frequency_estimate`** (float, optional) — Initial normalized frequency" +" (0 to 0.5)" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:27 +msgid "If None: auto-detect using FFT peak with parabolic interpolation" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:28 +msgid "" +"**`max_iterations`** (int, default=1) — Number of iterations for " +"frequency refinement" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:29 +msgid "" +"**`tolerance`** (float, default=1e-9) — Convergence threshold for " +"frequency updates" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:31 +msgid "Returns" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:33 +msgid "Dictionary containing:" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:35 +msgid "**`fitted_signal`** — Reconstructed sine wave" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:36 +msgid "**`residuals`** — data - fitted_signal" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:37 +msgid "**`frequency`** — Refined normalized frequency (0 to 0.5)" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:38 +msgid "**`amplitude`** — Signal amplitude: sqrt(A² + B²)" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:39 +msgid "**`phase`** — Phase in radians: atan2(-B, A)" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:40 +msgid "**`dc_offset`** — DC component" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:41 +msgid "**`rmse`** — Root mean square error of the fit" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:43 +msgid "For 2D input, all scalar values become 1D arrays (one per column)." +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:45 +msgid "Algorithm" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:47 +msgid "1. Frequency Initialization (if not provided)" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:49 +msgid "**FFT-based coarse estimate** with 3-point parabolic interpolation:" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:59 +msgid "2. Iterative Least-Squares Refinement" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:61 +msgid "Model: **y = A·cos(ωt) + B·sin(ωt) + C**" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:63 +msgid "For each iteration:" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:65 +msgid "**Step 1**: Solve augmented least-squares system:" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:69 +msgid "where:" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:70 +msgid "`θ = 2π × freq × (0:N-1)`" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:71 +msgid "`∂/∂freq = derivative of signal w.r.t. frequency`" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:73 +msgid "**Step 2**: Update frequency:" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:78 +msgid "**Step 3**: Check convergence:" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:83 +msgid "3. Parameter Extraction" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:93 +msgid "Examples" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:95 +msgid "Example 1: Auto-Detect Frequency" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:116 +msgid "Example 2: Known Frequency" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:126 +msgid "Example 3: Tight Convergence" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:132 +msgid "Example 4: Visualize Fit Quality" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md +#: ../../source/algorithms/fit_sine_4param.md:162 +msgid "Interpretation" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md +msgid "Output" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md +msgid "`amplitude / max(data)` ≈ 0.5" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md +msgid "Full-scale sine wave input (peak-to-peak = 1)" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md +msgid "`abs(dc_offset) << amplitude`" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md +msgid "Well-centered signal" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md +msgid "`abs(dc_offset) ≈ amplitude`" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md +msgid "Large DC offset, check ADC biasing" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md +msgid "High `rmse`" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md +msgid "Distortion, harmonics, or noise present" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md +msgid "`frequency` stable after 1 iteration" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md +msgid "Good initial estimate" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:172 +msgid "Use Cases" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:174 +msgid "**Error Analysis**: Remove fitted sine to analyze distortion and noise" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:175 +msgid "" +"**Signal Characterization**: Extract amplitude, frequency, phase for " +"testing" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:176 +msgid "**Jitter Analysis**: Phase variations indicate timing jitter" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:177 +msgid "**Pre-processing**: For INL/DNL, harmonic decomposition, etc." +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:179 +msgid "Limitations" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:181 +msgid "**Single-tone only**: Assumes pure sine wave; fails with multi-tone inputs" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:182 +msgid "**No distortion modeling**: Harmonics treated as noise in residuals" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:183 +msgid "" +"**Convergence**: May fail if initial estimate is very far from true " +"frequency" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:184 +msgid "**Wraparound**: Frequency must be < 0.5 (Nyquist limit)" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:186 +msgid "See Also" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:188 +msgid "" +"[`analyze_decomposition_time`](analyze_decomposition.md) — Time-domain " +"harmonic decomposition using fitted sine" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:189 +msgid "" +"[`analyze_inl_from_sine`](analyze_inl_from_sine.md) — INL/DNL extraction " +"from sine wave" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:190 +msgid "[`analyze_error_pdf`](analyze_error_pdf.md) — Error distribution analysis" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:192 +msgid "References" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:194 +msgid "IEEE Std 1057-2017, \"IEEE Standard for Digitizing Waveform Recorders\"" +msgstr "" + +#: ../../source/algorithms/fit_sine_4param.md:195 +msgid "" +"IEEE Std 1241-2010, \"IEEE Standard for Terminology and Test Methods for " +"ADCs\"" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/fit_static_nonlin.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/fit_static_nonlin.po new file mode 100644 index 0000000..b472285 --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/fit_static_nonlin.po @@ -0,0 +1,448 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/algorithms/fit_static_nonlin.md:1 +msgid "fit_static_nonlin" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:3 +msgid "Overview" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:5 +msgid "" +"`fit_static_nonlin` extracts static nonlinearity coefficients (k2, k3) " +"from a distorted sine wave signal. This quantifies the 2nd-order and 3rd-" +"order nonlinearity of an ADC's transfer function, which are the primary " +"sources of harmonic distortion." +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:7 +msgid "Syntax" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:22 +msgid "Parameters" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:24 +msgid "**`sig_distorted`** (array_like) — Distorted sine wave signal samples" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:25 +msgid "**`order`** (int) — Polynomial order for fitting (typically 2-3)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:26 +msgid "order=2: Quadratic nonlinearity only (k2)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:27 +msgid "order=3: Quadratic + cubic nonlinearity (k2, k3)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:28 +msgid "order>3: Higher-order terms (advanced use)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:30 +msgid "Returns" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:32 +msgid "Tuple containing:" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:33 +msgid "**`k2_extracted`** (float) — Quadratic nonlinearity coefficient" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:34 +msgid "For ideal ADC: k2 = 0" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:35 +msgid "Represents 2nd-order distortion (HD2)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:36 +msgid "Returns NaN if order < 2" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:38 +msgid "**`k3_extracted`** (float) — Cubic nonlinearity coefficient" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:39 +msgid "For ideal ADC: k3 = 0" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:40 +msgid "Represents 3rd-order distortion (HD3)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:41 +msgid "Returns NaN if order < 3" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:43 +msgid "" +"**`fitted_sine`** (array) — Fitted ideal sine wave input (reference " +"signal)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:44 +msgid "Same length as sig_distorted" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:45 +msgid "This is the ideal sine extracted from distorted signal" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:47 +msgid "**`fitted_transfer`** (tuple) — Fitted transfer curve for plotting" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:48 +msgid "(x, y) where x is 1000 smooth input points, y is output" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:49 +msgid "For ideal system: y = x (straight line)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:51 +msgid "Transfer Function Model" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:53 +msgid "The ADC transfer function is modeled as:" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:59 +msgid "where:" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:60 +msgid "**x** = ideal input (zero-mean sine)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:61 +msgid "**y** = actual output (zero-mean)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:62 +msgid "**k2** = 2nd-order nonlinearity coefficient" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:63 +msgid "**k3** = 3rd-order nonlinearity coefficient" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:65 +msgid "Algorithm" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:88 +msgid "Examples" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:90 +msgid "Example 1: Extract Nonlinearity Coefficients" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:109 +msgid "Example 2: Plot Nonlinearity Curve" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:141 +msgid "Example 3: Relate Coefficients to Harmonic Distortion" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:162 +msgid "Example 4: Before/After Calibration" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +#: ../../source/algorithms/fit_static_nonlin.md:179 +msgid "Interpretation" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:181 +msgid "Coefficient Magnitude" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "Coefficient" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "Typical Range" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "**k2**" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "< 0.001" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "Excellent linearity (HD2 < -80 dBc)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "0.001 - 0.01" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "Good linearity (HD2: -60 to -80 dBc)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "> 0.01" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "Poor linearity (HD2 > -60 dBc)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "**k3**" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "< 0.0001" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "Excellent linearity (HD3 < -80 dBc)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "0.0001 - 0.001" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "Good linearity (HD3: -60 to -80 dBc)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "> 0.001" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "Poor linearity (HD3 > -60 dBc)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:192 +msgid "Coefficient Sign" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "Sign" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "Physical Meaning" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "**k2 > 0**" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "Upward curvature (compression → expansion)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "**k2 < 0**" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "Downward curvature (expansion → compression)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "**k3 > 0**" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "Positive cubic term (soft saturation)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "**k3 < 0**" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "Negative cubic term (hard limiting)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:201 +msgid "Dominant Nonlinearity" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "Condition" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "ADC Characteristic" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "**|k2| >> |k3|**" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "Even-order dominant (differential pair mismatch)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "**|k3| >> |k2|**" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "Odd-order dominant (single-ended nonlinearity)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "**|k2| ≈ |k3|**" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md +msgid "Mixed nonlinearity" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:209 +msgid "Limitations" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:211 +msgid "**Cannot extract gain error**: Sine fitting absorbs amplitude variations" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:212 +msgid "Gain calibration requires DC sweep or multi-amplitude testing" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:213 +msgid "" +"**Assumes static nonlinearity**: Dynamic effects (memory, settling) not " +"captured" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:214 +msgid "" +"**Single-tone only**: Multi-tone distortion (IMD) requires different " +"analysis" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:215 +msgid "**Numerical stability**: Order > 10 may cause ill-conditioning" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:217 +msgid "Common Issues" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:219 +msgid "High-Order Fitting (order > 5)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:228 +msgid "Interpreting NaN Results" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:239 +msgid "Use Cases" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:241 +msgid "**Characterize ADC linearity** quantitatively" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:242 +msgid "**Compare designs** (architecture, process, layout)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:243 +msgid "**Validate calibration** (before/after)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:244 +msgid "**Root cause analysis** (k2 vs k3 dominance)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:245 +msgid "**Predict harmonic distortion** from coefficients" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:247 +msgid "See Also" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:249 +msgid "" +"[`analyze_spectrum`](analyze_spectrum.md) — Measure HD2, HD3 in frequency" +" domain" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:250 +msgid "" +"[`analyze_decomposition_time`](analyze_decomposition_time.md) — Time-" +"domain harmonic extraction" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:251 +msgid "" +"[`analyze_inl_from_sine`](analyze_inl_from_sine.md) — INL/DNL (code-level" +" nonlinearity)" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:252 +msgid "" +"[`calibrate_weight_sine`](calibrate_weight_sine.md) — Calibrate to reduce" +" k2/k3" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:254 +msgid "References" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:256 +msgid "S. Max, \"Fast Accurate and Complete ADC Testing,\" Proc. IEEE ITC, 1989" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:257 +msgid "" +"J. Doernberg et al., \"Full-Speed Testing of A/D Converters,\" IEEE JSSC," +" 1984" +msgstr "" + +#: ../../source/algorithms/fit_static_nonlin.md:258 +msgid "" +"IEEE Std 1241-2010, \"IEEE Standard for Terminology and Test Methods for " +"ADCs\"" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/index.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/index.po new file mode 100644 index 0000000..d07876d --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/algorithms/index.po @@ -0,0 +1,48 @@ +# ADCToolbox 中文翻译 +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: 2026-03-10 20:52+0800\n" +"Last-Translator: ADCToolbox Contributors\n" +"Language: zh_CN\n" +"Language-Team: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/algorithms/index.rst:2 +msgid "Algorithm Documentation" +msgstr "算法文档" + +#: ../../source/algorithms/index.rst:4 +msgid "" +"This section provides detailed documentation of the algorithms and theory" +" behind ADCToolbox." +msgstr "本节详细介绍 ADCToolbox 中算法的工作原理与理论依据。" + +#: ../../source/algorithms/index.rst:12 +msgid "Fundamental Algorithms" +msgstr "基础算法" + +#: ../../source/algorithms/index.rst:20 +msgid "Spectrum Analysis Algorithms" +msgstr "频谱分析算法" + +#: ../../source/algorithms/index.rst:30 +msgid "Analog Error Analysis Algorithms" +msgstr "模拟误差分析算法" + +#: ../../source/algorithms/index.rst:47 +msgid "Digital Calibration Algorithms" +msgstr "数字校准算法" + +#: ../../source/algorithms/index.rst:55 +msgid "Oversampling Algorithms" +msgstr "过采样算法" diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/api/aout.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/api/aout.po new file mode 100644 index 0000000..58d2129 --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/api/aout.po @@ -0,0 +1,1155 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/api/aout.rst:2 +msgid "Analog Output Analysis (aout)" +msgstr "" + +#: ../../source/api/aout.rst:4 +msgid "" +"The ``aout`` module provides comprehensive tools for analyzing analog ADC" +" outputs." +msgstr "" + +#: ../../source/api/aout.rst:9 +msgid "Error Analysis by Value" +msgstr "" + +#: adctoolbox.aout.analyze_error_by_value.analyze_error_by_value:1 of +msgid "Analyze error binned by value (INL/DNL/Noise)." +msgstr "" + +#: adctoolbox.aout.analyze_decomposition_polar.analyze_decomposition_polar:3 +#: adctoolbox.aout.analyze_decomposition_time.analyze_decomposition_time:3 +#: adctoolbox.aout.analyze_error_by_value.analyze_error_by_value:3 of +msgid "Combines core computation and optional plotting." +msgstr "" + +#: ../../source/api/aout.rst +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error of +msgid "Parameters" +msgstr "" + +#: adctoolbox.aout.analyze_decomposition_polar.analyze_decomposition_polar:5 +#: adctoolbox.aout.analyze_decomposition_time.analyze_decomposition_time:5 +#: adctoolbox.aout.analyze_error_by_phase.analyze_error_by_phase:8 +#: adctoolbox.aout.analyze_error_by_value.analyze_error_by_value:5 of +msgid "Input signal (1D array)." +msgstr "" + +#: adctoolbox.aout.analyze_error_by_value.analyze_error_by_value:7 of +msgid "Normalized frequency (f/fs). If None, auto-detected." +msgstr "" + +#: adctoolbox.aout.analyze_error_by_value.analyze_error_by_value:9 of +msgid "Number of bins for analysis (x-axis resolution)." +msgstr "" + +#: adctoolbox.aout.analyze_error_by_value.analyze_error_by_value:11 of +msgid "Ratio of values to clip from edges." +msgstr "" + +#: adctoolbox.aout.analyze_error_by_value.analyze_error_by_value:13 of +msgid "Physical range mapping to bin 0 and bin (N-1)." +msgstr "" + +#: adctoolbox.aout.analyze_decomposition_polar.analyze_decomposition_polar:9 +#: adctoolbox.aout.analyze_decomposition_time.analyze_decomposition_time:11 +#: adctoolbox.aout.analyze_error_by_phase.analyze_error_by_phase:16 +#: adctoolbox.aout.analyze_error_by_value.analyze_error_by_value:15 of +msgid "Whether to display result plot." +msgstr "" + +#: adctoolbox.aout.analyze_error_by_value.analyze_error_by_value:17 of +msgid "Tuple of (ax1, ax2) to plot on." +msgstr "" + +#: adctoolbox.aout.analyze_error_by_value.analyze_error_by_value:19 of +msgid "Single axis to plot on (will be split)." +msgstr "" + +#: adctoolbox.aout.analyze_error_by_phase.analyze_error_by_phase:22 +#: adctoolbox.aout.analyze_error_by_value.analyze_error_by_value:21 +#: adctoolbox.aout.plot_rearranged_error_by_phase.plot_rearranged_error_by_phase:9 +#: adctoolbox.aout.plot_rearranged_error_by_value.plot_rearranged_error_by_value:13 +#: of +msgid "Test setup description for title." +msgstr "" + +#: ../../source/api/aout.rst +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error of +msgid "Returns" +msgstr "" + +#: adctoolbox.aout.analyze_error_by_value.analyze_error_by_value:24 of +msgid "" +"**results** -- Dictionary containing 'error_mean', 'error_rms', " +"'bin_centers', etc." +msgstr "" + +#: ../../source/api/aout.rst +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error of +msgid "Return type" +msgstr "" + +#: adctoolbox.aout.rearrange_error_by_value.rearrange_error_by_value:1 of +msgid "" +"Compute value-binned error metrics. Maps input signal linearly to [0, " +"n_bins-1]." +msgstr "" + +#: adctoolbox.aout.plot_rearranged_error_by_value.plot_rearranged_error_by_value:1 +#: of +msgid "Plot Mean Error (INL) and RMS Error (Noise) vs Bin Index." +msgstr "" + +#: adctoolbox.aout.plot_rearranged_error_by_value.plot_rearranged_error_by_value:3 +#: of +msgid "" +"Creates a comprehensive visualization showing: - Top panel: Scatter of " +"raw error vs bin index with mean error overlay - Bottom panel: RMS error " +"vs bin index as bar chart" +msgstr "" + +#: adctoolbox.aout.plot_rearranged_error_by_value.plot_rearranged_error_by_value:7 +#: of +msgid "Dictionary from rearrange_error_by_value()." +msgstr "" + +#: adctoolbox.aout.analyze_error_by_phase.analyze_error_by_phase:18 +#: adctoolbox.aout.plot_decomposition_time.plot_decomposition_time:16 +#: adctoolbox.aout.plot_rearranged_error_by_phase.plot_rearranged_error_by_phase:5 +#: adctoolbox.aout.plot_rearranged_error_by_value.plot_rearranged_error_by_value:9 +#: of +msgid "Tuple of (ax1, ax2) for top and bottom panels." +msgstr "" + +#: adctoolbox.aout.analyze_error_by_phase.analyze_error_by_phase:20 +#: adctoolbox.aout.plot_rearranged_error_by_phase.plot_rearranged_error_by_phase:7 +#: adctoolbox.aout.plot_rearranged_error_by_value.plot_rearranged_error_by_value:11 +#: of +msgid "Single axis to split into 2 panels." +msgstr "" + +#: ../../source/api/aout.rst:16 +msgid "Error Analysis by Phase" +msgstr "" + +#: adctoolbox.aout.analyze_error_by_phase.analyze_error_by_phase:1 of +msgid "Analyze phase error using AM/PM decomposition." +msgstr "" + +#: adctoolbox.aout.analyze_error_by_phase.analyze_error_by_phase:3 of +msgid "" +"Uses dual-track parallel design: - Path A (Raw): Fit all N samples → " +"highest precision AM/PM values + r_squared_raw - Path B (Binned): Compute" +" binned statistics → visualization - Cross-validation: Path A coeffs " +"predict Path B trend → r_squared_binned" +msgstr "" + +#: adctoolbox.aout.analyze_error_by_phase.analyze_error_by_phase:10 of +msgid "" +"Normalized frequency (f/fs), range (0, 0.5). If None, auto-detected via " +"FFT." +msgstr "" + +#: adctoolbox.aout.analyze_error_by_phase.analyze_error_by_phase:12 +#: adctoolbox.aout.rearrange_error_by_phase.rearrange_error_by_phase:7 of +msgid "Number of phase bins for visualization." +msgstr "" + +#: adctoolbox.aout.analyze_error_by_phase.analyze_error_by_phase:14 of +msgid "Include base noise term in fitting model." +msgstr "" + +#: adctoolbox.aout.analyze_error_by_phase.analyze_error_by_phase:25 of +msgid "" +"Numerics: am_noise_rms_v, pm_noise_rms_v, pm_noise_rms_rad, " +"base_noise_rms_v, total_rms_v Validation: r_squared_raw (energy ratio), " +"r_squared_binned (model confidence) Visualization: bin_error_rms_v, " +"bin_error_mean_v, phase_bin_centers_rad Metadata: amplitude, dc_offset, " +"norm_freq, fitted_signal, error, phase" +msgstr "" + +#: adctoolbox.aout.rearrange_error_by_phase.rearrange_error_by_phase:1 of +msgid "Rearrange error by phase using dual-track AM/PM separation." +msgstr "" + +#: adctoolbox.aout.rearrange_error_by_phase.rearrange_error_by_phase:3 of +msgid "Input signal, 1D numpy array." +msgstr "" + +#: adctoolbox.aout.rearrange_error_by_phase.rearrange_error_by_phase:5 of +msgid "Normalized frequency (f/fs), range 0-0.5. If None, auto-detected via FFT." +msgstr "" + +#: adctoolbox.aout.rearrange_error_by_phase.rearrange_error_by_phase:9 of +msgid "Include base noise floor in fitting model." +msgstr "" + +#: adctoolbox.aout.rearrange_error_by_phase.rearrange_error_by_phase:12 of +msgid "" +"Numerics (from raw fitting): am_noise_rms_v, pm_noise_rms_v, " +"pm_noise_rms_rad, noise_floor_rms_v, total_rms_v Validation (dual " +"R²): r_squared_raw: AM/PM energy ratio in total noise (typically low," +" ~0.05) r_squared_binned: Model fit quality on binned trend " +"(typically high, ~0.95) Visualization (binned): bin_error_rms_v, " +"bin_error_mean_v, phase_bin_centers_rad, bin_counts Metadata: " +"amplitude, dc_offset, norm_freq, fitted_signal, error, phase" +msgstr "" + +#: adctoolbox.aout.rearrange_error_by_phase.rearrange_error_by_phase:14 of +msgid "Numerics (from raw fitting):" +msgstr "" + +#: adctoolbox.aout.rearrange_error_by_phase.rearrange_error_by_phase:15 of +msgid "" +"am_noise_rms_v, pm_noise_rms_v, pm_noise_rms_rad, noise_floor_rms_v, " +"total_rms_v" +msgstr "" + +#: adctoolbox.aout.rearrange_error_by_phase.rearrange_error_by_phase:17 of +msgid "Validation (dual R²):" +msgstr "" + +#: adctoolbox.aout.rearrange_error_by_phase.rearrange_error_by_phase:18 of +msgid "" +"r_squared_raw: AM/PM energy ratio in total noise (typically low, ~0.05) " +"r_squared_binned: Model fit quality on binned trend (typically high, " +"~0.95)" +msgstr "" + +#: adctoolbox.aout.rearrange_error_by_phase.rearrange_error_by_phase:20 of +msgid "Visualization (binned):" +msgstr "" + +#: adctoolbox.aout.rearrange_error_by_phase.rearrange_error_by_phase:21 of +msgid "bin_error_rms_v, bin_error_mean_v, phase_bin_centers_rad, bin_counts" +msgstr "" + +#: adctoolbox.aout.rearrange_error_by_phase.rearrange_error_by_phase:22 of +msgid "Metadata:" +msgstr "" + +#: adctoolbox.aout.rearrange_error_by_phase.rearrange_error_by_phase:23 of +msgid "amplitude, dc_offset, norm_freq, fitted_signal, error, phase" +msgstr "" + +#: adctoolbox.aout.plot_rearranged_error_by_phase.plot_rearranged_error_by_phase:1 +#: of +msgid "Plot phase error analysis results." +msgstr "" + +#: adctoolbox.aout.plot_rearranged_error_by_phase.plot_rearranged_error_by_phase:3 +#: of +msgid "Dictionary from rearrange_error_by_phase()." +msgstr "" + +#: ../../source/api/aout.rst:23 +msgid "Statistical Error Analysis" +msgstr "" + +#: adctoolbox.aout.analyze_error_pdf.analyze_error_pdf:1 of +msgid "Compute and optionally plot error probability density function using KDE." +msgstr "" + +#: adctoolbox.aout.analyze_error_pdf.analyze_error_pdf:3 of +msgid "" +"This function automatically fits an ideal sine to the signal, computes " +"the error, and analyzes its probability distribution." +msgstr "" + +#: adctoolbox.aout.analyze_error_autocorr.analyze_error_autocorr:6 +#: adctoolbox.aout.analyze_error_envelope_spectrum.analyze_error_envelope_spectrum:7 +#: adctoolbox.aout.analyze_error_pdf.analyze_error_pdf:6 +#: adctoolbox.aout.analyze_error_spectrum.analyze_error_spectrum:6 of +msgid "ADC output signal (1D array)" +msgstr "" + +#: adctoolbox.aout.analyze_error_pdf.analyze_error_pdf:8 of +msgid "ADC resolution in bits" +msgstr "" + +#: adctoolbox.aout.analyze_error_pdf.analyze_error_pdf:10 of +msgid "Full-scale range. If None, inferred from signal range (max - min)" +msgstr "" + +#: adctoolbox.aout.analyze_error_autocorr.analyze_error_autocorr:8 +#: adctoolbox.aout.analyze_error_envelope_spectrum.analyze_error_envelope_spectrum:11 +#: adctoolbox.aout.analyze_error_pdf.analyze_error_pdf:12 +#: adctoolbox.aout.analyze_error_spectrum.analyze_error_spectrum:10 of +msgid "Normalized frequency (0-0.5). If None, auto-detected" +msgstr "" + +#: adctoolbox.aout.analyze_error_pdf.analyze_error_pdf:14 of +msgid "If True, plot the PDF on current axes" +msgstr "" + +#: adctoolbox.aout.analyze_error_autocorr.analyze_error_autocorr:16 +#: adctoolbox.aout.analyze_error_envelope_spectrum.analyze_error_envelope_spectrum:15 +#: adctoolbox.aout.analyze_error_pdf.analyze_error_pdf:16 +#: adctoolbox.aout.analyze_error_spectrum.analyze_error_spectrum:14 of +msgid "Axes to plot on. If None, uses current axes (plt.gca())" +msgstr "" + +#: adctoolbox.aout.analyze_error_envelope_spectrum.analyze_error_envelope_spectrum:17 +#: adctoolbox.aout.analyze_error_pdf.analyze_error_pdf:18 +#: adctoolbox.aout.analyze_error_spectrum.analyze_error_spectrum:16 of +msgid "Title for the plot. If None, no title is set" +msgstr "" + +#: adctoolbox.aout.analyze_error_pdf.analyze_error_pdf:21 of +msgid "" +"**result** -- Dictionary containing PDF analysis results: - 'err_lsb': " +"Error in LSB units (1D array) - 'mu': Mean of error distribution (LSB) - " +"'sigma': Standard deviation of error distribution (LSB) - " +"'kl_divergence': KL divergence from Gaussian distribution - 'x': Sample " +"points for PDF - 'pdf': KDE-estimated PDF values - 'gauss_pdf': Fitted " +"Gaussian PDF values" +msgstr "" + +#: adctoolbox.aout.analyze_error_autocorr.analyze_error_autocorr:28 +#: adctoolbox.aout.analyze_error_envelope_spectrum.analyze_error_envelope_spectrum:33 +#: adctoolbox.aout.analyze_error_pdf.analyze_error_pdf:32 +#: adctoolbox.aout.analyze_error_spectrum.analyze_error_spectrum:31 +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:38 +#: adctoolbox.aout.plot_decomposition_polar.plot_decomposition_polar:24 +#: adctoolbox.aout.plot_decomposition_time.plot_decomposition_time:25 of +msgid "Notes" +msgstr "" + +#: adctoolbox.aout.analyze_error_autocorr.analyze_error_autocorr:29 +#: adctoolbox.aout.analyze_error_envelope_spectrum.analyze_error_envelope_spectrum:34 +#: adctoolbox.aout.analyze_error_pdf.analyze_error_pdf:33 +#: adctoolbox.aout.analyze_error_spectrum.analyze_error_spectrum:32 of +msgid "Error = signal - ideal_sine (fitted using fit_sine_4param)" +msgstr "" + +#: adctoolbox.aout.analyze_error_pdf.analyze_error_pdf:34 of +msgid "Uses Kernel Density Estimation (KDE) with Silverman's bandwidth rule" +msgstr "" + +#: adctoolbox.aout.analyze_error_pdf.analyze_error_pdf:35 of +msgid "KL divergence measures how different the actual error PDF is from Gaussian" +msgstr "" + +#: ../../source/api/aout.rst:28 +msgid "Spectrum-Based Error Analysis" +msgstr "" + +#: adctoolbox.aout.analyze_error_spectrum.analyze_error_spectrum:1 of +msgid "Compute error spectrum directly from the error signal." +msgstr "" + +#: adctoolbox.aout.analyze_error_spectrum.analyze_error_spectrum:3 of +msgid "" +"This function fits an ideal sine to the signal, computes the error, and " +"analyzes the spectrum of the error signal (not envelope)." +msgstr "" + +#: adctoolbox.aout.analyze_error_envelope_spectrum.analyze_error_envelope_spectrum:9 +#: adctoolbox.aout.analyze_error_spectrum.analyze_error_spectrum:8 of +msgid "Sampling frequency in Hz" +msgstr "" + +#: adctoolbox.aout.analyze_error_spectrum.analyze_error_spectrum:12 of +msgid "If True, plot the error spectrum on current axes" +msgstr "" + +#: adctoolbox.aout.analyze_error_spectrum.analyze_error_spectrum:19 of +msgid "" +"**result** -- Dictionary containing spectrum analysis results: - 'enob': " +"Effective Number of Bits - 'sndr_db': Signal-to-Noise and Distortion " +"Ratio (dB) - 'sfdr_db': Spurious-Free Dynamic Range (dB) - 'snr_db': " +"Signal-to-Noise Ratio (dB) - 'thd_db': Total Harmonic Distortion (dB) - " +"'sig_pwr_dbfs': Signal power (dBFS) - 'noise_floor_dbfs': Noise floor " +"(dBFS) - 'error_signal': Error signal (signal - fitted sine)" +msgstr "" + +#: adctoolbox.aout.analyze_error_spectrum.analyze_error_spectrum:33 of +msgid "Analyzes spectrum of error directly (no envelope extraction)" +msgstr "" + +#: adctoolbox.aout.analyze_error_spectrum.analyze_error_spectrum:34 of +msgid "Reveals frequency components in the error signal" +msgstr "" + +#: adctoolbox.aout.analyze_error_envelope_spectrum.analyze_error_envelope_spectrum:1 +#: of +msgid "Compute envelope spectrum using Hilbert transform." +msgstr "" + +#: adctoolbox.aout.analyze_error_envelope_spectrum.analyze_error_envelope_spectrum:3 +#: of +msgid "" +"This function fits an ideal sine to the signal, computes the error, " +"extracts the error envelope using Hilbert transform, and analyzes its " +"spectrum to reveal amplitude modulation patterns." +msgstr "" + +#: adctoolbox.aout.analyze_error_envelope_spectrum.analyze_error_envelope_spectrum:13 +#: of +msgid "If True, plot the envelope spectrum on current axes" +msgstr "" + +#: adctoolbox.aout.analyze_error_envelope_spectrum.analyze_error_envelope_spectrum:20 +#: of +msgid "" +"**result** -- Dictionary with keys: - 'enob': Effective Number of Bits - " +"'sndr_db': Signal-to-Noise and Distortion Ratio (dB) - 'sfdr_db': " +"Spurious-Free Dynamic Range (dB) - 'snr_db': Signal-to-Noise Ratio (dB) -" +" 'thd_db': Total Harmonic Distortion (dB) - 'sig_pwr_dbfs': Signal power " +"(dBFS) - 'noise_floor_dbfs': Noise floor (dBFS) - 'error_signal': Error " +"signal (signal - fitted sine) - 'envelope': Error envelope extracted via " +"Hilbert transform" +msgstr "" + +#: adctoolbox.aout.analyze_error_envelope_spectrum.analyze_error_envelope_spectrum:35 +#: of +msgid "Envelope = |Hilbert(error)|" +msgstr "" + +#: adctoolbox.aout.analyze_error_envelope_spectrum.analyze_error_envelope_spectrum:36 +#: of +msgid "Analyzes spectrum of envelope to reveal AM patterns" +msgstr "" + +#: adctoolbox.aout.analyze_error_autocorr.analyze_error_autocorr:1 of +msgid "" +"Compute and optionally plot autocorrelation function (ACF) of error " +"signal." +msgstr "" + +#: adctoolbox.aout.analyze_error_autocorr.analyze_error_autocorr:3 of +msgid "" +"This function fits an ideal sine to the signal, computes the error, and " +"analyzes its autocorrelation to detect temporal correlation patterns." +msgstr "" + +#: adctoolbox.aout.analyze_error_autocorr.analyze_error_autocorr:10 of +msgid "Maximum lag in samples" +msgstr "" + +#: adctoolbox.aout.analyze_error_autocorr.analyze_error_autocorr:12 of +msgid "Normalize ACF so ACF[0] = 1" +msgstr "" + +#: adctoolbox.aout.analyze_error_autocorr.analyze_error_autocorr:14 of +msgid "If True, plot the autocorrelation" +msgstr "" + +#: adctoolbox.aout.analyze_error_autocorr.analyze_error_autocorr:18 of +msgid "Title for the plot. If None, uses default title" +msgstr "" + +#: adctoolbox.aout.analyze_error_autocorr.analyze_error_autocorr:21 of +msgid "" +"**result** -- Dictionary containing: - 'acf': Autocorrelation values - " +"'lags': Lag indices (-max_lag to +max_lag) - 'error_signal': Error signal" +" (signal - fitted sine)" +msgstr "" + +#: adctoolbox.aout.analyze_error_autocorr.analyze_error_autocorr:30 of +msgid "ACF reveals temporal correlation in the error signal" +msgstr "" + +#: adctoolbox.aout.analyze_error_autocorr.analyze_error_autocorr:31 of +msgid "White noise shows ACF ≈ 0 for all lags except 0" +msgstr "" + +#: adctoolbox.aout.analyze_error_autocorr.analyze_error_autocorr:32 of +msgid "Correlated errors show non-zero ACF at specific lags" +msgstr "" + +#: ../../source/api/aout.rst:35 +msgid "Harmonic Decomposition" +msgstr "" + +#: adctoolbox.aout.analyze_decomposition_time.analyze_decomposition_time:1 of +msgid "Analyze harmonic decomposition with time-domain visualization." +msgstr "" + +#: adctoolbox.aout.analyze_decomposition_polar.analyze_decomposition_polar:7 +#: adctoolbox.aout.analyze_decomposition_time.analyze_decomposition_time:7 of +msgid "Number of harmonics to extract." +msgstr "" + +#: adctoolbox.aout.analyze_decomposition_time.analyze_decomposition_time:9 of +msgid "Number of cycles to display in the time-domain plot." +msgstr "" + +#: adctoolbox.aout.analyze_decomposition_time.analyze_decomposition_time:13 of +msgid "Axis to plot on (will be split for multi-panel)." +msgstr "" + +#: adctoolbox.aout.analyze_decomposition_polar.analyze_decomposition_polar:13 +#: adctoolbox.aout.analyze_decomposition_time.analyze_decomposition_time:15 +#: adctoolbox.aout.plot_decomposition_polar.plot_decomposition_polar:17 of +msgid "Custom title for the plot." +msgstr "" + +#: adctoolbox.aout.analyze_decomposition_polar.analyze_decomposition_polar:16 +#: adctoolbox.aout.analyze_decomposition_time.analyze_decomposition_time:18 of +msgid "" +"**results** -- Dictionary containing decomposition results from " +"decompose_harmonic_error()." +msgstr "" + +#: adctoolbox.aout.analyze_decomposition_polar.analyze_decomposition_polar:1 of +msgid "Analyze harmonic decomposition with polar visualization." +msgstr "" + +#: adctoolbox.aout.analyze_decomposition_polar.analyze_decomposition_polar:11 +#: of +msgid "Polar axis to plot on." +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:1 of +msgid "" +"Decompose ADC error into harmonic distortion and other errors using " +"least-squares fitting." +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:3 of +msgid "" +"This is a pure calculation function that extracts harmonic components " +"from ADC signal using least-squares fitting. Works directly in the " +"signal's original units without normalization." +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:7 of +msgid "" +"Input ADC signal, shape (N,) for single run or (M, N) for M runs For " +"multi-run data, runs are averaged before decomposition" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:10 of +msgid "Number of harmonics to extract (default: 5)" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:13 of +msgid "" +"Dictionary containing decomposition results: - 'magnitudes': np.ndarray," +" shape (n_harmonics,) Magnitude of each harmonic (1 to n_harmonics) -" +" 'phases': np.ndarray, shape (n_harmonics,) Phase of each harmonic in" +" radians (relative to fundamental) - 'magnitudes_db': np.ndarray, shape " +"(n_harmonics,) Magnitude in dB relative to full scale - " +"'residual_rms': float RMS power of residual noise - 'noise_db': float" +" Noise floor in dB relative to full scale - 'fundamental_freq': float" +" Detected fundamental frequency (normalized, 0 to 1) - " +"'noise_residual': np.ndarray, shape (N,) Residual signal after " +"removing all harmonics (centered at 0, no DC) - 'reconstructed_signal': " +"np.ndarray, shape (N,) Reconstructed signal with all harmonics " +"(includes DC offset) - 'fundamental_signal': np.ndarray, shape (N,) " +"Reconstructed fundamental component only (includes DC offset) - " +"'harmonic_signal': np.ndarray, shape (N,) Reconstructed harmonic " +"components 2nd to nth (centered at 0, no DC)" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:13 of +msgid "Dictionary containing decomposition results:" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:15 of +msgid "'magnitudes': np.ndarray, shape (n_harmonics,)" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:16 of +msgid "Magnitude of each harmonic (1 to n_harmonics)" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:17 of +msgid "'phases': np.ndarray, shape (n_harmonics,)" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:18 of +msgid "Phase of each harmonic in radians (relative to fundamental)" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:19 of +msgid "'magnitudes_db': np.ndarray, shape (n_harmonics,)" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:20 of +msgid "Magnitude in dB relative to full scale" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:21 of +msgid "'residual_rms': float" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:22 of +msgid "RMS power of residual noise" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:23 of +msgid "'noise_db': float" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:24 of +msgid "Noise floor in dB relative to full scale" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:25 of +msgid "'fundamental_freq': float" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:26 of +msgid "Detected fundamental frequency (normalized, 0 to 1)" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:27 of +msgid "'noise_residual': np.ndarray, shape (N,)" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:28 of +msgid "Residual signal after removing all harmonics (centered at 0, no DC)" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:29 of +msgid "'reconstructed_signal': np.ndarray, shape (N,)" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:30 of +msgid "Reconstructed signal with all harmonics (includes DC offset)" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:31 of +msgid "'fundamental_signal': np.ndarray, shape (N,)" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:32 of +msgid "Reconstructed fundamental component only (includes DC offset)" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:33 of +msgid "'harmonic_signal': np.ndarray, shape (N,)" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:34 of +msgid "Reconstructed harmonic components 2nd to nth (centered at 0, no DC)" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:39 of +msgid "" +"Algorithm: 1. Average multiple runs if provided 2. Normalize signal to " +"full scale 3. Find fundamental frequency using 4-parameter sine fit 4. " +"Build sine/cosine basis for harmonics: cos(k*ω*t), sin(k*ω*t) 5. Solve " +"least squares: W = (A^T A)^(-1) A^T * signal 6. Extract magnitude and " +"phase for each harmonic (vectorized) 7. Rotate phases relative to " +"fundamental (vectorized) 8. Calculate residual and noise floor" +msgstr "" + +#: adctoolbox.aout.decompose_harmonic_error.decompose_harmonic_error:49 of +msgid "" +"Phase Convention: - Phases are relative to fundamental - Each harmonic " +"phase = phase_of_harmonic - (phase_of_fundamental * harmonic_order) - " +"Wrapped to [-π, π]" +msgstr "" + +#: adctoolbox.aout.plot_decomposition_time.plot_decomposition_time:1 of +msgid "Create a time-domain plot of harmonic decomposition results." +msgstr "" + +#: adctoolbox.aout.plot_decomposition_time.plot_decomposition_time:3 of +msgid "" +"This is a pure visualization function that displays the signal and its " +"decomposed components (fundamental, harmonics, and other errors)." +msgstr "" + +#: adctoolbox.aout.plot_decomposition_time.plot_decomposition_time:6 of +msgid "" +"Dictionary from decompose_harmonic_error() containing: - " +"'fundamental_signal': Reconstructed fundamental component - " +"'harmonic_signal': Harmonic distortion components (2nd through nth) - " +"'noise_residual': Other errors not captured by harmonics - " +"'fundamental_freq': Normalized fundamental frequency" +msgstr "" + +#: adctoolbox.aout.plot_decomposition_time.plot_decomposition_time:12 of +msgid "Original signal data" +msgstr "" + +#: adctoolbox.aout.plot_decomposition_time.plot_decomposition_time:14 of +msgid "Number of cycles to display in the time-domain plot" +msgstr "" + +#: adctoolbox.aout.plot_decomposition_time.plot_decomposition_time:18 of +msgid "Single axis to split into 2 panels. If None, uses plt.gca() and splits it." +msgstr "" + +#: adctoolbox.aout.plot_decomposition_time.plot_decomposition_time:21 of +msgid "Custom title for the plot" +msgstr "" + +#: adctoolbox.aout.plot_decomposition_time.plot_decomposition_time:26 of +msgid "" +"Two-panel layout: top panel shows signal and fitted sinewave, bottom " +"panel shows decomposed errors" +msgstr "" + +#: adctoolbox.aout.plot_decomposition_time.plot_decomposition_time:27 of +msgid "Top panel: signal (black 'x' markers) and fundamental sinewave (gray line)" +msgstr "" + +#: adctoolbox.aout.plot_decomposition_time.plot_decomposition_time:28 of +msgid "Bottom panel: harmonic distortions (red line) and other errors (blue line)" +msgstr "" + +#: adctoolbox.aout.plot_decomposition_time.plot_decomposition_time:29 of +msgid "" +"Display range automatically limits to first few periods, centered on " +"largest error" +msgstr "" + +#: adctoolbox.aout.plot_decomposition_time.plot_decomposition_time:30 of +msgid "10% margin applied to y-axis limits for better visualization" +msgstr "" + +#: adctoolbox.aout.plot_decomposition_polar.plot_decomposition_polar:1 of +msgid "Create a polar plot of harmonic decomposition results." +msgstr "" + +#: adctoolbox.aout.plot_decomposition_polar.plot_decomposition_polar:3 of +msgid "" +"This is a pure visualization function that displays harmonics on a polar " +"plot with a noise circle reference." +msgstr "" + +#: adctoolbox.aout.plot_decomposition_polar.plot_decomposition_polar:6 of +msgid "" +"Dictionary from decompose_harmonic_error() containing: - 'magnitudes': " +"Magnitude of each harmonic - 'phases': Phase of each harmonic in radians " +"(relative to fundamental) - 'magnitudes_db': Magnitude in dB relative to " +"full scale - 'noise_db': Noise floor in dB (for noise circle)" +msgstr "" + +#: adctoolbox.aout.plot_decomposition_polar.plot_decomposition_polar:12 of +msgid "Number of harmonics to display." +msgstr "" + +#: adctoolbox.aout.plot_decomposition_polar.plot_decomposition_polar:14 of +msgid "" +"Pre-configured Matplotlib Axes object with polar projection. If None, a " +"new figure and axes will be created." +msgstr "" + +#: adctoolbox.aout.plot_decomposition_polar.plot_decomposition_polar:20 of +msgid "The configured polar axes object containing the plot" +msgstr "" + +#: adctoolbox.aout.plot_decomposition_polar.plot_decomposition_polar:25 of +msgid "Fundamental shown as filled blue circle at phase 0" +msgstr "" + +#: adctoolbox.aout.plot_decomposition_polar.plot_decomposition_polar:26 of +msgid "Harmonics shown as hollow blue squares" +msgstr "" + +#: adctoolbox.aout.plot_decomposition_polar.plot_decomposition_polar:27 of +msgid "Noise circle (dashed line) shows residual error level" +msgstr "" + +#: adctoolbox.aout.plot_decomposition_polar.plot_decomposition_polar:28 of +msgid "Harmonics outside noise circle indicate significant distortion" +msgstr "" + +#: adctoolbox.aout.plot_decomposition_polar.plot_decomposition_polar:29 of +msgid "Radius in dB with automatic scaling" +msgstr "" + +#: adctoolbox.aout.plot_decomposition_polar.plot_decomposition_polar:30 of +msgid "Polar axes: theta zero at top, clockwise direction" +msgstr "" + +#: ../../source/api/aout.rst:44 +msgid "INL/DNL Analysis" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:1 of +msgid "INL/DNL analysis from sine wave excitation with optional plotting." +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:3 of +msgid "" +"This function computes INL and DNL from analog or digital signal data, " +"and optionally plots the results." +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:7 of +msgid "Parameters:" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:8 of +msgid "data" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:-1 of +msgid "array_like" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:9 of +msgid "" +"Input signal - either analog voltage or digital codes. - Analog: Float " +"values in range (normalized 0-1, or full-scale voltage) - Digital: " +"Integer codes or float representation of codes" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:12 of +msgid "num_bits" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:-1 of +msgid "int, optional" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:13 of +msgid "ADC number of bits. If None, infers from data range." +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:14 of +msgid "full_scale" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:-1 of +msgid "float, optional" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:15 of +msgid "" +"Full scale voltage for quantization. If provided with analog input, codes" +" = round(data * 2^num_bits / full_scale). If None, assumes normalized " +"input (0-1 range)." +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:18 of +msgid "clip_percent" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:-1 of +msgid "float, default=0.01" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:19 of +#, python-format +msgid "Percentage of codes to clip from edges (0.01 = 1% from each end)" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:20 of +msgid "create_plot" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:-1 of +msgid "bool, default=True" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:21 of +msgid "Plot the INL/DNL curves (True) or just compute (False)" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:22 of +msgid "show_title" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:23 of +msgid "Show auto-generated title with min/max ranges" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:24 of +msgid "col_title" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:-1 of +msgid "str, optional" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:25 +#: adctoolbox.aout.plot_dnl_inl.plot_dnl_inl:13 of +msgid "Column title to display above DNL plot (e.g., \"N = 2^10\")" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:26 of +msgid "ax" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:-1 of +msgid "matplotlib.axes.Axes, optional" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:27 of +msgid "" +"Single axis to split into 2 rows. If None and create_plot=True, uses " +"current axis (plt.gca())." +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:31 of +msgid "Returns:" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:32 of +msgid "dict" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:-1 of +msgid "Dictionary containing:" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:33 of +msgid "'inl': INL values in LSB" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:34 of +msgid "'dnl': DNL values in LSB" +msgstr "" + +#: adctoolbox.aout.analyze_inl_from_sine.analyze_inl_from_sine:35 of +msgid "'code': Code values (x-axis)" +msgstr "" + +#: adctoolbox.aout.compute_inl_from_sine.compute_inl_from_sine:1 of +msgid "Calculate ADC INL/DNL." +msgstr "" + +#: adctoolbox.aout.compute_inl_from_sine.compute_inl_from_sine:3 of +msgid "" +"Auto-detection logic: 1. If input is Integer type -> Treated as ADC " +"Codes. 2. If input is Float type:" +msgstr "" + +#: adctoolbox.aout.compute_inl_from_sine.compute_inl_from_sine:6 of +msgid "" +"Range > 2.0 -> Treated as ADC Codes (floating point representation of " +"codes)." +msgstr "" + +#: adctoolbox.aout.compute_inl_from_sine.compute_inl_from_sine:7 of +msgid "" +"Range <= 2.0 -> Treated as Normalized Voltage (auto-quantized to " +"num_bits)." +msgstr "" + +#: adctoolbox.aout.compute_inl_from_sine.compute_inl_from_sine:9 of +msgid "Input signal (Codes or Voltage)." +msgstr "" + +#: adctoolbox.aout.compute_inl_from_sine.compute_inl_from_sine:11 of +msgid "" +"- If Input is Voltage: Target quantization resolution (default 10 if " +"None). - If Input is Codes: ADC resolution (inferred from data range if " +"None)." +msgstr "" + +#: adctoolbox.aout.compute_inl_from_sine.compute_inl_from_sine:12 of +msgid "If Input is Voltage: Target quantization resolution (default 10 if None)." +msgstr "" + +#: adctoolbox.aout.compute_inl_from_sine.compute_inl_from_sine:13 of +msgid "If Input is Codes: ADC resolution (inferred from data range if None)." +msgstr "" + +#: adctoolbox.aout.compute_inl_from_sine.compute_inl_from_sine:15 of +msgid "" +"Full scale voltage range for quantization. If provided with float input, " +"used for quantization: codes = round(data * 2^num_bits / full_scale). If " +"None, assumes normalized input (0-1 or -1 to 1)." +msgstr "" + +#: adctoolbox.aout.compute_inl_from_sine.compute_inl_from_sine:19 of +msgid "Percentage of codes to clip from edges." +msgstr "" + +#: adctoolbox.aout.plot_dnl_inl.plot_dnl_inl:1 of +msgid "Plot DNL and INL curves in a 2-row subplot layout." +msgstr "" + +#: adctoolbox.aout.plot_dnl_inl.plot_dnl_inl:3 of +msgid "Code values (x-axis)" +msgstr "" + +#: adctoolbox.aout.plot_dnl_inl.plot_dnl_inl:5 of +msgid "DNL values in LSB (y-axis)" +msgstr "" + +#: adctoolbox.aout.plot_dnl_inl.plot_dnl_inl:7 of +msgid "INL values in LSB (y-axis)" +msgstr "" + +#: adctoolbox.aout.plot_dnl_inl.plot_dnl_inl:9 of +msgid "Number of bits for x-axis limits. If None, uses code range." +msgstr "" + +#: adctoolbox.aout.plot_dnl_inl.plot_dnl_inl:11 of +msgid "Show subplot titles with DNL/INL min/max ranges" +msgstr "" + +#: adctoolbox.aout.plot_dnl_inl.plot_dnl_inl:15 of +msgid "Pre-made axes tuple (dnl_ax, inl_ax). If provided, uses these directly." +msgstr "" + +#: adctoolbox.aout.plot_dnl_inl.plot_dnl_inl:17 of +msgid "" +"Single axis to split into 2 rows (auto-nested GridSpec). If None and " +"axes=None, uses current axis." +msgstr "" + +#: adctoolbox.aout.plot_dnl_inl.plot_dnl_inl:19 of +msgid "Color for DNL plot" +msgstr "" + +#: adctoolbox.aout.plot_dnl_inl.plot_dnl_inl:21 of +msgid "Color for INL plot" +msgstr "" + +#: adctoolbox.aout.plot_dnl_inl.plot_dnl_inl:24 of +msgid "**axes** -- The axes objects [dnl_ax, inl_ax]" +msgstr "" + +#: ../../source/api/aout.rst:51 +msgid "Static Nonlinearity Fitting" +msgstr "" + +#: adctoolbox.aout.fit_static_nonlin.fit_static_nonlin:1 of +msgid "Extract static nonlinearity coefficients from distorted sinewave." +msgstr "" + +#: adctoolbox.aout.fit_static_nonlin.fit_static_nonlin:3 of +msgid "" +"This function extracts 2nd-order (k2) and 3rd-order (k3) static " +"nonlinearity coefficients from a distorted single-tone signal. It CANNOT " +"extract gain error since the sine fitting absorbs amplitude into the " +"reference." +msgstr "" + +#: adctoolbox.aout.fit_static_nonlin.fit_static_nonlin:7 of +msgid "Distorted sinewave signal samples, array_like" +msgstr "" + +#: adctoolbox.aout.fit_static_nonlin.fit_static_nonlin:8 of +msgid "" +"Polynomial order for fitting (positive integer, typically 2-3) order=2: " +"Quadratic nonlinearity only (k2) order=3: Quadratic + cubic nonlinearity " +"(k2, k3)" +msgstr "" + +#: adctoolbox.aout.fit_static_nonlin.fit_static_nonlin:12 of +msgid "" +"Quadratic nonlinearity coefficient (scalar) For ideal ADC: " +"k2 = 0 Represents 2nd-order distortion " +"Returns NaN if order < 2 k3_extracted: Cubic nonlinearity coefficient " +"(scalar) For ideal ADC: k3 = 0 Represents " +"3rd-order distortion Returns NaN if order < 3 fitted_sine: " +"Fitted ideal sinewave input (reference signal) Vector (N×1)," +" same length as sig_distorted, in time order This is the " +"ideal sine wave extracted from the distorted signal fitted_transfer: " +"Fitted transfer curve for plotting, tuple (x, y) x: 1000" +" smooth input points from min to max (sorted) y: " +"polynomial-evaluated output at those points For ideal " +"system: y=x (straight line)" +msgstr "" + +#: adctoolbox.aout.fit_static_nonlin.fit_static_nonlin:14 of +msgid "Quadratic nonlinearity coefficient (scalar)" +msgstr "" + +#: adctoolbox.aout.fit_static_nonlin.fit_static_nonlin:15 of +msgid "" +"For ideal ADC: k2 = 0 Represents 2nd-order distortion Returns NaN if " +"order < 2" +msgstr "" + +#: adctoolbox.aout.fit_static_nonlin.fit_static_nonlin:18 of +msgid "k3_extracted: Cubic nonlinearity coefficient (scalar)" +msgstr "" + +#: adctoolbox.aout.fit_static_nonlin.fit_static_nonlin:19 of +msgid "" +"For ideal ADC: k3 = 0 Represents 3rd-order distortion Returns NaN if " +"order < 3" +msgstr "" + +#: adctoolbox.aout.fit_static_nonlin.fit_static_nonlin:22 of +msgid "fitted_sine: Fitted ideal sinewave input (reference signal)" +msgstr "" + +#: adctoolbox.aout.fit_static_nonlin.fit_static_nonlin:23 of +msgid "" +"Vector (N×1), same length as sig_distorted, in time order This is the " +"ideal sine wave extracted from the distorted signal" +msgstr "" + +#: adctoolbox.aout.fit_static_nonlin.fit_static_nonlin:25 of +msgid "fitted_transfer: Fitted transfer curve for plotting, tuple (x, y)" +msgstr "" + +#: adctoolbox.aout.fit_static_nonlin.fit_static_nonlin:26 of +msgid "" +"x: 1000 smooth input points from min to max (sorted) y: polynomial-" +"evaluated output at those points For ideal system: y=x (straight line)" +msgstr "" + +#: adctoolbox.aout.fit_static_nonlin.fit_static_nonlin:31 of +msgid "Transfer Function Model:" +msgstr "" + +#: adctoolbox.aout.fit_static_nonlin.fit_static_nonlin:32 of +msgid "y = x + k2*x^2 + k3*x^3 where:" +msgstr "" + +#: adctoolbox.aout.fit_static_nonlin.fit_static_nonlin:34 of +msgid "" +"x = ideal input (zero-mean sine) y = actual output (zero-mean) k2, k3 = " +"nonlinearity coefficients" +msgstr "" + +#: adctoolbox.aout.fit_static_nonlin.fit_static_nonlin:38 of +msgid "Usage Examples:" +msgstr "" + +#: adctoolbox.aout.fit_static_nonlin.fit_static_nonlin:39 of +msgid "" +"# Extract coefficients only sig = " +"0.5*np.sin(2*np.pi*0.123*np.arange(1000)) + distortion k2, k3 = " +"extract_static_nonlin(sig, 3)[:2]" +msgstr "" + +#: adctoolbox.aout.fit_static_nonlin.fit_static_nonlin:43 of +msgid "" +"# Full extraction with plotting k2, k3, fitted_sine, fitted_transfer = " +"extract_static_nonlin(sig, 3) import matplotlib.pyplot as plt" +msgstr "" + +#: adctoolbox.aout.fit_static_nonlin.fit_static_nonlin:47 of +#, python-brace-format +msgid "" +"# Plot nonlinearity curve transfer_x, transfer_y = fitted_transfer " +"plt.plot(transfer_x, transfer_y - transfer_x, 'r-', linewidth=2) " +"plt.xlabel('Input (V)') plt.ylabel('Nonlinearity Error (V)') " +"plt.title(f'Static Nonlinearity: k2={k2:.4f}, k3={k3:.4f}') " +"plt.grid(True)" +msgstr "" + +#: adctoolbox.aout.fit_static_nonlin.fit_static_nonlin:57 of +msgid "" +"Gain error CANNOT be extracted from a single sinewave measurement because" +" the sine fitting absorbs amplitude variations. Use multi-tone or DC " +"sweep methods to extract gain separately." +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/api/dout.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/api/dout.po new file mode 100644 index 0000000..c67796f --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/api/dout.po @@ -0,0 +1,289 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/api/dout.rst:2 +msgid "Digital Output Analysis (dout)" +msgstr "" + +#: ../../source/api/dout.rst:4 +msgid "" +"The ``dout`` module provides tools for analyzing digital ADC outputs and " +"bit-weighted architectures." +msgstr "" + +#: ../../source/api/dout.rst:9 +msgid "Weight Calibration" +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:1 of +msgid "FGCalSine — Foreground calibration using a sinewave input" +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:3 of +msgid "" +"This function estimates per-bit weights and a DC offset for an ADC by " +"fitting the weighted sum of raw bit columns to a sine series at a given " +"(or estimated) normalized frequency Fin/Fs. It optionally performs a " +"coarse and fine frequency search to refine the input tone frequency." +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:8 of +msgid "" +"Implementation uses a unified pipeline where single-dataset calibration " +"is treated as a special case of multi-dataset calibration (N=1)." +msgstr "" + +#: ../../source/api/dout.rst +#: adctoolbox.dout.analyze_enob_sweep.analyze_enob_sweep of +msgid "Parameters" +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:11 of +msgid "" +"Binary data as matrix (N rows by M cols, N is data points, M is " +"bitwidth). Each row is one sample; each column is a bit/segment. Can also" +" be a list of arrays for multi-dataset calibration." +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:15 of +msgid "" +"Normalized frequency Fin/Fs. Default is None (triggers auto frequency " +"search). - None: Automatic frequency search - float: Single frequency for" +" all datasets - array-like: Per-dataset frequencies for multi-dataset " +"mode" +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:20 of +msgid "" +"Force fine frequency search even when frequency is provided. Default is " +"False. Set to True to refine provided frequencies." +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:23 of +msgid "" +"Nominal bit weights (only effective when rank is deficient). Default is " +"2^(M-1) down to 2^0." +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:26 of +msgid "" +"Number of harmonic terms to exclude in calibration. Default is 1 " +"(fundamental only, no harmonic exclusion). Higher values exclude more " +"harmonics from the error term." +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:30 of +msgid "Adaptive learning rate for frequency updates (0..1), default is 0.5." +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:32 of +msgid "Relative error tolerance for convergence, default is 1e-12." +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:34 of +msgid "Maximum iterations for fine frequency search, default is 100." +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:36 of +msgid "Print frequency search progress (1) or not (0), default is 0." +msgstr "" + +#: ../../source/api/dout.rst +#: adctoolbox.dout.analyze_enob_sweep.analyze_enob_sweep of +msgid "Returns" +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:39 of +msgid "" +"Dictionary with keys: - weight : ndarray The calibrated weights, " +"normalized by the magnitude of sinewave. - offset : float The " +"calibrated DC offset, normalized by the magnitude of sinewave. - " +"calibrated_signal : ndarray or list of ndarrays The signal after " +"calibration (single array for single dataset, list of arrays for " +"multi-dataset). - ideal : ndarray or list of ndarrays The best fitted" +" sinewave (single array for single dataset, list of arrays for multi-" +"dataset). - error : ndarray or list of ndarrays The residue errors " +"after calibration, excluding distortion (single array for single " +"dataset, list of arrays for multi-dataset). - refined_frequency : float " +"or ndarray The refined frequency from calibration (float for single " +"dataset, array for multi-dataset)." +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:39 of +msgid "Dictionary with keys: - weight : ndarray" +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:41 of +msgid "The calibrated weights, normalized by the magnitude of sinewave." +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:42 of +msgid "offset" +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:-1 of +msgid "float" +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:43 of +msgid "The calibrated DC offset, normalized by the magnitude of sinewave." +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:44 of +msgid "calibrated_signal" +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:-1 of +msgid "ndarray or list of ndarrays" +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:45 of +msgid "" +"The signal after calibration (single array for single dataset, list of " +"arrays for multi-dataset)." +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:47 of +msgid "ideal" +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:48 of +msgid "" +"The best fitted sinewave (single array for single dataset, list of arrays" +" for multi-dataset)." +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:50 of +msgid "error" +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:51 of +msgid "" +"The residue errors after calibration, excluding distortion (single array " +"for single dataset, list of arrays for multi-dataset)." +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:53 of +msgid "refined_frequency" +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:-1 of +msgid "float or ndarray" +msgstr "" + +#: adctoolbox.calibration.calibrate_weight_sine.calibrate_weight_sine:54 of +msgid "" +"The refined frequency from calibration (float for single dataset, array " +"for multi-dataset)." +msgstr "" + +#: ../../source/api/dout.rst +#: adctoolbox.dout.analyze_enob_sweep.analyze_enob_sweep of +msgid "Return type" +msgstr "" + +#: ../../source/api/dout.rst:16 +msgid "Overflow Detection" +msgstr "" + +#: ../../source/api/dout.rst:21 +msgid "Bit Activity" +msgstr "" + +#: ../../source/api/dout.rst:26 +msgid "ENOB Analysis" +msgstr "" + +#: adctoolbox.dout.analyze_enob_sweep.analyze_enob_sweep:1 of +msgid "Sweep ENOB vs number of bits used for calibration." +msgstr "" + +#: adctoolbox.dout.analyze_enob_sweep.analyze_enob_sweep:3 of +msgid "" +"Incrementally adds bits (MSB to LSB) and measures ENOB after calibration " +"to understand diminishing returns and optimal bit count." +msgstr "" + +#: adctoolbox.dout.analyze_enob_sweep.analyze_enob_sweep:6 of +msgid "Binary matrix (N samples x M bits, MSB to LSB order)" +msgstr "" + +#: adctoolbox.dout.analyze_enob_sweep.analyze_enob_sweep:8 of +msgid "Normalized frequency (0-0.5). If None, auto-detect from data" +msgstr "" + +#: adctoolbox.dout.analyze_enob_sweep.analyze_enob_sweep:10 of +msgid "Harmonic order for calibrate_weight_sine" +msgstr "" + +#: adctoolbox.dout.analyze_enob_sweep.analyze_enob_sweep:12 of +msgid "Oversampling ratio for spectrum analysis" +msgstr "" + +#: adctoolbox.dout.analyze_enob_sweep.analyze_enob_sweep:14 of +msgid "Window function: 'boxcar', 'hann', 'hamming'" +msgstr "" + +#: adctoolbox.dout.analyze_enob_sweep.analyze_enob_sweep:16 of +msgid "If True, plot ENOB sweep curve" +msgstr "" + +#: adctoolbox.dout.analyze_enob_sweep.analyze_enob_sweep:18 of +msgid "Axes to plot on. If None, uses current axes (plt.gca())" +msgstr "" + +#: adctoolbox.dout.analyze_enob_sweep.analyze_enob_sweep:20 of +msgid "Title for the plot. If None, uses default title" +msgstr "" + +#: adctoolbox.dout.analyze_enob_sweep.analyze_enob_sweep:22 of +msgid "If True, print progress messages" +msgstr "" + +#: adctoolbox.dout.analyze_enob_sweep.analyze_enob_sweep:25 of +msgid "" +"- enob_sweep: ENOB for each bit count (length M) - n_bits_vec: Bit counts" +" from 1 to M" +msgstr "" + +#: adctoolbox.dout.analyze_enob_sweep.analyze_enob_sweep:27 of +msgid "enob_sweep: ENOB for each bit count (length M)" +msgstr "" + +#: adctoolbox.dout.analyze_enob_sweep.analyze_enob_sweep:28 of +msgid "n_bits_vec: Bit counts from 1 to M" +msgstr "" + +#: adctoolbox.dout.analyze_enob_sweep.analyze_enob_sweep:32 of +msgid "Notes" +msgstr "" + +#: adctoolbox.dout.analyze_enob_sweep.analyze_enob_sweep:33 of +msgid "" +"What to look for in the plot: - Increasing trend: More bits improve " +"resolution - Plateau: Additional bits don't help (noise/distortion " +"limited) - Decrease: Extra bits add noise/calibration errors" +msgstr "" + +#: ../../source/api/dout.rst:31 +msgid "Visualization" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/api/fundamentals.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/api/fundamentals.po new file mode 100644 index 0000000..0561a39 --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/api/fundamentals.po @@ -0,0 +1,584 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/api/fundamentals.rst:2 +msgid "Fundamental Utilities (fundamentals)" +msgstr "" + +#: ../../source/api/fundamentals.rst:4 +msgid "" +"The ``fundamentals`` module provides core utility functions and signal " +"processing tools used across the toolbox." +msgstr "" + +#: ../../source/api/fundamentals.rst:9 +msgid "Sine Fitting" +msgstr "" + +#: adctoolbox.fundamentals.fit_sine_4param.fit_sine_4param:1 of +msgid "Fit sine wave: y = A*cos(wt) + B*sin(wt) + C." +msgstr "" + +#: ../../source/api/fundamentals.rst +#: adctoolbox.fundamentals.frequency.estimate_frequency +#: adctoolbox.fundamentals.frequency.find_coherent_frequency +#: adctoolbox.fundamentals.frequency.fold_bin_to_nyquist +#: adctoolbox.fundamentals.frequency.fold_frequency_to_nyquist +#: adctoolbox.fundamentals.snr_nsd.amplitudes_to_snr +#: adctoolbox.fundamentals.snr_nsd.nsd_to_snr +#: adctoolbox.fundamentals.snr_nsd.snr_to_nsd of +msgid "Parameters" +msgstr "" + +#: adctoolbox.fundamentals.fit_sine_4param.fit_sine_4param:3 of +msgid "Input signal (1D or 2D array)." +msgstr "" + +#: adctoolbox.fundamentals.fit_sine_4param.fit_sine_4param:4 of +msgid "Initial normalized frequency (0 to 0.5). If None, estimated via FFT." +msgstr "" + +#: adctoolbox.fundamentals.fit_sine_4param.fit_sine_4param:5 of +msgid "Iterations for frequency refinement." +msgstr "" + +#: adctoolbox.fundamentals.fit_sine_4param.fit_sine_4param:6 of +msgid "Convergence threshold for frequency updates." +msgstr "" + +#: ../../source/api/fundamentals.rst +#: adctoolbox.fundamentals.frequency.estimate_frequency +#: adctoolbox.fundamentals.frequency.find_coherent_frequency +#: adctoolbox.fundamentals.frequency.fold_bin_to_nyquist +#: adctoolbox.fundamentals.frequency.fold_frequency_to_nyquist +#: adctoolbox.fundamentals.snr_nsd.amplitudes_to_snr +#: adctoolbox.fundamentals.snr_nsd.nsd_to_snr +#: adctoolbox.fundamentals.snr_nsd.snr_to_nsd of +msgid "Returns" +msgstr "" + +#: adctoolbox.fundamentals.fit_sine_4param.fit_sine_4param:8 of +msgid "" +"- fitted_signal: Reconstructed sine wave - residuals: Data - " +"fitted_signal - frequency: Normalized frequency (0 to 0.5) - " +"amplitude: sqrt(A² + B²) - phase: atan2(-B, A) in radians - " +"dc_offset: DC component - rmse: Root mean square error For 2D input," +" all values (except fitted_signal, residuals) are 1D arrays." +msgstr "" + +#: adctoolbox.fundamentals.fit_sine_4param.fit_sine_4param:8 of +msgid "fitted_signal: Reconstructed sine wave" +msgstr "" + +#: adctoolbox.fundamentals.fit_sine_4param.fit_sine_4param:9 of +msgid "residuals: Data - fitted_signal" +msgstr "" + +#: adctoolbox.fundamentals.fit_sine_4param.fit_sine_4param:10 of +msgid "frequency: Normalized frequency (0 to 0.5)" +msgstr "" + +#: adctoolbox.fundamentals.fit_sine_4param.fit_sine_4param:11 of +msgid "amplitude: sqrt(A² + B²)" +msgstr "" + +#: adctoolbox.fundamentals.fit_sine_4param.fit_sine_4param:12 of +msgid "phase: atan2(-B, A) in radians" +msgstr "" + +#: adctoolbox.fundamentals.fit_sine_4param.fit_sine_4param:13 of +msgid "dc_offset: DC component" +msgstr "" + +#: adctoolbox.fundamentals.fit_sine_4param.fit_sine_4param:14 of +msgid "rmse: Root mean square error" +msgstr "" + +#: adctoolbox.fundamentals.fit_sine_4param.fit_sine_4param:16 of +msgid "For 2D input, all values (except fitted_signal, residuals) are 1D arrays." +msgstr "" + +#: ../../source/api/fundamentals.rst +#: adctoolbox.fundamentals.frequency.estimate_frequency +#: adctoolbox.fundamentals.frequency.find_coherent_frequency +#: adctoolbox.fundamentals.frequency.fold_bin_to_nyquist +#: adctoolbox.fundamentals.frequency.fold_frequency_to_nyquist +#: adctoolbox.fundamentals.snr_nsd.nsd_to_snr +#: adctoolbox.fundamentals.snr_nsd.snr_to_nsd of +msgid "Return type" +msgstr "" + +#: ../../source/api/fundamentals.rst:14 +msgid "Frequency Utilities" +msgstr "" + +#: adctoolbox.fundamentals.frequency.find_coherent_frequency:1 of +msgid "Calculate the precise coherent input frequency and bin index." +msgstr "" + +#: adctoolbox.fundamentals.frequency.find_coherent_frequency:3 of +msgid "Supports Undersampling (Fin > Fs/2)." +msgstr "" + +#: adctoolbox.fundamentals.frequency.find_coherent_frequency:5 +#: adctoolbox.fundamentals.frequency.fold_frequency_to_nyquist:8 +#: adctoolbox.fundamentals.metrics.calculate_walden_fom:9 of +msgid "Sampling frequency (Hz)" +msgstr "" + +#: adctoolbox.fundamentals.frequency.find_coherent_frequency:7 of +msgid "Target input frequency (Hz)" +msgstr "" + +#: adctoolbox.fundamentals.frequency.find_coherent_frequency:9 of +msgid "FFT size (number of points)" +msgstr "" + +#: adctoolbox.fundamentals.frequency.find_coherent_frequency:11 of +msgid "If True, only search for odd bin indices (default: True)" +msgstr "" + +#: adctoolbox.fundamentals.frequency.find_coherent_frequency:13 of +msgid "Search radius around the ideal bin (default: 200)" +msgstr "" + +#: adctoolbox.fundamentals.frequency.find_coherent_frequency:16 of +msgid "(fin_actual, best_bin) - Coherent frequency and corresponding bin index" +msgstr "" + +#: adctoolbox.fundamentals.frequency.find_coherent_frequency of +msgid "Raises" +msgstr "" + +#: adctoolbox.fundamentals.frequency.find_coherent_frequency:19 of +msgid "If no valid coherent frequency is found within search radius" +msgstr "" + +#: adctoolbox.fundamentals.frequency.estimate_frequency:17 +#: adctoolbox.fundamentals.frequency.find_coherent_frequency:22 +#: adctoolbox.fundamentals.frequency.fold_bin_to_nyquist:15 +#: adctoolbox.fundamentals.frequency.fold_frequency_to_nyquist:15 +#: adctoolbox.fundamentals.snr_nsd.amplitudes_to_snr:23 +#: adctoolbox.fundamentals.snr_nsd.nsd_to_snr:28 +#: adctoolbox.fundamentals.snr_nsd.snr_to_nsd:28 of +msgid "Examples" +msgstr "" + +#: adctoolbox.fundamentals.frequency.estimate_frequency:1 of +msgid "Estimate the physical fundamental frequency (Hz) of a signal." +msgstr "" + +#: adctoolbox.fundamentals.frequency.estimate_frequency:3 of +msgid "" +"This is a wrapper around the robust `fit_sine_4param` algorithm. It " +"converts the normalized frequency (0 ~ 0.5) returned by fit_sine into " +"physical frequency (Hz) based on the sampling rate." +msgstr "" + +#: adctoolbox.fundamentals.frequency.estimate_frequency:7 of +msgid "Input signal data. 1D or 2D array." +msgstr "" + +#: adctoolbox.fundamentals.frequency.estimate_frequency:9 of +msgid "Sampling frequency in Hz (default: 1.0)" +msgstr "" + +#: adctoolbox.fundamentals.frequency.estimate_frequency:12 of +msgid "Estimated frequency in Hz. (Scalar if input is 1D, Array if input is 2D)" +msgstr "" + +#: adctoolbox.fundamentals.frequency.fold_frequency_to_nyquist:1 of +msgid "Calculate the aliased (folded) frequency in the first Nyquist zone." +msgstr "" + +#: adctoolbox.fundamentals.frequency.fold_frequency_to_nyquist:3 of +msgid "" +"The aliased frequency is the absolute difference between the input " +"frequency and the nearest integer multiple of the sampling rate." +msgstr "" + +#: adctoolbox.fundamentals.frequency.fold_frequency_to_nyquist:6 of +msgid "Input frequency (Hz). Can be positive or negative." +msgstr "" + +#: adctoolbox.fundamentals.frequency.fold_frequency_to_nyquist:11 of +msgid "Aliased frequency in range [0, Fs/2]" +msgstr "" + +#: adctoolbox.fundamentals.frequency.fold_bin_to_nyquist:1 of +msgid "Calculate the aliased bin index in the first Nyquist zone [0, n_fft/2]." +msgstr "" + +#: adctoolbox.fundamentals.frequency.fold_bin_to_nyquist:3 of +msgid "" +"For real signals, FFT bins above n_fft/2 are mirrored to the first " +"Nyquist zone. This function handles the wrapping and mirroring." +msgstr "" + +#: adctoolbox.fundamentals.frequency.fold_bin_to_nyquist:6 of +msgid "Bin index (can be fractional, negative, or > n_fft)" +msgstr "" + +#: adctoolbox.fundamentals.frequency.fold_bin_to_nyquist:8 of +msgid "Total number of FFT bins" +msgstr "" + +#: adctoolbox.fundamentals.frequency.fold_bin_to_nyquist:11 of +msgid "Aliased bin index in range [0, n_fft/2]" +msgstr "" + +#: ../../source/api/fundamentals.rst:22 +msgid "Unit Conversions" +msgstr "" + +#: adctoolbox.fundamentals.units.db_to_mag:1 of +msgid "Convert dB to magnitude ratio: 10^(x/20)" +msgstr "" + +#: adctoolbox.fundamentals.units.mag_to_db:1 of +msgid "Convert magnitude ratio to dB: 20*log10(x)" +msgstr "" + +#: adctoolbox.fundamentals.units.db_to_power:1 of +msgid "Convert dB to power ratio: 10^(x/10)" +msgstr "" + +#: adctoolbox.fundamentals.units.power_to_db:1 of +msgid "Convert power ratio to dB: 10*log10(x)" +msgstr "" + +#: adctoolbox.fundamentals.units.snr_to_enob:1 of +msgid "Convert SNR/SNDR (dB) to ENOB (bits): (SNR - 1.76) / 6.02" +msgstr "" + +#: adctoolbox.fundamentals.units.enob_to_snr:1 of +msgid "Convert ENOB (bits) to ideal SNR (dB): ENOB * 6.02 + 1.76" +msgstr "" + +#: adctoolbox.fundamentals.units.lsb_to_volts:1 of +msgid "Convert LSB count to voltage" +msgstr "" + +#: adctoolbox.fundamentals.units.volts_to_lsb:1 of +msgid "Convert voltage to LSB count" +msgstr "" + +#: adctoolbox.fundamentals.units.bin_to_freq:1 of +msgid "Convert FFT bin index to frequency (Hz)" +msgstr "" + +#: adctoolbox.fundamentals.units.freq_to_bin:1 of +msgid "Convert frequency (Hz) to nearest FFT bin index" +msgstr "" + +#: adctoolbox.fundamentals.units.dbm_to_vrms:1 of +msgid "Convert dBm to Vrms (assuming load impedance z_load)" +msgstr "" + +#: adctoolbox.fundamentals.units.vrms_to_dbm:1 of +msgid "Convert Vrms to dBm" +msgstr "" + +#: adctoolbox.fundamentals.units.dbm_to_mw:1 of +msgid "Convert dBm to mW: mW = 10^(dBm/10)" +msgstr "" + +#: adctoolbox.fundamentals.units.mw_to_dbm:1 of +msgid "Convert mW to dBm: dBm = 10*log10(mW)" +msgstr "" + +#: adctoolbox.fundamentals.units.sine_amplitude_to_power:1 of +msgid "Convert sine wave peak amplitude to power." +msgstr "" + +#: adctoolbox.fundamentals.units.sine_amplitude_to_power:3 of +msgid "For sine wave: Vrms = A / sqrt(2) Power = Vrms^2 / Z = A^2 / (2*Z)" +msgstr "" + +#: ../../source/api/fundamentals.rst:41 +msgid "SNR/NSD Conversion" +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.amplitudes_to_snr:1 of +msgid "" +"Calculate Signal-to-Noise Ratio (SNR) in dB from sine wave peak amplitude" +" and noise RMS." +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.amplitudes_to_snr:3 of +msgid "" +"This function computes SNR, assuming the signal is a pure sine wave and " +"the noise is Gaussian (White Noise)." +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.amplitudes_to_snr:6 of +msgid "" +"SNR is calculated based on the power ratio: SNR (dB) = 10 * log10(P_sig /" +" P_noise). When oversampling is used, SNR improves by 10*log10(OSR)." +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.amplitudes_to_snr:9 of +msgid "Sine wave peak amplitude (A), in Volts (V)." +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.amplitudes_to_snr:11 of +msgid "Noise RMS amplitude (σ), in Volts (V)." +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.amplitudes_to_snr:13 of +msgid "" +"Oversampling ratio. SNR improves by 10*log10(OSR) dB. Default is 1 (no " +"oversampling)." +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.amplitudes_to_snr:15 of +msgid "" +"If True, returns a tuple containing (snr_db, sig_power, noise_power). " +"Default is False, returning only snr_db." +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.amplitudes_to_snr:19 of +msgid "" +"* **snr_db** (*float or ndarray*) -- The calculated SNR in dB. Returns " +"np.inf if noise_amplitude is zero. * **(snr_db, sig_power, noise_power)**" +" (*tuple (if return_power=True)*) -- The SNR in dB, Signal Power (V^2), " +"and Noise Power (V^2), respectively." +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.amplitudes_to_snr:19 of +msgid "" +"**snr_db** (*float or ndarray*) -- The calculated SNR in dB. Returns " +"np.inf if noise_amplitude is zero." +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.amplitudes_to_snr:20 of +msgid "" +"**(snr_db, sig_power, noise_power)** (*tuple (if return_power=True)*) -- " +"The SNR in dB, Signal Power (V^2), and Noise Power (V^2), respectively." +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.snr_to_nsd:1 of +msgid "Convert Signal-to-Noise Ratio (SNR) to Noise Spectral Density (NSD)." +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.snr_to_nsd:3 of +msgid "" +"This function converts SNR in dB to NSD in dBFS/Hz, given the sampling " +"frequency and oversampling ratio. It assumes a full-scale sine wave " +"signal (0 dBFS) unless specified otherwise." +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.snr_to_nsd:7 of +msgid "" +"The relationship is derived from: - Signal power: P_signal = " +"10^(Psignal_dBFS / 10) - Noise power: P_noise = P_signal / 10^(SNR_dB / " +"10) - Noise bandwidth: BW = fs / (2 * OSR) - NSD = P_noise / BW (linear " +"scale) - NSD_dBFS/Hz = 10 * log10(NSD)" +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.snr_to_nsd:14 of +msgid "Signal-to-Noise Ratio in dB." +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.nsd_to_snr:16 +#: adctoolbox.fundamentals.snr_nsd.snr_to_nsd:16 of +msgid "Sampling frequency in Hz." +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.nsd_to_snr:18 +#: adctoolbox.fundamentals.snr_nsd.snr_to_nsd:18 of +msgid "" +"Oversampling ratio. Default is 1.0 (Nyquist sampling). The noise " +"bandwidth is fs / (2 * OSR)." +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.nsd_to_snr:21 +#: adctoolbox.fundamentals.snr_nsd.snr_to_nsd:21 of +msgid "Signal power in dBFS. Default is 0.0 dBFS (full-scale signal)." +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.snr_to_nsd:24 of +msgid "**nsd_dbfs_hz** -- Noise Spectral Density in dBFS/Hz." +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.nsd_to_snr:1 of +msgid "Convert Noise Spectral Density (NSD) to Signal-to-Noise Ratio (SNR)." +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.nsd_to_snr:3 of +msgid "" +"This function converts NSD in dBFS/Hz to SNR in dB, given the sampling " +"frequency and oversampling ratio. It assumes a full-scale sine wave " +"signal (0 dBFS) unless specified otherwise." +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.nsd_to_snr:7 of +msgid "" +"The relationship is derived from: - NSD in linear scale: NSD_linear = " +"10^(NSD_dBFS/Hz / 10) - Noise bandwidth: BW = fs / (2 * OSR) - Noise " +"power: P_noise = NSD_linear * BW - Signal power: P_signal = " +"10^(Psignal_dBFS / 10) - SNR = 10 * log10(P_signal / P_noise)" +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.nsd_to_snr:14 of +msgid "Noise Spectral Density in dBFS/Hz." +msgstr "" + +#: adctoolbox.fundamentals.snr_nsd.nsd_to_snr:24 of +msgid "**snr_db** -- Signal-to-Noise Ratio in dB." +msgstr "" + +#: ../../source/api/fundamentals.rst:48 +msgid "Validation" +msgstr "" + +#: adctoolbox.fundamentals.validate.validate_aout_data:1 of +msgid "Validate analog output data format." +msgstr "" + +#: adctoolbox.fundamentals.validate.validate_aout_data:3 of +msgid "Checks: Numeric, Real, Finite, Sufficient Length, Signal Variation." +msgstr "" + +#: adctoolbox.fundamentals.validate.validate_dout_data:1 of +msgid "Validate digital output (bits) data format." +msgstr "" + +#: adctoolbox.fundamentals.validate.validate_dout_data:3 of +msgid "" +"Checks: Binary (0/1), Dimensions, Stuck Bits. Expects: (N_samples, " +"N_bits) matrix." +msgstr "" + +#: ../../source/api/fundamentals.rst:54 +msgid "Figures of Merit" +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_walden_fom:1 of +msgid "Calculate Walden Figure of Merit (FoM_w)." +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_walden_fom:3 of +msgid "Standard metric for medium-resolution ADCs. Lower is better." +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_walden_fom:6 of +msgid "Formula: Power / (2^ENOB * Fs)" +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_schreier_fom:8 +#: adctoolbox.fundamentals.metrics.calculate_walden_fom:8 of +msgid "Power consumption (W)" +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_walden_fom:10 of +msgid "Effective number of bits" +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_walden_fom:12 of +msgid "FoM_w in J/conv-step (Joules per conversion step)" +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_schreier_fom:1 of +msgid "Calculate Schreier Figure of Merit (FoM_s)." +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_schreier_fom:3 of +msgid "Standard metric for high-resolution / Sigma-Delta ADCs. Higher is better." +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_schreier_fom:6 of +msgid "Formula: SNDR + 10*log10(BW / Power)" +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_schreier_fom:9 of +msgid "Signal-to-Noise and Distortion Ratio (dB)" +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_schreier_fom:10 of +msgid "Signal bandwidth (Hz)" +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_schreier_fom:12 of +msgid "FoM_s in dB" +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_thermal_noise_limit:1 of +msgid "Calculate maximum achievable SNR limited by kT/C noise." +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_thermal_noise_limit:3 of +msgid "" +"Thermal noise sets the fundamental limit for switched-capacitor circuits " +"and sample-and-hold amplifiers." +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_thermal_noise_limit:6 of +msgid "Sampling capacitance in pF" +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_thermal_noise_limit:7 of +msgid "Full-scale voltage (Vpp), default 1.0V" +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_jitter_limit:11 +#: adctoolbox.fundamentals.metrics.calculate_thermal_noise_limit:9 of +msgid "Maximum SNR in dB" +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_thermal_noise_limit:11 of +msgid "Theory:" +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_thermal_noise_limit:12 of +msgid "Noise power = kT/C" +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_thermal_noise_limit:13 of +msgid "Signal power (sine) = (Vfs/2)^2 / 2 = Vfs^2 / 8" +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_thermal_noise_limit:14 of +msgid "SNR = 10*log10(P_signal / P_noise)" +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_jitter_limit:1 of +msgid "Calculate maximum achievable SNR limited by aperture jitter." +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_jitter_limit:3 of +msgid "" +"Sampling jitter creates phase noise that limits SNR, especially at high " +"input frequencies." +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_jitter_limit:6 of +msgid "Formula: SNR = -20 * log10(2 * pi * fin * tj)" +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_jitter_limit:8 of +msgid "Input frequency (Hz)" +msgstr "" + +#: adctoolbox.fundamentals.metrics.calculate_jitter_limit:9 of +msgid "RMS jitter in seconds" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/api/index.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/api/index.po new file mode 100644 index 0000000..28e1bf1 --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/api/index.po @@ -0,0 +1,93 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/api/index.rst:2 +msgid "API Reference" +msgstr "" + +#: ../../source/api/index.rst:4 +msgid "" +"This section provides detailed documentation for all ADCToolbox modules " +"and functions." +msgstr "" + +#: ../../source/api/index.rst:17 +msgid "Module Overview" +msgstr "" + +#: ../../source/api/index.rst:19 +msgid ":doc:`fundamentals`" +msgstr "" + +#: ../../source/api/index.rst:20 +msgid "" +"Fundamental utilities including sine fitting, frequency calculation, unit" +" conversion, FOM metrics, and validation" +msgstr "" + +#: ../../source/api/index.rst:22 +msgid ":doc:`spectrum`" +msgstr "" + +#: ../../source/api/index.rst:23 +msgid "" +"Spectrum analysis tools for FFT-based metrics, polar plots, and two-tone " +"analysis" +msgstr "" + +#: ../../source/api/index.rst:25 +msgid ":doc:`aout`" +msgstr "" + +#: ../../source/api/index.rst:26 +msgid "" +"Analog output analysis tools for INL/DNL, harmonic decomposition, and " +"error characterization" +msgstr "" + +#: ../../source/api/index.rst:28 +msgid ":doc:`dout`" +msgstr "" + +#: ../../source/api/index.rst:29 +msgid "" +"Digital output analysis tools for bit weight calibration, overflow " +"detection, and ENOB analysis" +msgstr "" + +#: ../../source/api/index.rst:31 +msgid ":doc:`siggen`" +msgstr "" + +#: ../../source/api/index.rst:32 +msgid "" +"Signal generation utilities for test signal creation with various non-" +"idealities" +msgstr "" + +#: ../../source/api/index.rst:34 +msgid ":doc:`oversampling`" +msgstr "" + +#: ../../source/api/index.rst:35 +msgid "Oversampling and Delta-Sigma modulator analysis tools" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/api/oversampling.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/api/oversampling.po new file mode 100644 index 0000000..5cf44bc --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/api/oversampling.po @@ -0,0 +1,75 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/api/oversampling.rst:2 +msgid "Oversampling Analysis (oversampling)" +msgstr "" + +#: ../../source/api/oversampling.rst:4 +msgid "" +"The ``oversampling`` module provides tools for analyzing oversampling and" +" Delta-Sigma modulators." +msgstr "" + +#: adctoolbox.oversampling:1 of +msgid "Oversampling and noise transfer function analysis tools." +msgstr "" + +#: adctoolbox.oversampling.ntf_analyzer.ntf_analyzer:1 of +msgid "Analyze the performance of NTF (Noise Transfer Function)" +msgstr "" + +#: ../../source/api/oversampling.rst +msgid "Parameters" +msgstr "" + +#: adctoolbox.oversampling.ntf_analyzer.ntf_analyzer:3 of +msgid "" +"The noise transfer function (in z domain) - scipy.signal.TransferFunction" +" or tuple (num, den)" +msgstr "" + +#: adctoolbox.oversampling.ntf_analyzer.ntf_analyzer:4 of +msgid "Low bound frequency of signal band (relative to Fs)" +msgstr "" + +#: adctoolbox.oversampling.ntf_analyzer.ntf_analyzer:5 of +msgid "High bound frequency of signal band (relative to Fs)" +msgstr "" + +#: adctoolbox.oversampling.ntf_analyzer.ntf_analyzer:6 of +msgid "Optional plotting flag (1 to plot, None or 0 to skip)" +msgstr "" + +#: ../../source/api/oversampling.rst +msgid "Returns" +msgstr "" + +#: adctoolbox.oversampling.ntf_analyzer.ntf_analyzer:8 of +msgid "" +"Integrated noise suppression of NTF in signal band in dB (compared to " +"NTF=1)" +msgstr "" + +#: ../../source/api/oversampling.rst +msgid "Return type" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/api/siggen.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/api/siggen.po new file mode 100644 index 0000000..b7dff20 --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/api/siggen.po @@ -0,0 +1,287 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/api/siggen.rst:2 +msgid "Signal Generation (siggen)" +msgstr "" + +#: ../../source/api/siggen.rst:4 +msgid "The ``siggen`` module provides tools for generating test signals." +msgstr "" + +#: adctoolbox.siggen:1 of +msgid "Signal Generation Module for ADC Testing" +msgstr "" + +#: adctoolbox.siggen:3 of +msgid "" +"Provides signal generators and non-ideality appliers for simulating " +"various ADC imperfections and effects." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator:1 of +msgid "" +"Generates ADC test signals with various non-idealities using the Applier " +"Pattern." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator:3 of +msgid "" +"Each method accepts optional input_signal parameter. If None, uses clean " +"base signal. Methods return signal with non-ideality applied. Supports " +"chaining multiple effects." +msgstr "" + +#: ../../source/api/siggen.rst +msgid "Parameters" +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator:6 of +msgid "Number of samples" +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator:8 of +msgid "Sampling frequency (Hz)" +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator:10 of +msgid "Input signal frequency (Hz)" +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator:12 of +msgid "Input signal amplitude (e.g., 0.49)" +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator:14 of +msgid "Input signal DC offset (e.g., 0.5)" +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.__init__:1 of +msgid "Initialize ADC_Signal_Generator with signal parameters." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.get_clean_signal:1 of +msgid "Return clean sine wave: A*sin(2π*Fin*t) + DC (explicit public interface)." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_thermal_noise:1 +#: of +msgid "" +"Apply white thermal noise. Params: input_signal (None->clean), noise_rms " +"(default 50e-6)." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_quantization_noise:1 +#: of +msgid "" +"Apply quantization noise. Params: quant_range: tuple (v_min, v_max), " +"e.g., (0, 1) or (-0.5, 0.5)." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_jitter:1 of +msgid "Apply sampling jitter." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_jitter:3 of +msgid "" +"Logic: - Case 1 (Source Generation): If input_signal is None, regenerates" +" from scratch (Perfect Precision). - Case 2 (Chain Processing): If input " +"is provided, uses Cubic Spline interpolation (Preserves previous errors)." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_static_nonlinearity:1 +#: of +msgid "" +"Applies static nonlinear distortion to the signal using direct polynomial" +" coefficients (k2 to k5)." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_static_nonlinearity_hd:1 +#: of +msgid "" +"Converts specified Harmonic Distortion levels (dBc) to polynomial " +"coefficients and applies the nonlinearity." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_memory_effect:1 +#: of +msgid "" +"Apply memory effect (charge injection). The previous MSB decision leaks " +"back to the input. Params: input_signal, memory_strength (default 0.009)." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_incomplete_sampling:1 +#: of +msgid "" +"Apply dynamic nonlinearity (tracking/settling). Models slew-rate and " +"signal-dependent settling errors. Params: input_signal, T_track, tau_nom " +"(default 40ps), coeff_k (default 0.15)." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_ra_gain_error:1 +#: of +#, python-format +msgid "" +"Apply interstage gain error (2-stage pipeline ADC). Params: input_signal," +" relative_gain (default 0.99 = 1% error)." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_ra_gain_error_dynamic:1 +#: of +msgid "" +"Applies dynamic gain error to the interstage residue amplifier in a " +"pipeline ADC. G[n] is non-linearly dependent on the previous residue " +"output magnitude (V_prev_ac^3), modeling HD3 memory effects." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_reference_error:1 +#: of +msgid "Apply Reference Incomplete Settling error (Vref Memory Effect)." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_reference_error:3 +#: of +msgid "" +"This simulates the reference voltage dropping due to load current (kick) " +"and failing to recover fully before the next sample." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_noise_shaping:16 +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_reference_error:6 +#: of +msgid "Params:" +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_reference_error:7 +#: of +msgid "" +"input_signal: The input signal. settling_tau: Recovery time constant in " +"units of samples (e.g., 2.0)." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_reference_error:9 +#: of +msgid "Larger = Slower recovery = Worse settling." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_reference_error:10 +#: of +msgid "" +"droop_strength: How much Vref drops proportional to signal amplitude " +"(0.01 = 1%)." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_am_noise:1 of +msgid "Apply random AM noise (Multiplicative Thermal Noise). Params:" +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_am_noise:3 of +msgid "" +"input_signal: The signal to modulate. am_noise_depth: The RMS level of " +"the noise relative to signal amplitude (default 0.1)." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_am_noise:5 of +msgid "" +"There is NO frequency parameter here because white noise contains ALL " +"frequencies." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_am_tone:1 of +msgid "" +"Apply AM tone (coherent modulation). Params: input_signal, am_tone_freq " +"(default 500kHz), am_tone_depth (default 0.05)." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_clipping:1 of +msgid "" +"Apply hard clipping based on signal's percentile (e.g., 1.0 clips " +"top/bottom 1%)." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_drift:1 of +msgid "" +"Apply drift (low-frequency random walk). Params: input_signal, " +"drift_scale (default 5e-5)." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_glitch:1 of +msgid "" +"Apply random glitches. Params: input_signal, glitch_prob (default 0.00015" +" = 0.015%), glitch_amplitude (default 0.1)." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_noise_shaping:1 +#: of +msgid "Apply noise-shaped quantization (1st to 5th order delta-sigma)." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_noise_shaping:3 +#: of +msgid "Noise Transfer Function: NTF(z) = (1 - z^-1)^order" +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_noise_shaping:5 +#: of +msgid "" +"Order characteristics: - 1st order: 20 dB/decade roll-off (common in " +"basic delta-sigma) - 2nd order: 40 dB/decade roll-off (most common for " +"oversampling ADCs) - 3rd order: 60 dB/decade roll-off (aggressive " +"shaping) - 4th order: 80 dB/decade roll-off (maximum practical, stability" +" concerns) - 5th order: 100 dB/decade roll-off (rarely used, high " +"stability risk)" +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_noise_shaping:12 +#: of +msgid "" +"This method applies actual quantization (using apply_quantization_noise)," +" then shapes the quantization error spectrum using the NTF filter. Pushes" +" quantization noise to higher frequencies, improving in-band SNR." +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_noise_shaping:17 +#: of +msgid "" +"input_signal: Input signal (None -> clean sine wave) n_bits: Quantizer " +"resolution (default 10) quant_range: Quantization range (v_min, v_max), " +"e.g., (0, 1) or (-0.5, 0.5) order: Noise shaping order (1, 2, 3, 4, or 5," +" default 1)" +msgstr "" + +#: ../../source/api/siggen.rst +msgid "Returns" +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_noise_shaping:22 +#: of +msgid "Signal with noise-shaped quantization noise added" +msgstr "" + +#: ../../source/api/siggen.rst +msgid "Raises" +msgstr "" + +#: adctoolbox.siggen.nonidealities.ADC_Signal_Generator.apply_noise_shaping:24 +#: of +msgid "If order is not in [1, 2, 3, 4, 5]" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/api/spectrum.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/api/spectrum.po new file mode 100644 index 0000000..f5cfd9d --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/api/spectrum.po @@ -0,0 +1,475 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/api/spectrum.rst:2 +msgid "Spectrum Analysis (spectrum)" +msgstr "" + +#: ../../source/api/spectrum.rst:4 +msgid "The ``spectrum`` module provides FFT-based spectrum analysis tools." +msgstr "" + +#: ../../source/api/spectrum.rst:9 +msgid "Single-Tone Spectrum" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:1 of +msgid "" +"Spectral analysis and plotting. (Wrapper function for modular core and " +"plotting)" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:3 of +msgid "" +"This function first calculates all metrics and then conditionally plots " +"the spectrum." +msgstr "" + +#: ../../source/api/spectrum.rst +msgid "Parameters" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:5 of +msgid "Input data (N,) or (M, N)" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:6 of +msgid "Sampling frequency" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:7 of +msgid "" +"Full scale range for normalization. Can be: scalar (direct range), " +"tuple/list [min, max], or None (auto-detect)" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:9 of +msgid "Window function type ('hann', 'hamming', 'boxcar')" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:10 of +msgid "Number of side bins around fundamental (None for automatic selection)" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:11 +#: adctoolbox.spectrum.analyze_spectrum_polar.analyze_spectrum_polar:8 +#: adctoolbox.spectrum.compute_spectrum.compute_spectrum:16 of +msgid "Oversampling ratio" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:12 of +msgid "Number of harmonics for THD calculation" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:13 of +msgid "" +"Noise floor calculation method (0=median, 1=trimmed mean, 2=exclude " +"harmonics)" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:14 of +msgid "Pre-defined signal level in dBFS" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:15 +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:12 +#: of +msgid "Plot the spectrum (True) or not (False)" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:16 +#: adctoolbox.spectrum.plot_spectrum.plot_spectrum:6 of +msgid "Display auto-generated title (True) or not (False)" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:17 +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:14 +#: adctoolbox.spectrum.plot_spectrum.plot_spectrum:4 of +msgid "Add labels and annotations (True) or not (False)" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:18 +#: adctoolbox.spectrum.plot_spectrum_polar.plot_spectrum_polar:5 of +msgid "Number of harmonics to mark on the plot" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:19 +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:15 +#: of +msgid "" +"Optional matplotlib axes object. If None and create_plot=True, a new " +"figure is created." +msgstr "" + +#: ../../source/api/spectrum.rst +msgid "Returns" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:21 of +msgid "" +"Dictionary with performance metrics: - enob: Effective Number of Bits" +" - sndr_dbc: Signal-to-Noise and Distortion Ratio (dBc) - " +"sfdr_dbc: Spurious-Free Dynamic Range (dBc) - snr_dbc: Signal-to-" +"Noise Ratio (dBc) - thd_dbc: Total Harmonic Distortion (dBc) - " +"sig_pwr_dbfs: Signal power (dBFS) - noise_floor_dbfs: Noise floor " +"(dBFS) - nsd_dbfs_hz: Noise Spectral Density (dBFS/Hz)" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:23 +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:19 +#: of +msgid "Dictionary with performance metrics:" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:24 +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:20 +#: of +msgid "enob: Effective Number of Bits" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:25 of +msgid "sndr_dbc: Signal-to-Noise and Distortion Ratio (dBc)" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:26 of +msgid "sfdr_dbc: Spurious-Free Dynamic Range (dBc)" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:27 of +msgid "snr_dbc: Signal-to-Noise Ratio (dBc)" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:28 of +msgid "thd_dbc: Total Harmonic Distortion (dBc)" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:29 of +msgid "sig_pwr_dbfs: Signal power (dBFS)" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:30 of +msgid "noise_floor_dbfs: Noise floor (dBFS)" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum.analyze_spectrum:31 of +msgid "nsd_dbfs_hz: Noise Spectral Density (dBFS/Hz)" +msgstr "" + +#: ../../source/api/spectrum.rst +msgid "Return type" +msgstr "" + +#: adctoolbox.spectrum.compute_spectrum.compute_spectrum:1 of +msgid "Calculate spectrum data for ADC analysis." +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum_polar.analyze_spectrum_polar:5 +#: adctoolbox.spectrum.compute_spectrum.compute_spectrum:3 of +msgid "Input ADC data, shape (N,) or (M, N)" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum_polar.analyze_spectrum_polar:10 +#: adctoolbox.spectrum.compute_spectrum.compute_spectrum:5 of +msgid "Sampling frequency in Hz" +msgstr "" + +#: adctoolbox.spectrum.compute_spectrum.compute_spectrum:7 of +msgid "Full scale range. If None, uses (max - min)" +msgstr "" + +#: adctoolbox.spectrum.compute_spectrum.compute_spectrum:9 of +msgid "Window type: 'boxcar', 'hann', 'hamming', etc." +msgstr "" + +#: adctoolbox.spectrum.compute_spectrum.compute_spectrum:11 of +msgid "" +"Side bins to exclude around signal. If None, automatically determined " +"based on: - Coherent signal (error < 0.01): ceil(enbw) - Non-coherent " +"signal: ceil(2*enbw) + 1 where enbw is the window's equivalent noise " +"bandwidth factor" +msgstr "" + +#: adctoolbox.spectrum.compute_spectrum.compute_spectrum:18 of +msgid "Maximum harmonic number for THD (default: 5 means harmonics 2-5)" +msgstr "" + +#: adctoolbox.spectrum.compute_spectrum.compute_spectrum:20 of +msgid "Noise floor method: 0=median, 1=trimmed mean, 2=exclude harmonics" +msgstr "" + +#: adctoolbox.spectrum.compute_spectrum.compute_spectrum:22 of +msgid "Override signal power (dBFS)" +msgstr "" + +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:11 +#: adctoolbox.spectrum.compute_spectrum.compute_spectrum:24 of +msgid "If True, performs coherent averaging with phase alignment" +msgstr "" + +#: adctoolbox.spectrum.compute_spectrum.compute_spectrum:26 of +msgid "High-pass cutoff frequency (Hz)" +msgstr "" + +#: adctoolbox.spectrum.compute_spectrum.compute_spectrum:28 of +msgid "Verbosity level" +msgstr "" + +#: adctoolbox.spectrum.compute_spectrum.compute_spectrum:31 of +msgid "Contains 'metrics' and 'plot_data' dictionaries" +msgstr "" + +#: adctoolbox.spectrum.plot_spectrum.plot_spectrum:1 of +msgid "Pure spectrum plotting using pre-computed analysis results." +msgstr "" + +#: adctoolbox.spectrum.plot_spectrum.plot_spectrum:3 of +msgid "Dictionary containing 'metrics' and 'plot_data' from compute_spectrum" +msgstr "" + +#: adctoolbox.spectrum.plot_spectrum.plot_spectrum:5 of +msgid "Number of harmonics to highlight" +msgstr "" + +#: adctoolbox.spectrum.plot_spectrum.plot_spectrum:7 of +msgid "Optional matplotlib axes object" +msgstr "" + +#: ../../source/api/spectrum.rst:16 +msgid "Polar Spectrum Plots" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum_polar.analyze_spectrum_polar:1 of +msgid "" +"Polar phase spectrum analysis and plotting. (Wrapper function for modular" +" core and plotting)" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum_polar.analyze_spectrum_polar:3 of +msgid "" +"This function calculates coherent spectrum with phase alignment and " +"optionally plots it in polar format." +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum_polar.analyze_spectrum_polar:6 of +msgid "Maximum code level for normalization. If None, uses (max - min)" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum_polar.analyze_spectrum_polar:7 of +msgid "Number of harmonics to mark on polar plot" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum_polar.analyze_spectrum_polar:9 of +msgid "High-pass cutoff frequency in Hz" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum_polar.analyze_spectrum_polar:11 of +msgid "Window function type ('boxcar', 'hann', 'hamming')" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum_polar.analyze_spectrum_polar:12 of +msgid "Plot the polar spectrum (True) or not (False)" +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum_polar.analyze_spectrum_polar:13 of +msgid "" +"Optional matplotlib polar axes object. If None and create_plot=True, uses" +" current axes." +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum_polar.analyze_spectrum_polar:14 +#: adctoolbox.spectrum.plot_spectrum_polar.plot_spectrum_polar:6 of +msgid "Fixed radial range in dB. If None, auto-scales." +msgstr "" + +#: adctoolbox.spectrum.analyze_spectrum_polar.analyze_spectrum_polar:16 of +msgid "Full results dictionary from compute_spectrum with coherent_averaging=True" +msgstr "" + +#: adctoolbox.spectrum.plot_spectrum_polar.plot_spectrum_polar:1 of +msgid "Pure polar spectrum plotting using pre-computed coherent spectrum results." +msgstr "" + +#: adctoolbox.spectrum.plot_spectrum_polar.plot_spectrum_polar:3 of +msgid "" +"Dictionary containing output from " +"compute_spectrum(coherent_averaging=True)" +msgstr "" + +#: adctoolbox.spectrum.plot_spectrum_polar.plot_spectrum_polar:4 of +msgid "Display metrics annotations (True) or not (False)" +msgstr "" + +#: adctoolbox.spectrum.plot_spectrum_polar.plot_spectrum_polar:7 of +msgid "Optional matplotlib polar axes object" +msgstr "" + +#: ../../source/api/spectrum.rst:22 +msgid "Two-Tone Spectrum" +msgstr "" + +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:1 of +msgid "" +"Two-tone spectrum analysis with IMD calculation. (Wrapper function for " +"modular core and plotting)" +msgstr "" + +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:3 of +msgid "" +"This function calculates IMD metrics and optionally plots the two-tone " +"spectrum." +msgstr "" + +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:5 +#: adctoolbox.spectrum.compute_two_tone_spectrum.compute_two_tone_spectrum:6 of +msgid "ADC output data, shape (M, N) for M runs or (N,) for single run" +msgstr "" + +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:6 of +msgid "Sampling frequency (Hz)" +msgstr "" + +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:7 of +msgid "Full scale range (max-min) for normalization" +msgstr "" + +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:8 of +msgid "Number of harmonics to mark on plot" +msgstr "" + +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:9 of +msgid "Window function type ('hann', 'blackman', 'hamming', 'boxcar')" +msgstr "" + +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:10 +#: of +msgid "Number of side bins around fundamental" +msgstr "" + +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:13 +#: of +msgid "Display title (True) or not (False)" +msgstr "" + +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:17 +#: of +msgid "" +"Dictionary with performance metrics: - enob: Effective Number of Bits" +" - sndr_db: Signal-to-Noise and Distortion Ratio (dB) - sfdr_db: " +"Spurious-Free Dynamic Range (dB) - snr_db: Signal-to-Noise Ratio (dB)" +" - thd_db: Total Harmonic Distortion (dB) - signal_power_1_dbfs: " +"Power of first tone (dBFS) - signal_power_2_dbfs: Power of second " +"tone (dBFS) - noise_floor_db: Noise floor (dB) - imd2_dbc: 2nd " +"order intermodulation distortion (dBc) - imd3_dbc: 3rd order " +"intermodulation distortion (dBc)" +msgstr "" + +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:21 +#: of +msgid "sndr_db: Signal-to-Noise and Distortion Ratio (dB)" +msgstr "" + +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:22 +#: of +msgid "sfdr_db: Spurious-Free Dynamic Range (dB)" +msgstr "" + +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:23 +#: of +msgid "snr_db: Signal-to-Noise Ratio (dB)" +msgstr "" + +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:24 +#: of +msgid "thd_db: Total Harmonic Distortion (dB)" +msgstr "" + +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:25 +#: of +msgid "signal_power_1_dbfs: Power of first tone (dBFS)" +msgstr "" + +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:26 +#: of +msgid "signal_power_2_dbfs: Power of second tone (dBFS)" +msgstr "" + +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:27 +#: of +msgid "noise_floor_db: Noise floor (dB)" +msgstr "" + +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:28 +#: of +msgid "imd2_dbc: 2nd order intermodulation distortion (dBc)" +msgstr "" + +#: adctoolbox.spectrum.analyze_two_tone_spectrum.analyze_two_tone_spectrum:29 +#: of +msgid "imd3_dbc: 3rd order intermodulation distortion (dBc)" +msgstr "" + +#: adctoolbox.spectrum.compute_two_tone_spectrum.compute_two_tone_spectrum:1 of +msgid "Calculate two-tone spectrum data with IMD analysis." +msgstr "" + +#: adctoolbox.spectrum.compute_two_tone_spectrum.compute_two_tone_spectrum:3 of +msgid "" +"Pure calculation function - no plotting or side effects. Follows the " +"modular architecture pattern." +msgstr "" + +#: adctoolbox.spectrum.compute_two_tone_spectrum.compute_two_tone_spectrum:8 of +msgid "Sampling frequency (Hz), default: 1.0" +msgstr "" + +#: adctoolbox.spectrum.compute_two_tone_spectrum.compute_two_tone_spectrum:10 +#: of +msgid "Maximum code range, default: max-min of data" +msgstr "" + +#: adctoolbox.spectrum.compute_two_tone_spectrum.compute_two_tone_spectrum:12 +#: of +msgid "Window type: 'hann', 'blackman', 'hamming', 'boxcar', default: 'hann'" +msgstr "" + +#: adctoolbox.spectrum.compute_two_tone_spectrum.compute_two_tone_spectrum:14 +#: of +msgid "Side bins to include in signal power, default: 1" +msgstr "" + +#: adctoolbox.spectrum.compute_two_tone_spectrum.compute_two_tone_spectrum:16 +#: of +msgid "Number of harmonic orders to calculate for IMD products, default: 7" +msgstr "" + +#: adctoolbox.spectrum.compute_two_tone_spectrum.compute_two_tone_spectrum:18 +#: of +msgid "If True, performs coherent averaging with phase alignment, default: False" +msgstr "" + +#: adctoolbox.spectrum.compute_two_tone_spectrum.compute_two_tone_spectrum:21 +#: of +msgid "" +"Dictionary containing: - 'metrics': Performance metrics (enob, sndr, " +"sfdr, snr, thd, etc.) - 'plot_data': Data for plotting (freq, spec_db, " +"bin1, bin2, etc.) - 'imd_bins': IMD product bin locations" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/api/toolset.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/api/toolset.po new file mode 100644 index 0000000..0105f45 --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/api/toolset.po @@ -0,0 +1,135 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/api/toolset.rst:2 +msgid "Toolsets and Dashboards (toolset)" +msgstr "" + +#: ../../source/api/toolset.rst:4 +msgid "" +"The ``toolset`` module provides complete analysis toolsets and dashboard " +"generation capabilities." +msgstr "" + +#: adctoolbox.toolset:1 of +msgid "Toolset subpackage: Dashboard generation utilities." +msgstr "" + +#: adctoolbox.toolset:3 of +msgid "" +"This subpackage provides high-level dashboard functions that combine " +"multiple analysis tools into comprehensive visualizations." +msgstr "" + +#: adctoolbox.toolset.generate_aout_dashboard.generate_aout_dashboard:1 of +msgid "Generate comprehensive analysis dashboard with 8 subplots in a 2x4 panel." +msgstr "" + +#: ../../source/api/toolset.rst +msgid "Parameters" +msgstr "" + +#: adctoolbox.toolset.generate_aout_dashboard.generate_aout_dashboard:3 of +msgid "Input signal (ADC output or analog signal)" +msgstr "" + +#: adctoolbox.toolset.generate_aout_dashboard.generate_aout_dashboard:5 of +msgid "Sampling frequency (default: 1.0 for normalized frequency)" +msgstr "" + +#: adctoolbox.toolset.generate_aout_dashboard.generate_aout_dashboard:7 of +msgid "" +"Signal frequency in Hz (default: None, auto-estimate) Will be converted " +"to normalized frequency where needed" +msgstr "" + +#: adctoolbox.toolset.generate_aout_dashboard.generate_aout_dashboard:10 +#: adctoolbox.toolset.generate_dout_dashboard.generate_dout_dashboard:9 of +msgid "Path to save figure (default: None, don't save)" +msgstr "" + +#: adctoolbox.toolset.generate_aout_dashboard.generate_aout_dashboard:12 of +msgid "ADC resolution in bits (default: 12)" +msgstr "" + +#: ../../source/api/toolset.rst +msgid "Returns" +msgstr "" + +#: adctoolbox.toolset.generate_aout_dashboard.generate_aout_dashboard:15 of +msgid "" +"* **fig** (*matplotlib.figure.Figure*) -- Figure object containing the " +"dashboard * **axes** (*ndarray*) -- Array of axes objects (2x4 grid, " +"flattened)" +msgstr "" + +#: adctoolbox.toolset.generate_aout_dashboard.generate_aout_dashboard:15 +#: adctoolbox.toolset.generate_dout_dashboard.generate_dout_dashboard:14 of +msgid "" +"**fig** (*matplotlib.figure.Figure*) -- Figure object containing the " +"dashboard" +msgstr "" + +#: adctoolbox.toolset.generate_aout_dashboard.generate_aout_dashboard:16 of +msgid "**axes** (*ndarray*) -- Array of axes objects (2x4 grid, flattened)" +msgstr "" + +#: adctoolbox.toolset.generate_dout_dashboard.generate_dout_dashboard:1 of +msgid "" +"Generate comprehensive digital analysis dashboard with 6 subplots in a " +"2x3 panel." +msgstr "" + +#: adctoolbox.toolset.generate_dout_dashboard.generate_dout_dashboard:3 of +msgid "Digital bits (N samples x B bits, MSB to LSB order)" +msgstr "" + +#: adctoolbox.toolset.generate_dout_dashboard.generate_dout_dashboard:5 of +msgid "Normalized frequency (0-0.5). If None, auto-detect from calibration" +msgstr "" + +#: adctoolbox.toolset.generate_dout_dashboard.generate_dout_dashboard:7 of +msgid "Nominal weights for bits (default: None, uses binary weights)" +msgstr "" + +#: adctoolbox.toolset.generate_dout_dashboard.generate_dout_dashboard:11 of +msgid "Whether to display figure (default: False)" +msgstr "" + +#: adctoolbox.toolset.generate_dout_dashboard.generate_dout_dashboard:14 of +msgid "" +"* **fig** (*matplotlib.figure.Figure*) -- Figure object containing the " +"dashboard * **axes** (*ndarray*) -- Array of axes objects (2x3 grid, " +"flattened)" +msgstr "" + +#: adctoolbox.toolset.generate_dout_dashboard.generate_dout_dashboard:15 of +msgid "**axes** (*ndarray*) -- Array of axes objects (2x3 grid, flattened)" +msgstr "" + +#: ../../source/api/toolset.rst:14 +msgid "Analog Output Toolset" +msgstr "" + +#: ../../source/api/toolset.rst:19 +msgid "Digital Output Toolset" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/changelog.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/changelog.po new file mode 100644 index 0000000..4375278 --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/changelog.po @@ -0,0 +1,425 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/changelog.rst:2 +msgid "Changelog" +msgstr "" + +#: ../../source/changelog.rst:4 +msgid "" +"For the complete changelog with detailed version history, see the " +"`CHANGELOG.md " +"`_ file " +"in the repository." +msgstr "" + +#: ../../source/changelog.rst:7 +msgid "Version 0.4.0 (Latest)" +msgstr "" + +#: ../../source/changelog.rst:9 ../../source/changelog.rst:49 +msgid "**Release Date**: 2025-12-18" +msgstr "" + +#: ../../source/changelog.rst:11 +msgid "" +"**Documentation Release** - Complete Sphinx documentation overhaul with " +"algorithm guides." +msgstr "" + +#: ../../source/changelog.rst:14 +msgid "Added" +msgstr "" + +#: ../../source/changelog.rst:16 ../../source/changelog.rst:110 +msgid "**Complete Documentation Overhaul**:" +msgstr "" + +#: ../../source/changelog.rst:18 +msgid "15 detailed algorithm documentation pages with Python API" +msgstr "" + +#: ../../source/changelog.rst:19 +msgid "Updated installation guide emphasizing ``adctoolbox-get-examples``" +msgstr "" + +#: ../../source/changelog.rst:20 ../../source/changelog.rst:116 +msgid "Enhanced quickstart guide with learning path" +msgstr "" + +#: ../../source/changelog.rst:21 +msgid "All API reference docs updated to Python snake_case naming" +msgstr "" + +#: ../../source/changelog.rst:24 +msgid "Changed" +msgstr "" + +#: ../../source/changelog.rst:26 +msgid "**Documentation Structure**:" +msgstr "" + +#: ../../source/changelog.rst:28 +msgid "Installation guide shortened, git clone moved to bottom" +msgstr "" + +#: ../../source/changelog.rst:29 +msgid "" +"Quickstart restructured to start with basic examples (exp_b01, exp_b02, " +"then exp_s01)" +msgstr "" + +#: ../../source/changelog.rst:30 +msgid "Used actual code from examples instead of synthetic snippets" +msgstr "" + +#: ../../source/changelog.rst:31 +msgid "Emphasized \"Learning with Examples\" throughout documentation" +msgstr "" + +#: ../../source/changelog.rst:34 +msgid "Removed" +msgstr "" + +#: ../../source/changelog.rst:36 +msgid "Deleted 13 obsolete MATLAB-named algorithm documentation files" +msgstr "" + +#: ../../source/changelog.rst:37 +msgid "Removed obsolete ``src/__init__.py`` file" +msgstr "" + +#: ../../source/changelog.rst:40 +msgid "Fixed" +msgstr "" + +#: ../../source/changelog.rst:42 +msgid "Version number synchronization across all files" +msgstr "" + +#: ../../source/changelog.rst:43 +msgid "Dynamic versioning in ``pyproject.toml``" +msgstr "" + +#: ../../source/changelog.rst:44 +msgid "Documentation links and references updated to v0.4.0" +msgstr "" + +#: ../../source/changelog.rst:47 +msgid "Version 0.3.0" +msgstr "" + +#: ../../source/changelog.rst:51 +msgid "" +"**Major Refactoring Release** - Complete Python architecture " +"modernization with 45 examples." +msgstr "" + +#: ../../source/changelog.rst:54 +msgid "Breaking Changes" +msgstr "" + +#: ../../source/changelog.rst:56 +msgid "" +"**API Naming**: All functions converted from MATLAB camelCase to Python " +"snake_case" +msgstr "" + +#: ../../source/changelog.rst:58 +msgid "``sineFit`` → ``fit_sine_4param``" +msgstr "" + +#: ../../source/changelog.rst:59 +msgid "``INLsine`` → ``analyze_inl_from_sine``" +msgstr "" + +#: ../../source/changelog.rst:60 +msgid "``specPlot`` → ``analyze_spectrum``" +msgstr "" + +#: ../../source/changelog.rst:61 +msgid "``errPDF`` → ``analyze_error_pdf``" +msgstr "" + +#: ../../source/changelog.rst:62 +msgid "``FGCalSine`` → ``calibrate_weight_sine``" +msgstr "" + +#: ../../source/changelog.rst:63 +msgid "And many more..." +msgstr "" + +#: ../../source/changelog.rst:65 +msgid "" +"**Module Structure**: Consolidated and reorganized for better " +"maintainability" +msgstr "" + +#: ../../source/changelog.rst:67 +msgid "" +"``fundamentals``: Sine fitting, frequency utils, unit conversions, FOM " +"metrics" +msgstr "" + +#: ../../source/changelog.rst:68 +msgid "``spectrum``: Single-tone, two-tone, polar analysis" +msgstr "" + +#: ../../source/changelog.rst:69 +msgid "``aout``: Analog error analysis (10 functions)" +msgstr "" + +#: ../../source/changelog.rst:70 +msgid "``dout``: Digital calibration (3 functions)" +msgstr "" + +#: ../../source/changelog.rst:71 +msgid "``siggen``: Signal generator with non-idealities" +msgstr "" + +#: ../../source/changelog.rst:72 +msgid "``oversampling``: NTF analysis" +msgstr "" + +#: ../../source/changelog.rst:74 +msgid "" +"**Return Values**: All functions now return dictionaries instead of " +"tuples for clarity" +msgstr "" + +#: ../../source/changelog.rst:77 +msgid "New Features" +msgstr "" + +#: ../../source/changelog.rst:79 +msgid "**45 Ready-to-Run Examples** (up from 21) across 6 categories:" +msgstr "" + +#: ../../source/changelog.rst:81 +msgid "``01_basic/`` - Fundamentals (2 examples)" +msgstr "" + +#: ../../source/changelog.rst:82 +msgid "``02_spectrum/`` - FFT-Based Analysis (14 examples)" +msgstr "" + +#: ../../source/changelog.rst:83 +msgid "``03_generate_signals/`` - Non-Ideality Modeling (6 examples)" +msgstr "" + +#: ../../source/changelog.rst:84 +msgid "``04_debug_analog/`` - Error Characterization (13 examples)" +msgstr "" + +#: ../../source/changelog.rst:85 +msgid "``05_debug_digital/`` - Calibration & Redundancy (5 examples)" +msgstr "" + +#: ../../source/changelog.rst:86 +msgid "``07_conversions/`` - Conversions (5 examples)" +msgstr "" + +#: ../../source/changelog.rst:88 +msgid "**Enhanced Error Analysis**:" +msgstr "" + +#: ../../source/changelog.rst:90 +msgid "``analyze_error_by_phase``: AM/PM decomposition" +msgstr "" + +#: ../../source/changelog.rst:91 +msgid "``analyze_error_spectrum``: Error frequency analysis" +msgstr "" + +#: ../../source/changelog.rst:92 +msgid "``analyze_decomposition_polar``: Polar harmonic visualization" +msgstr "" + +#: ../../source/changelog.rst:93 +msgid "``fit_static_nonlin``: Extract k2/k3 coefficients" +msgstr "" + +#: ../../source/changelog.rst:95 +msgid "**Expanded Fundamentals Module**:" +msgstr "" + +#: ../../source/changelog.rst:97 +msgid "Comprehensive unit conversions (dB, power, voltage, frequency, NSD)" +msgstr "" + +#: ../../source/changelog.rst:98 +msgid "FOM calculations (Walden, Schreier)" +msgstr "" + +#: ../../source/changelog.rst:99 +msgid "Noise/jitter limit calculations" +msgstr "" + +#: ../../source/changelog.rst:100 +msgid "Data validation utilities" +msgstr "" + +#: ../../source/changelog.rst:102 +msgid "**CLI Improvements**:" +msgstr "" + +#: ../../source/changelog.rst:104 +msgid "``adctoolbox-get-examples``: One-command example deployment" +msgstr "" + +#: ../../source/changelog.rst:105 +msgid "Organized output directory structure" +msgstr "" + +#: ../../source/changelog.rst:108 +msgid "Documentation" +msgstr "" + +#: ../../source/changelog.rst:112 +msgid "All algorithm docs updated to Python API" +msgstr "" + +#: ../../source/changelog.rst:113 +msgid "15 detailed algorithm documentation pages" +msgstr "" + +#: ../../source/changelog.rst:114 +msgid "Removed 13 obsolete MATLAB-named docs" +msgstr "" + +#: ../../source/changelog.rst:115 +msgid "Updated installation guide with emphasis on examples" +msgstr "" + +#: ../../source/changelog.rst:118 +msgid "**New Algorithm Documentation**:" +msgstr "" + +#: ../../source/changelog.rst:120 +msgid "``fit_sine_4param``: IEEE Std 1057/1241 sine fitting" +msgstr "" + +#: ../../source/changelog.rst:121 +msgid "``analyze_inl_from_sine``: INL/DNL from histogram method" +msgstr "" + +#: ../../source/changelog.rst:122 +msgid "``analyze_spectrum``: Comprehensive FFT analysis" +msgstr "" + +#: ../../source/changelog.rst:123 +msgid "``analyze_error_by_phase``: AM/PM error decomposition" +msgstr "" + +#: ../../source/changelog.rst:124 +msgid "``fit_static_nonlin``: Nonlinearity coefficient extraction" +msgstr "" + +#: ../../source/changelog.rst:125 +msgid "And 10 more detailed guides" +msgstr "" + +#: ../../source/changelog.rst:128 +msgid "Improvements" +msgstr "" + +#: ../../source/changelog.rst:130 +msgid "" +"**Better API Consistency**: All analyze functions follow pattern: " +"``analyze_*(..., show_plot=True)``" +msgstr "" + +#: ../../source/changelog.rst:131 +msgid "**Clearer Returns**: Dictionary returns with self-documenting keys" +msgstr "" + +#: ../../source/changelog.rst:132 +msgid "" +"**Enhanced Plotting**: Optional plotting with ``show_plot`` parameter, " +"custom axes support" +msgstr "" + +#: ../../source/changelog.rst:133 +msgid "**Validation**: Input validation with clear error messages" +msgstr "" + +#: ../../source/changelog.rst:134 +msgid "**Type Hints**: Added to core functions for better IDE support" +msgstr "" + +#: ../../source/changelog.rst:137 +msgid "Bug Fixes" +msgstr "" + +#: ../../source/changelog.rst:139 +msgid "Fixed frequency estimation edge cases in ``fit_sine_4param``" +msgstr "" + +#: ../../source/changelog.rst:140 +msgid "Corrected INL/DNL clipping behavior in ``analyze_inl_from_sine``" +msgstr "" + +#: ../../source/changelog.rst:141 +msgid "Improved numerical stability in weight calibration" +msgstr "" + +#: ../../source/changelog.rst:144 +msgid "Version 0.2.4" +msgstr "" + +#: ../../source/changelog.rst:146 +msgid "Legacy release with MATLAB-style naming conventions." +msgstr "" + +#: ../../source/changelog.rst:149 +msgid "Features" +msgstr "" + +#: ../../source/changelog.rst:151 +msgid "21 ready-to-run examples" +msgstr "" + +#: ../../source/changelog.rst:152 +msgid "Analog output analysis (9 diagnostic tools)" +msgstr "" + +#: ../../source/changelog.rst:153 +msgid "Digital output analysis (6 tools)" +msgstr "" + +#: ../../source/changelog.rst:154 +msgid "Dual MATLAB and Python implementations" +msgstr "" + +#: ../../source/changelog.rst:155 +msgid "Full documentation" +msgstr "" + +#: ../../source/changelog.rst:158 +msgid "Previous Versions" +msgstr "" + +#: ../../source/changelog.rst:160 +msgid "" +"For historical version information, please refer to the `CHANGELOG.md " +"`_ file." +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/examples/expected_output_02_spectrum.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/examples/expected_output_02_spectrum.po new file mode 100644 index 0000000..555c29a --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/examples/expected_output_02_spectrum.po @@ -0,0 +1,291 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/examples/expected_output_02_spectrum.rst:2 +msgid "Expected Output: 02_spectrum" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:4 +msgid "" +"This document shows the expected console output and example figures from " +"all examples in `python/src/adctoolbox/examples/02_spectrum/`." +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:7 +msgid "Summary" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:9 +msgid "All examples in `02_spectrum` demonstrate spectrum analysis capabilities:" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:11 +msgid "" +"**exp_s01-s03**: Basic spectrum analysis (simplest, interactive, save " +"figure)" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:12 +msgid "**exp_s04**: Dynamic range sweep" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:13 +msgid "**exp_s05**: Harmonic spur annotation" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:14 +msgid "**exp_s06**: FFT length and OSR sweep" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:15 +msgid "**exp_s07**: Power vs coherent averaging" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:16 +msgid "" +"**exp_s08**: Windowing functions comparison (Kaiser, Blackman-Harris, " +"Hann, Hamming)" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:17 +msgid "**exp_s10**: Polar spectrum - thermal noise vs harmonic distortion" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:18 +msgid "**exp_s11**: Polar spectrum - static nonlinearity vs memory effect" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:19 +msgid "**exp_s12**: Polar spectrum - coherent averaging improvement" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:20 +msgid "**exp_s21**: Two-tone spectrum analysis with IMD products" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:21 +msgid "**exp_s22**: Two-tone IMD comparison (weak vs strong nonlinearity)" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:22 +msgid "**exp_s23**: Two-tone coherent averaging" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:24 +msgid "**Total Examples**: 14" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:29 +msgid "exp_s01_analyze_spectrum_simplest.py" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:31 +msgid "**Description**: Simplest example - analyze spectrum with minimal code." +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:41 +msgid "exp_s02_analyze_spectrum_interactive.py" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:43 +msgid "**Description**: Interactive example - displays plot window." +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:56 +msgid "exp_s03_analyze_spectrum_savefig.py" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:58 +msgid "**Description**: Save figure to file instead of displaying." +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:80 +msgid "Basic spectrum analysis" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:85 +msgid "Basic FFT spectrum analysis with all key metrics" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:89 +msgid "exp_s04_sweep_dynamic_range.py" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:91 +msgid "**Description**: Sweep signal amplitude to characterize dynamic range." +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:120 +msgid "Dynamic range sweep" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:125 +msgid "FFT metrics across input signal amplitudes (dynamic range sweep)" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:129 +msgid "exp_s05_annotating_spur.py" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:131 +msgid "" +"**Description**: Annotate spur frequencies and demonstrate harmonic " +"aliasing." +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:151 +msgid "Spur annotation" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:156 +msgid "Spectrum with annotated fundamental, harmonics, and spurs" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:160 +msgid "exp_s06_sweeping_fft_and_osr.py" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:162 +msgid "**Description**: Compare FFT length vs OSR for improving spectrum quality." +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:210 +msgid "exp_s07_spectrum_averaging.py" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:212 +msgid "**Description**: Compare power averaging vs coherent averaging." +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:265 +msgid "Spectrum averaging comparison" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:270 +msgid "Power averaging vs coherent averaging for noise reduction" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:274 +msgid "exp_s08_windowing_deep_dive.py" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:276 +msgid "**Description**: Deep dive into window functions for different scenarios." +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:348 +msgid "" +"**Note**: Kaiser window shows SNR=150dB in short FFT scenario - this is a" +" known edge case with very short FFT and wide windows." +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:351 +msgid "Window function comparison - spectral leakage" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:356 +msgid "Comparing spectral leakage across different window functions" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:360 +msgid "exp_s10_polar_noise_and_harmonics.py" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:362 +msgid "" +"**Description**: Polar plot comparison of thermal noise vs harmonic " +"distortion." +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:384 +msgid "Polar spectrum - noise vs harmonics" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:389 +msgid "Polar spectrum comparing thermal noise and harmonic distortion" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:393 +msgid "exp_s11_polar_memory_effect.py" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:395 +msgid "**Description**: Polar plot showing static vs dynamic nonlinearity." +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:423 +msgid "exp_s12_polar_coherent_averaging.py" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:425 +msgid "**Description**: Polar plot demonstrating coherent averaging improvement." +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:444 +msgid "Polar spectrum - coherent averaging improvement" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:449 +msgid "Polar spectrum demonstrating coherent averaging improvement" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:453 +msgid "exp_s21_analyze_two_tone_spectrum.py" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:455 +msgid "**Description**: Analyze two-tone spectrum with IMD products." +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:470 +msgid "Two-tone spectrum analysis with IMD" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:475 +msgid "Two-tone spectrum showing fundamental tones and IMD products" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:479 +msgid "exp_s22_two_tone_imd_comparison.py" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:481 +msgid "**Description**: Compare weak vs strong nonlinearity effects on IMD." +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:497 +msgid "Two-tone IMD comparison" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:502 +msgid "Comparing IMD products with weak vs strong nonlinearity" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:506 +msgid "exp_s23_two_tone_spectrum_averaging.py" +msgstr "" + +#: ../../source/examples/expected_output_02_spectrum.rst:508 +msgid "" +"**Description**: Two-tone coherent averaging (previously had documented " +"bug, now fixed)." +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/examples/expected_output_03_generate_signals.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/examples/expected_output_03_generate_signals.po new file mode 100644 index 0000000..e5d4e37 --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/examples/expected_output_03_generate_signals.po @@ -0,0 +1,139 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/examples/expected_output_03_generate_signals.rst:2 +msgid "Expected Output: 03_generate_signals" +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:4 +msgid "" +"This document shows the expected console output and example figures from " +"all examples in `python/src/adctoolbox/examples/03_generate_signals/`." +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:7 +msgid "Summary" +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:9 +msgid "" +"All examples in `03_generate_signals` demonstrate various signal " +"generation capabilities:" +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:11 +msgid "**exp_g01**: Thermal noise effects on signal quality (4 test cases)" +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:12 +msgid "**exp_g03**: Quantization noise scaling (2-16 bits, 8 test cases)" +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:13 +msgid "**exp_g04**: Jitter-induced SNR degradation (0.2-32 GHz, 8 test cases)" +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:14 +msgid "**exp_g05**: Static nonlinearity harmonic distortion (4 sign combinations)" +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:15 +msgid "**exp_g06**: Isolated nonlinearity effects (8 different types)" +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:16 +msgid "**exp_g07**: Interference effects on spectrum (8 interference types)" +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:18 +msgid "" +"**Total Examples**: 6 **Total Test Cases**: 40 different signal " +"conditions analyzed" +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:24 +msgid "exp_g01_generate_signal_demo.py" +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:26 +msgid "**Description**: Demonstrate thermal noise effect on signal spectrum." +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:54 +msgid "exp_g03_sweep_quant_bits.py" +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:56 +msgid "" +"**Description**: Sweep quantization bits to analyze how noise floor " +"changes with ADC resolution." +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:79 +msgid "Quantization noise vs resolution" +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:84 +msgid "SNR degradation due to quantization noise (2-16 bit resolution sweep)" +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:88 +msgid "exp_g04_sweep_jitter_fin.py" +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:90 +msgid "" +"**Description**: Sweep input frequency to analyze sampling jitter impact " +"on SNR." +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:112 +msgid "exp_g05_sweep_static_nonlin.py" +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:114 +msgid "" +"**Description**: Sweep static nonlinearity coefficients to analyze " +"harmonic distortion." +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:130 +msgid "exp_g06_sweep_dynamic_nonlin.py" +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:132 +msgid "**Description**: Compare isolated nonlinearity effects on ADC spectrum." +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:154 +msgid "exp_g07_sweep_interferences.py" +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:156 +msgid "" +"**Description**: Sweep different interference types to show effects on " +"ADC spectrum." +msgstr "" + +#: ../../source/examples/expected_output_03_generate_signals.rst:179 +msgid "---" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/examples/expected_output_04_debug_analog.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/examples/expected_output_04_debug_analog.po new file mode 100644 index 0000000..c3158b0 --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/examples/expected_output_04_debug_analog.po @@ -0,0 +1,186 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/examples/expected_output_04_debug_analog.rst:2 +msgid "Expected Output: 04_debug_analog" +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:4 +msgid "" +"This document shows the expected console output and example figures from " +"all examples in `python/src/adctoolbox/examples/04_debug_analog/`." +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:7 +msgid "Summary" +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:9 +msgid "" +"All examples in `04_debug_analog` demonstrate analog output analysis " +"capabilities:" +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:11 +msgid "**Total Examples**: 15" +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:13 +msgid "" +"**Categories**: - **Sine Fitting**: exp_a01 (4-parameter fitting) - " +"**Error Analysis**: exp_a02-a04 (by value, by phase, jitter calculation) " +"- **Harmonic Decomposition**: exp_a11-a12 (time domain and polar) - " +"**Statistical Analysis**: exp_a21-a25 (PDF, spectrum, autocorrelation, " +"envelope, comparison) - **Nonlinearity**: exp_a31-a32 (static " +"nonlinearity fitting, INL/DNL) - **Phase Plane**: exp_a41-a42 (standard " +"and error phase plane)" +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:24 +msgid "exp_a01_fit_sine_4param.py" +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:26 +msgid "**Description**: Basic 4-parameter sine fitting with noise." +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:44 +msgid "exp_a02_analyze_error_by_value.py" +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:46 +msgid "**Description**: Analyze ADC errors binned by input signal level." +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:55 +msgid "exp_a03_analyze_error_by_phase.py" +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:57 +msgid "**Description**: Decompose noise into AM/PM components vs signal phase." +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:163 +msgid "exp_a04_jitter_calculation.py" +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:165 +msgid "**Description**: Calculate jitter from spectrum analysis." +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:197 +msgid "exp_a11_decompose_harmonics.py" +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:199 +msgid "**Description**: Decompose signal into harmonics in time domain." +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:208 +msgid "exp_a12_decompose_harmonics_polar.py" +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:210 +msgid "**Description**: Decompose harmonics with polar phase visualization." +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:219 +msgid "exp_a21_analyze_error_pdf.py" +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:221 +msgid "" +"**Description**: Analyze error probability density functions for various " +"non-idealities." +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:252 +msgid "exp_a22_analyze_error_spectrum.py" +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:254 +msgid "**Description**: Analyze error spectrum for various non-idealities." +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:264 +msgid "exp_a23_analyze_error_autocorrelation.py" +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:266 +msgid "**Description**: Analyze error autocorrelation for various non-idealities." +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:297 +msgid "exp_a24_analyze_error_envelope_spectrum.py" +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:299 +msgid "" +"**Description**: Analyze error envelope spectrum for various non-" +"idealities." +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:309 +msgid "exp_a25_spectra.py" +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:311 +msgid "**Description**: Compare spectra across various non-idealities." +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:342 +msgid "exp_a31_fit_static_nonlin.py" +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:344 +msgid "**Description**: Fit static nonlinearity coefficients from sine wave." +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:359 +msgid "exp_a32_inl_from_sine_sweep_length.py" +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:361 +msgid "**Description**: Sweep data length for INL/DNL extraction from sine wave." +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:377 +msgid "exp_a41_analyze_phase_plane.py" +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:379 +msgid "**Description**: Analyze phase plane plots for various non-idealities." +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:410 +msgid "exp_a42_analyze_error_phase_plane.py" +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:412 +msgid "" +"**Description**: Analyze error phase plane (1000x more sensitive for " +"detecting harmonics)." +msgstr "" + +#: ../../source/examples/expected_output_04_debug_analog.rst:452 +msgid "---" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/examples/expected_output_05_debug_digital.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/examples/expected_output_05_debug_digital.po new file mode 100644 index 0000000..b693aa5 --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/examples/expected_output_05_debug_digital.po @@ -0,0 +1,119 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/examples/expected_output_05_debug_digital.rst:2 +msgid "Expected Output: 05_debug_digital" +msgstr "" + +#: ../../source/examples/expected_output_05_debug_digital.rst:4 +msgid "" +"This document shows the expected console output and example figures from " +"all examples in `python/src/adctoolbox/examples/05_debug_digital/`." +msgstr "" + +#: ../../source/examples/expected_output_05_debug_digital.rst:7 +msgid "Summary" +msgstr "" + +#: ../../source/examples/expected_output_05_debug_digital.rst:9 +msgid "" +"All examples in `05_debug_digital` demonstrate digital output analysis " +"capabilities:" +msgstr "" + +#: ../../source/examples/expected_output_05_debug_digital.rst:11 +msgid "**Total Examples**: 7" +msgstr "" + +#: ../../source/examples/expected_output_05_debug_digital.rst:13 +msgid "" +"**Categories**: - **Weight Calibration**: exp_d01-d03 (lite, full, " +"redundancy comparison) - **Digital Debugging**: exp_d11-d14 (bit " +"activity, ENOB sweep, weight scaling, overflow check)" +msgstr "" + +#: ../../source/examples/expected_output_05_debug_digital.rst:17 +msgid "" +"**Key Features**: - Foreground calibration using sine waves - Redundancy " +"analysis for pipeline ADCs - Bit-level activity monitoring - Weight and " +"radix calculations - Overflow detection" +msgstr "" + +#: ../../source/examples/expected_output_05_debug_digital.rst:27 +msgid "exp_d01_cal_weight_sine_lite.py" +msgstr "" + +#: ../../source/examples/expected_output_05_debug_digital.rst:29 +msgid "**Description**: Lightweight weight calibration using sine wave." +msgstr "" + +#: ../../source/examples/expected_output_05_debug_digital.rst:56 +msgid "exp_d02_cal_weight_sine.py" +msgstr "" + +#: ../../source/examples/expected_output_05_debug_digital.rst:58 +msgid "**Description**: Full weight calibration with detailed analysis." +msgstr "" + +#: ../../source/examples/expected_output_05_debug_digital.rst:73 +msgid "exp_d03_redundancy_comparison.py" +msgstr "" + +#: ../../source/examples/expected_output_05_debug_digital.rst:75 +msgid "**Description**: Compare calibration with and without redundancy." +msgstr "" + +#: ../../source/examples/expected_output_05_debug_digital.rst:89 +msgid "exp_d11_bit_activity.py" +msgstr "" + +#: ../../source/examples/expected_output_05_debug_digital.rst:91 +msgid "**Description**: Check bit activity for digital debugging." +msgstr "" + +#: ../../source/examples/expected_output_05_debug_digital.rst:104 +msgid "exp_d12_sweep_bit_enob.py" +msgstr "" + +#: ../../source/examples/expected_output_05_debug_digital.rst:106 +msgid "**Description**: Sweep bit count to find optimal ENOB." +msgstr "" + +#: ../../source/examples/expected_output_05_debug_digital.rst:117 +msgid "exp_d13_weight_scaling.py" +msgstr "" + +#: ../../source/examples/expected_output_05_debug_digital.rst:119 +msgid "**Description**: Analyze weight scaling and radix calculations." +msgstr "" + +#: ../../source/examples/expected_output_05_debug_digital.rst:130 +msgid "exp_d14_overflow_check.py" +msgstr "" + +#: ../../source/examples/expected_output_05_debug_digital.rst:132 +msgid "**Description**: Check for overflow in digital output codes." +msgstr "" + +#: ../../source/examples/expected_output_05_debug_digital.rst:143 +msgid "---" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/examples/expected_output_06_use_toolsets.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/examples/expected_output_06_use_toolsets.po new file mode 100644 index 0000000..71da263 --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/examples/expected_output_06_use_toolsets.po @@ -0,0 +1,154 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:2 +msgid "Expected Output: 06_use_toolsets" +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:4 +msgid "" +"This document shows the expected console output and example figures from " +"all examples in `python/src/adctoolbox/examples/06_use_toolsets/`." +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:7 +msgid "Summary" +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:9 +msgid "" +"All examples in `06_use_toolsets` demonstrate comprehensive dashboard " +"generation:" +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:11 +msgid "**Total Examples**: 4" +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:13 +msgid "" +"**Categories**: - **Analog Output Dashboards**: exp_t01-t02 (single and " +"batch, 12 tools per dashboard) - **Digital Output Dashboards**: " +"exp_t03-t04 (single and batch, 6 tools per dashboard)" +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:17 +msgid "" +"**Analog Dashboard (12 Tools)**: 1. Spectrum 2. Spectrum Polar 3. Error " +"by Value 4. Error by Phase 5. Decomposition Time 6. Decomposition Polar " +"7. Error PDF 8. Error Autocorrelation 9. Error Spectrum 10. Error " +"Envelope Spectrum 11. Phase Plane 12. Error Phase Plane" +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:31 +msgid "" +"**Digital Dashboard (6 Tools)**: 1. Spectrum: Nominal Weights 2. " +"Spectrum: Calibrated Weights 3. Bit Activity 4. Overflow Check 5. ENOB " +"Bit Sweep 6. Weight Radix" +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:39 +msgid "" +"**Key Features**: - Comprehensive all-in-one debugging dashboards - Batch" +" processing for multiple test cases - 15 analog non-ideality types " +"analyzed - 7 digital configuration types analyzed" +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:48 +msgid "exp_t01_aout_dashboard_single.py" +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:50 +msgid "" +"**Description**: Generate a single comprehensive 12-tool analog output " +"dashboard." +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:60 +msgid "exp_t02_aout_dashboard_batch.py" +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:62 +msgid "" +"**Description**: Generate batch of 15 comprehensive dashboards for " +"different non-idealities." +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:121 +msgid "**Example Dashboard Figures:**" +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:123 +msgid "Dashboard - Thermal Noise Analysis" +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:128 +msgid "Thermal Noise: Comprehensive 12-tool analysis dashboard" +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:130 +msgid "Dashboard - Jitter Noise Analysis" +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:135 +msgid "Jitter Noise: Phase noise and timing jitter effects" +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:137 +msgid "Dashboard - Static HD3 Distortion" +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:142 +msgid "Static HD3 (-70 dBc): Third harmonic distortion analysis" +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:144 +msgid "Dashboard - RA Dynamic Gain" +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:149 +msgid "RA Dynamic Gain: Residue amplifier dynamic gain variation" +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:153 +msgid "exp_t03_dout_dashboard_single.py" +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:155 +msgid "" +"**Description**: Generate a single comprehensive 6-tool digital output " +"dashboard." +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:165 +msgid "exp_t04_dout_dashboard_batch.py" +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:167 +msgid "" +"**Description**: Generate batch of 7 digital output dashboards for " +"different configurations." +msgstr "" + +#: ../../source/examples/expected_output_06_use_toolsets.rst:210 +msgid "---" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/examples/expected_output_07_conversions.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/examples/expected_output_07_conversions.po new file mode 100644 index 0000000..9c6bd3a --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/examples/expected_output_07_conversions.po @@ -0,0 +1,123 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/examples/expected_output_07_conversions.rst:2 +msgid "Expected Output: 07_conversions" +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:4 +msgid "" +"This document shows the expected console output and example figures from " +"all examples in `python/src/adctoolbox/examples/07_conversions/`." +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:7 +msgid "Summary" +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:9 +msgid "" +"All examples in `07_conversions` demonstrate unit conversions and metric " +"calculations:" +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:11 +msgid "**exp_c01**: Aliasing and Nyquist zone calculations" +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:12 +msgid "" +"**exp_c02**: Comprehensive unit conversions (9 conversion categories with" +" round-trip validation)" +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:13 +msgid "" +"**exp_c03**: ADC figure of merit calculations (Walden FOM, Schreier FOM, " +"performance limits)" +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:14 +msgid "**exp_c04**: Signal/noise amplitude to SNR conversions" +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:15 +msgid "**exp_c05**: Noise spectral density (NSD) and SNR conversions" +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:17 +msgid "**Total Examples**: 5" +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:22 +msgid "exp_c01_aliasing_nyquist_zones.py" +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:24 +msgid "**Description**: Demonstrate aliasing and Nyquist zone calculations." +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:33 +msgid "Aliasing within Nyquist zones" +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:38 +msgid "Frequency aliasing visualization across multiple Nyquist zones" +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:42 +msgid "exp_c02_unit_conversions.py" +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:44 +msgid "**Description**: Comprehensive unit conversion utilities for ADC testing." +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:173 +msgid "exp_c03_calculate_fom.py" +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:175 +msgid "" +"**Description**: Calculate ADC figures of merit (Walden FOM, Schreier " +"FOM, jitter-limited SNR, thermal noise-limited SNR)." +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:208 +msgid "exp_c04_amplitudes_to_snr.py" +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:210 +msgid "**Description**: Convert signal/noise amplitudes to SNR metrics." +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:231 +msgid "exp_c05_convert_nsd_snr.py" +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:233 +msgid "**Description**: Convert between NSD and SNR metrics." +msgstr "" + +#: ../../source/examples/expected_output_07_conversions.rst:242 +msgid "---" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/examples/index.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/examples/index.po new file mode 100644 index 0000000..28f9202 --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/examples/index.po @@ -0,0 +1,105 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/examples/index.rst:46 +msgid "Expected Outputs by Category" +msgstr "" + +#: ../../source/examples/index.rst:2 +msgid "Examples" +msgstr "" + +#: ../../source/examples/index.rst:4 +msgid "" +"ADCToolbox includes 51 ready-to-run examples organized into 6 categories." +" This page demonstrates common use cases and analysis workflows." +msgstr "" + +#: ../../source/examples/index.rst:7 +msgid "Getting the Examples" +msgstr "" + +#: ../../source/examples/index.rst:9 +msgid "To copy all examples to your workspace:" +msgstr "" + +#: ../../source/examples/index.rst:15 +msgid "" +"This creates an ``adctoolbox_examples/`` directory with all examples " +"organized by category." +msgstr "" + +#: ../../source/examples/index.rst:18 +msgid "Running Examples" +msgstr "" + +#: ../../source/examples/index.rst:20 +msgid "" +"Navigate to the examples directory and run any example. Examples are " +"organized by category:" +msgstr "" + +#: ../../source/examples/index.rst:29 +msgid "" +"All examples save their outputs (plots, data files) to an ``output/`` " +"subdirectory within each category folder." +msgstr "" + +#: ../../source/examples/index.rst:31 +msgid "**Category Folders:**" +msgstr "" + +#: ../../source/examples/index.rst:33 +msgid "``02_spectrum/`` - Spectrum analysis examples" +msgstr "" + +#: ../../source/examples/index.rst:34 +msgid "``03_generate_signals/`` - Signal generation examples" +msgstr "" + +#: ../../source/examples/index.rst:35 +msgid "``04_debug_analog/`` - Analog output analysis examples" +msgstr "" + +#: ../../source/examples/index.rst:36 +msgid "``05_debug_digital/`` - Digital output analysis examples" +msgstr "" + +#: ../../source/examples/index.rst:37 +msgid "``06_use_toolsets/`` - Comprehensive dashboard examples" +msgstr "" + +#: ../../source/examples/index.rst:38 +msgid "``07_conversions/`` - Conversion and metric calculation examples" +msgstr "" + +#: ../../source/examples/index.rst:41 +msgid "Expected Outputs" +msgstr "" + +#: ../../source/examples/index.rst:43 +msgid "" +"For reference, the expected outputs from each example category are " +"documented below. These documentation files show the console output, " +"figures, and validation results you should expect when running each " +"example." +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/index.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/index.po new file mode 100644 index 0000000..9de0266 --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/index.po @@ -0,0 +1,102 @@ +# ADCToolbox 中文翻译 +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: 2026-03-10 20:52+0800\n" +"Last-Translator: ADCToolbox Contributors\n" +"Language: zh_CN\n" +"Language-Team: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/index.rst:8 +msgid "Contents:" +msgstr "目录:" + +#: ../../source/index.rst:2 +msgid "ADCToolbox Documentation" +msgstr "ADCToolbox 文档" + +#: ../../source/index.rst:4 +msgid "" +"ADCToolbox is a comprehensive toolbox for ADC (Analog-to-Digital " +"Converter) characterization and analysis, providing advanced tools for " +"both analog output and digital output analysis." +msgstr "" +"ADCToolbox 是一个用于 ADC(模数转换器)表征与分析的综合工具箱," +"提供面向模拟输出和数字输出分析的高级工具。" + +#: ../../source/index.rst:21 +msgid "Features" +msgstr "功能特性" + +#: ../../source/index.rst:23 +msgid "" +"**Spectrum Analysis**: FFT-based analysis with ENOB, SNR, SFDR, THD, " +"windowing, averaging, and polar visualization" +msgstr "" +"**频谱分析**:基于 FFT 的分析,支持 ENOB、SNR、SFDR、THD、" +"加窗、平均和极坐标可视化" + +#: ../../source/index.rst:24 +msgid "" +"**Signal Generation**: Thermal noise, jitter, quantization, " +"static/dynamic nonlinearity, and interference modeling" +msgstr "" +"**信号生成**:热噪声、抖动、量化、静态/动态非线性及干扰建模" + +#: ../../source/index.rst:25 +msgid "" +"**Analog Error Analysis**: Time-domain, frequency-domain, and statistical" +" error characterization (PDF, autocorrelation, envelope spectrum)" +msgstr "" +"**模拟误差分析**:时域、频域和统计误差表征(概率密度函数、自相关、包络频谱)" + +#: ../../source/index.rst:26 +msgid "" +"**Digital Calibration**: Bit-weighted ADC calibration and redundancy " +"analysis" +msgstr "" +"**数字校准**:位权重 ADC 校准与冗余分析" + +#: ../../source/index.rst:27 +msgid "" +"**Fundamental Utilities**: Sine fitting, frequency calculation, unit " +"conversion, and FOM metrics" +msgstr "" +"**基础工具**:正弦拟合、频率计算、单位换算和品质因数指标" + +#: ../../source/index.rst:28 +msgid "" +"**Oversampling Analysis**: Delta-Sigma modulator characterization, NTF " +"analysis" +msgstr "" +"**过采样分析**:Delta-Sigma 调制器表征与噪声传递函数(NTF)分析" + +#: ../../source/index.rst:29 +msgid "**Comprehensive Examples**: 45 ready-to-run examples across 6 categories" +msgstr "**丰富示例**:6 个类别共 45 个即用示例" + +#: ../../source/index.rst:32 +msgid "Quick Links" +msgstr "快速链接" + +#: ../../source/index.rst:34 +msgid ":ref:`genindex`" +msgstr ":ref:`genindex`" + +#: ../../source/index.rst:35 +msgid ":ref:`modindex`" +msgstr ":ref:`modindex`" + +#: ../../source/index.rst:36 +msgid ":ref:`search`" +msgstr ":ref:`search`" diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/installation.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/installation.po new file mode 100644 index 0000000..7944da8 --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/installation.po @@ -0,0 +1,58 @@ +# ADCToolbox 中文翻译 +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: 2026-03-10 20:52+0800\n" +"Last-Translator: ADCToolbox Contributors\n" +"Language: zh_CN\n" +"Language-Team: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/installation.rst:2 +msgid "Installation" +msgstr "安装" + +#: ../../source/installation.rst:4 +msgid "Install ADCToolbox from PyPI:" +msgstr "从 PyPI 安装 ADCToolbox:" + +#: ../../source/installation.rst:11 +msgid "Upgrade" +msgstr "升级" + +#: ../../source/installation.rst:13 +msgid "To upgrade an existing installation:" +msgstr "升级已有安装:" + +#: ../../source/installation.rst:19 +msgid "To verify the installed version:" +msgstr "验证已安装版本:" + +#: ../../source/installation.rst:26 +msgid "Requirements" +msgstr "依赖要求" + +#: ../../source/installation.rst:28 +msgid "Python >= 3.10" +msgstr "Python >= 3.10" + +#: ../../source/installation.rst:29 +msgid "NumPy >= 1.23.0" +msgstr "NumPy >= 1.23.0" + +#: ../../source/installation.rst:30 +msgid "Matplotlib >= 3.6.0" +msgstr "Matplotlib >= 3.6.0" + +#: ../../source/installation.rst:31 +msgid "SciPy >= 1.9.0" +msgstr "SciPy >= 1.9.0" diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/python_matlab_parity.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/python_matlab_parity.po new file mode 100644 index 0000000..ed17a3d --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/python_matlab_parity.po @@ -0,0 +1,499 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/python_matlab_parity.rst:2 +msgid "Python vs MATLAB Parity" +msgstr "" + +#: ../../source/python_matlab_parity.rst:4 +msgid "" +"This page tracks the functional parity between the Python ``adctoolbox`` " +"package and the original MATLAB implementation. The goal is to keep both " +"versions feature-equivalent." +msgstr "" + +#: ../../source/python_matlab_parity.rst:8 +msgid "Last updated: 2026-03-10" +msgstr "" + +#: ../../source/python_matlab_parity.rst:11 +msgid "Function Mapping" +msgstr "" + +#: ../../source/python_matlab_parity.rst:13 +msgid "" +"The table below maps every MATLAB core function to its Python equivalent." +" Legacy/deprecated MATLAB wrappers (e.g., ``sineFit`` → ``sinfit``) are " +"omitted; only the current MATLAB name is listed." +msgstr "" + +#: ../../source/python_matlab_parity.rst:21 +#: ../../source/python_matlab_parity.rst:169 +msgid "MATLAB" +msgstr "" + +#: ../../source/python_matlab_parity.rst:22 +#: ../../source/python_matlab_parity.rst:170 +msgid "Python" +msgstr "" + +#: ../../source/python_matlab_parity.rst:23 +msgid "Status" +msgstr "" + +#: ../../source/python_matlab_parity.rst:24 +msgid "``plotspec``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:25 +msgid "``analyze_spectrum``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:26 +#: ../../source/python_matlab_parity.rst:29 +#: ../../source/python_matlab_parity.rst:32 +#: ../../source/python_matlab_parity.rst:35 +#: ../../source/python_matlab_parity.rst:38 +#: ../../source/python_matlab_parity.rst:41 +#: ../../source/python_matlab_parity.rst:44 +#: ../../source/python_matlab_parity.rst:47 +#: ../../source/python_matlab_parity.rst:50 +#: ../../source/python_matlab_parity.rst:53 +#: ../../source/python_matlab_parity.rst:56 +#: ../../source/python_matlab_parity.rst:59 +#: ../../source/python_matlab_parity.rst:62 +#: ../../source/python_matlab_parity.rst:65 +msgid "Matched" +msgstr "" + +#: ../../source/python_matlab_parity.rst:27 +msgid "``plotphase``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:28 +msgid "``analyze_spectrum_polar``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:30 +msgid "``sinfit``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:31 +msgid "``fit_sine_4param``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:33 +msgid "``findbin``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:34 +msgid "``find_coherent_frequency``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:36 +msgid "``findfreq``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:37 +msgid "``estimate_frequency``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:39 +msgid "``alias``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:40 +msgid "``fold_frequency_to_nyquist``, ``fold_bin_to_nyquist``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:42 +msgid "``tomdec``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:43 +msgid "``analyze_decomposition_time``, ``analyze_decomposition_polar``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:45 +msgid "``errsin``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:46 +msgid "``analyze_error_by_phase``, ``analyze_error_by_value``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:48 +msgid "``inlsin``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:49 +msgid "``analyze_inl_from_sine``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:51 +msgid "``wcalsin``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:52 +msgid "``calibrate_weight_sine``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:54 +msgid "``bitchk``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:55 +msgid "``analyze_overflow``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:57 +msgid "``plotwgt``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:58 +msgid "``analyze_weight_radix``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:60 +msgid "``ntfperf``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:61 +msgid "``ntf_analyzer``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:63 +msgid "``adcpanel``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:64 +msgid "``toolset/generate_aout_dashboard``, ``toolset/generate_dout_dashboard``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:66 +msgid "``cdacwgt``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:67 +#: ../../source/python_matlab_parity.rst:70 +#: ../../source/python_matlab_parity.rst:73 +#: ../../source/python_matlab_parity.rst:76 +msgid "*not implemented*" +msgstr "" + +#: ../../source/python_matlab_parity.rst:68 +#: ../../source/python_matlab_parity.rst:71 +#: ../../source/python_matlab_parity.rst:74 +#: ../../source/python_matlab_parity.rst:77 +msgid "**MATLAB only**" +msgstr "" + +#: ../../source/python_matlab_parity.rst:69 +msgid "``ifilter``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:72 +msgid "``perfosr``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:75 +msgid "``plotres``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:80 +msgid "MATLAB-Only Functions" +msgstr "" + +#: ../../source/python_matlab_parity.rst:82 +msgid "The following four MATLAB functions have **no Python equivalent** yet:" +msgstr "" + +#: ../../source/python_matlab_parity.rst:84 +msgid "``cdacwgt(cd, cb, cp)``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:85 +msgid "" +"Calculate bit weights for a multi-segment capacitive DAC (CDAC) with " +"bridge capacitors and parasitic capacitances. Returns normalized weights " +"and total capacitance." +msgstr "" + +#: ../../source/python_matlab_parity.rst:89 +msgid "``ifilter(sigin, passband)``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:90 +msgid "" +"Ideal FFT-based brickwall filter. Retains only the specified frequency " +"bands from an input signal. Operates column-wise on matrices." +msgstr "" + +#: ../../source/python_matlab_parity.rst:93 +msgid "``perfosr(sig, ...)``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:94 +msgid "" +"Sweep ADC performance (SNDR, SFDR, ENOB) versus oversampling ratio (OSR)." +" Separates ideal signal from error via sine fitting, then re-evaluates " +"metrics at narrowing bandwidths." +msgstr "" + +#: ../../source/python_matlab_parity.rst:98 +msgid "``plotres(sig, bits, ...)``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:99 +msgid "" +"Plot partial-sum residuals of an ADC bit matrix. Scatter-plots residuals " +"between bit stages to reveal correlations, nonlinearity patterns, and " +"redundancy." +msgstr "" + +#: ../../source/python_matlab_parity.rst:104 +msgid "Python-Only Functions" +msgstr "" + +#: ../../source/python_matlab_parity.rst:106 +msgid "" +"The following functions exist **only in the Python package** and have no " +"MATLAB counterpart." +msgstr "" + +#: ../../source/python_matlab_parity.rst:110 +msgid "Spectrum" +msgstr "" + +#: ../../source/python_matlab_parity.rst:112 +msgid "" +"``analyze_two_tone_spectrum`` — Two-tone FFT analysis with IMD2/IMD3 " +"metrics." +msgstr "" + +#: ../../source/python_matlab_parity.rst:115 +msgid "Analog Error Analysis" +msgstr "" + +#: ../../source/python_matlab_parity.rst:117 +msgid "``analyze_error_pdf`` — Error probability density function via KDE." +msgstr "" + +#: ../../source/python_matlab_parity.rst:118 +msgid "" +"``analyze_error_spectrum`` — Error spectrum computed from fitting " +"residual." +msgstr "" + +#: ../../source/python_matlab_parity.rst:119 +msgid "" +"``analyze_error_autocorr`` — Autocorrelation function (ACF) of error " +"signal." +msgstr "" + +#: ../../source/python_matlab_parity.rst:120 +msgid "" +"``analyze_error_envelope_spectrum`` — Envelope spectrum via Hilbert " +"transform to reveal AM modulation patterns." +msgstr "" + +#: ../../source/python_matlab_parity.rst:122 +msgid "" +"``fit_static_nonlin`` — Extract static nonlinearity coefficients (k2, k3)" +" from a distorted sinewave." +msgstr "" + +#: ../../source/python_matlab_parity.rst:126 +msgid "Digital Output Analysis" +msgstr "" + +#: ../../source/python_matlab_parity.rst:128 +msgid "" +"``analyze_bit_activity`` — Percentage of 1's per bit (DC offset / " +"clipping detection)." +msgstr "" + +#: ../../source/python_matlab_parity.rst:130 +msgid "``analyze_enob_sweep`` — ENOB vs. number of calibration bits." +msgstr "" + +#: ../../source/python_matlab_parity.rst:133 +msgid "Unit Conversions & Metrics" +msgstr "" + +#: ../../source/python_matlab_parity.rst:135 +msgid "These are small utilities that MATLAB users typically write inline:" +msgstr "" + +#: ../../source/python_matlab_parity.rst:137 +msgid "``db_to_mag``, ``mag_to_db``, ``db_to_power``, ``power_to_db``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:138 +msgid "``snr_to_enob``, ``enob_to_snr``, ``snr_to_nsd``, ``nsd_to_snr``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:139 +msgid "``lsb_to_volts``, ``volts_to_lsb``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:140 +msgid "``dbm_to_vrms``, ``vrms_to_dbm``, ``dbm_to_mw``, ``mw_to_dbm``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:141 +msgid "``sine_amplitude_to_power``, ``amplitudes_to_snr``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:142 +msgid "``bin_to_freq``, ``freq_to_bin``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:143 +msgid "``calculate_walden_fom``, ``calculate_schreier_fom``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:144 +msgid "``calculate_thermal_noise_limit``, ``calculate_jitter_limit``" +msgstr "" + +#: ../../source/python_matlab_parity.rst:147 +msgid "Signal Generation" +msgstr "" + +#: ../../source/python_matlab_parity.rst:149 +msgid "" +"The Python ``siggen`` module provides a ``Nonidealities`` class for " +"building realistic ADC test signals with chainable impairments. This has " +"no MATLAB equivalent:" +msgstr "" + +#: ../../source/python_matlab_parity.rst:153 +msgid "Thermal noise, clock jitter, quantization noise" +msgstr "" + +#: ../../source/python_matlab_parity.rst:154 +msgid "Static nonlinearity (polynomial or harmonic-dB specification)" +msgstr "" + +#: ../../source/python_matlab_parity.rst:155 +msgid "Memory effect, incomplete sampling / settling" +msgstr "" + +#: ../../source/python_matlab_parity.rst:156 +msgid "Residue amplifier gain error (static and dynamic)" +msgstr "" + +#: ../../source/python_matlab_parity.rst:157 +msgid "Reference error (settling + droop)" +msgstr "" + +#: ../../source/python_matlab_parity.rst:158 +msgid "AM noise, AM tone, clipping, drift, glitch injection" +msgstr "" + +#: ../../source/python_matlab_parity.rst:159 +msgid "First-order noise shaping" +msgstr "" + +#: ../../source/python_matlab_parity.rst:162 +msgid "Summary" +msgstr "" + +#: ../../source/python_matlab_parity.rst:168 +msgid "Category" +msgstr "" + +#: ../../source/python_matlab_parity.rst:171 +msgid "Core analysis functions" +msgstr "" + +#: ../../source/python_matlab_parity.rst:172 +msgid "18" +msgstr "" + +#: ../../source/python_matlab_parity.rst:173 +msgid "43" +msgstr "" + +#: ../../source/python_matlab_parity.rst:174 +msgid "Matched across both" +msgstr "" + +#: ../../source/python_matlab_parity.rst:175 +#: ../../source/python_matlab_parity.rst:176 +msgid "14" +msgstr "" + +#: ../../source/python_matlab_parity.rst:177 +msgid "MATLAB-only" +msgstr "" + +#: ../../source/python_matlab_parity.rst:178 +msgid "4" +msgstr "" + +#: ../../source/python_matlab_parity.rst:179 +#: ../../source/python_matlab_parity.rst:181 +msgid "—" +msgstr "" + +#: ../../source/python_matlab_parity.rst:180 +msgid "Python-only" +msgstr "" + +#: ../../source/python_matlab_parity.rst:182 +msgid "29" +msgstr "" + +#: ../../source/python_matlab_parity.rst:183 +msgid "Signal generation module" +msgstr "" + +#: ../../source/python_matlab_parity.rst:184 +#: ../../source/python_matlab_parity.rst:190 +msgid "No" +msgstr "" + +#: ../../source/python_matlab_parity.rst:185 +msgid "Yes (``siggen``)" +msgstr "" + +#: ../../source/python_matlab_parity.rst:186 +msgid "Unit conversion utilities" +msgstr "" + +#: ../../source/python_matlab_parity.rst:187 +msgid "No (inline)" +msgstr "" + +#: ../../source/python_matlab_parity.rst:188 +msgid "Yes (20 functions)" +msgstr "" + +#: ../../source/python_matlab_parity.rst:189 +msgid "Two-tone analysis" +msgstr "" + +#: ../../source/python_matlab_parity.rst:191 +msgid "Yes" +msgstr "" + diff --git a/python/docs/source/locale/zh_CN/LC_MESSAGES/quickstart.po b/python/docs/source/locale/zh_CN/LC_MESSAGES/quickstart.po new file mode 100644 index 0000000..17aff5b --- /dev/null +++ b/python/docs/source/locale/zh_CN/LC_MESSAGES/quickstart.po @@ -0,0 +1,106 @@ +# ADCToolbox 中文翻译 +# Copyright (C) 2025, ADCToolbox Contributors +# This file is distributed under the same license as the ADCToolbox package. +# +msgid "" +msgstr "" +"Project-Id-Version: ADCToolbox 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-10 20:52+0800\n" +"PO-Revision-Date: 2026-03-10 20:52+0800\n" +"Last-Translator: ADCToolbox Contributors\n" +"Language: zh_CN\n" +"Language-Team: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../../source/quickstart.rst:2 +msgid "Quick Start Guide" +msgstr "快速入门指南" + +#: ../../source/quickstart.rst:4 +msgid "This guide will help you get started with ADCToolbox quickly." +msgstr "本指南帮助您快速上手 ADCToolbox。" + +#: ../../source/quickstart.rst:7 +msgid "Spectrum Analysis" +msgstr "频谱分析" + +#: ../../source/quickstart.rst:9 +msgid "Analyze an ADC output spectrum:" +msgstr "分析 ADC 输出频谱:" + +#: ../../source/quickstart.rst:42 +msgid "Expected output::" +msgstr "预期输出::" + +#: ../../source/quickstart.rst:54 +msgid "Using Toolsets" +msgstr "使用工具集" + +#: ../../source/quickstart.rst:57 +msgid "Analog Output Dashboard" +msgstr "模拟输出仪表盘" + +#: ../../source/quickstart.rst:59 +msgid "" +"Generate a comprehensive 12-panel diagnostic dashboard for analog ADC " +"output:" +msgstr "为模拟 ADC 输出生成包含 12 个面板的综合诊断仪表盘:" + +#: ../../source/quickstart.rst:89 +msgid "" +"This generates a 3x4 panel dashboard with 12 diagnostic plots including " +"spectrum analysis, error characterization (PDF, autocorrelation, " +"spectrum), polar plots, and phase plane analysis." +msgstr "" +"生成一个 3×4 面板仪表盘,包含 12 个诊断图,涵盖频谱分析、" +"误差表征(概率密度函数、自相关、频谱)、极坐标图和相平面分析。" + +#: ../../source/quickstart.rst:97 +msgid "Digital Output Dashboard" +msgstr "数字输出仪表盘" + +#: ../../source/quickstart.rst:99 +msgid "" +"Generate a comprehensive 6-panel diagnostic dashboard for digital ADC " +"bits:" +msgstr "为数字 ADC 位生成包含 6 个面板的综合诊断仪表盘:" + +#: ../../source/quickstart.rst:131 +msgid "" +"This generates a 2x3 panel dashboard with 6 diagnostic plots including " +"spectrum before/after calibration, bit activity, overflow detection, ENOB" +" sweep, and weight radix visualization." +msgstr "" +"生成一个 2×3 面板仪表盘,包含 6 个诊断图,涵盖校准前后频谱、" +"位活动、溢出检测、ENOB 扫描和位权重基数可视化。" + +#: ../../source/quickstart.rst:139 +msgid "Explore More Examples" +msgstr "探索更多示例" + +#: ../../source/quickstart.rst:141 +msgid "**The best way to learn ADCToolbox is through the ready-to-run examples.**" +msgstr "**学习 ADCToolbox 的最佳方式是运行即用示例。**" + +#: ../../source/quickstart.rst:143 +msgid "Download all examples in one command:" +msgstr "一条命令下载所有示例:" + +#: ../../source/quickstart.rst:152 +msgid "Run your first examples:" +msgstr "运行您的第一个示例:" + +#: ../../source/quickstart.rst:162 +msgid "All outputs are saved to the ``output/`` directory within each category." +msgstr "所有输出保存到各类别的 ``output/`` 目录中。" + +#: ../../source/quickstart.rst:164 +msgid "" +"Please refer to the :doc:`examples/index` for detailed instructions and " +"expected outputs." +msgstr "详细说明和预期输出请参阅 :doc:`examples/index`。" diff --git a/python/docs/source/python_matlab_parity.rst b/python/docs/source/python_matlab_parity.rst new file mode 100644 index 0000000..9007dca --- /dev/null +++ b/python/docs/source/python_matlab_parity.rst @@ -0,0 +1,191 @@ +Python vs MATLAB Parity +======================= + +This page tracks the functional parity between the Python ``adctoolbox`` package +and the original MATLAB implementation. The goal is to keep both versions +feature-equivalent. + +Last updated: 2026-03-10 + +Function Mapping +---------------- + +The table below maps every MATLAB core function to its Python equivalent. +Legacy/deprecated MATLAB wrappers (e.g., ``sineFit`` → ``sinfit``) are omitted; +only the current MATLAB name is listed. + +.. list-table:: + :header-rows: 1 + :widths: 20 30 10 + + * - MATLAB + - Python + - Status + * - ``plotspec`` + - ``analyze_spectrum`` + - Matched + * - ``plotphase`` + - ``analyze_spectrum_polar`` + - Matched + * - ``sinfit`` + - ``fit_sine_4param`` + - Matched + * - ``findbin`` + - ``find_coherent_frequency`` + - Matched + * - ``findfreq`` + - ``estimate_frequency`` + - Matched + * - ``alias`` + - ``fold_frequency_to_nyquist``, ``fold_bin_to_nyquist`` + - Matched + * - ``tomdec`` + - ``analyze_decomposition_time``, ``analyze_decomposition_polar`` + - Matched + * - ``errsin`` + - ``analyze_error_by_phase``, ``analyze_error_by_value`` + - Matched + * - ``inlsin`` + - ``analyze_inl_from_sine`` + - Matched + * - ``wcalsin`` + - ``calibrate_weight_sine`` + - Matched + * - ``bitchk`` + - ``analyze_overflow`` + - Matched + * - ``plotwgt`` + - ``analyze_weight_radix`` + - Matched + * - ``ntfperf`` + - ``ntf_analyzer`` + - Matched + * - ``adcpanel`` + - ``toolset/generate_aout_dashboard``, ``toolset/generate_dout_dashboard`` + - Matched + * - ``cdacwgt`` + - *not implemented* + - **MATLAB only** + * - ``ifilter`` + - *not implemented* + - **MATLAB only** + * - ``perfosr`` + - *not implemented* + - **MATLAB only** + * - ``plotres`` + - *not implemented* + - **MATLAB only** + +MATLAB-Only Functions +--------------------- + +The following four MATLAB functions have **no Python equivalent** yet: + +``cdacwgt(cd, cb, cp)`` + Calculate bit weights for a multi-segment capacitive DAC (CDAC) with bridge + capacitors and parasitic capacitances. Returns normalized weights and total + capacitance. + +``ifilter(sigin, passband)`` + Ideal FFT-based brickwall filter. Retains only the specified frequency bands + from an input signal. Operates column-wise on matrices. + +``perfosr(sig, ...)`` + Sweep ADC performance (SNDR, SFDR, ENOB) versus oversampling ratio (OSR). + Separates ideal signal from error via sine fitting, then re-evaluates metrics + at narrowing bandwidths. + +``plotres(sig, bits, ...)`` + Plot partial-sum residuals of an ADC bit matrix. Scatter-plots residuals + between bit stages to reveal correlations, nonlinearity patterns, and + redundancy. + +Python-Only Functions +--------------------- + +The following functions exist **only in the Python package** and have no +MATLAB counterpart. + +Spectrum +^^^^^^^^ + +- ``analyze_two_tone_spectrum`` — Two-tone FFT analysis with IMD2/IMD3 metrics. + +Analog Error Analysis +^^^^^^^^^^^^^^^^^^^^^ + +- ``analyze_error_pdf`` — Error probability density function via KDE. +- ``analyze_error_spectrum`` — Error spectrum computed from fitting residual. +- ``analyze_error_autocorr`` — Autocorrelation function (ACF) of error signal. +- ``analyze_error_envelope_spectrum`` — Envelope spectrum via Hilbert transform + to reveal AM modulation patterns. +- ``fit_static_nonlin`` — Extract static nonlinearity coefficients (k2, k3) from + a distorted sinewave. + +Digital Output Analysis +^^^^^^^^^^^^^^^^^^^^^^^ + +- ``analyze_bit_activity`` — Percentage of 1's per bit (DC offset / clipping + detection). +- ``analyze_enob_sweep`` — ENOB vs. number of calibration bits. + +Unit Conversions & Metrics +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +These are small utilities that MATLAB users typically write inline: + +- ``db_to_mag``, ``mag_to_db``, ``db_to_power``, ``power_to_db`` +- ``snr_to_enob``, ``enob_to_snr``, ``snr_to_nsd``, ``nsd_to_snr`` +- ``lsb_to_volts``, ``volts_to_lsb`` +- ``dbm_to_vrms``, ``vrms_to_dbm``, ``dbm_to_mw``, ``mw_to_dbm`` +- ``sine_amplitude_to_power``, ``amplitudes_to_snr`` +- ``bin_to_freq``, ``freq_to_bin`` +- ``calculate_walden_fom``, ``calculate_schreier_fom`` +- ``calculate_thermal_noise_limit``, ``calculate_jitter_limit`` + +Signal Generation +^^^^^^^^^^^^^^^^^ + +The Python ``siggen`` module provides a ``Nonidealities`` class for building +realistic ADC test signals with chainable impairments. This has no MATLAB +equivalent: + +- Thermal noise, clock jitter, quantization noise +- Static nonlinearity (polynomial or harmonic-dB specification) +- Memory effect, incomplete sampling / settling +- Residue amplifier gain error (static and dynamic) +- Reference error (settling + droop) +- AM noise, AM tone, clipping, drift, glitch injection +- First-order noise shaping + +Summary +------- + +.. list-table:: + :header-rows: 1 + :widths: 30 10 10 + + * - Category + - MATLAB + - Python + * - Core analysis functions + - 18 + - 43 + * - Matched across both + - 14 + - 14 + * - MATLAB-only + - 4 + - — + * - Python-only + - — + - 29 + * - Signal generation module + - No + - Yes (``siggen``) + * - Unit conversion utilities + - No (inline) + - Yes (20 functions) + * - Two-tone analysis + - No + - Yes diff --git a/python/pyproject.toml b/python/pyproject.toml index 70909c0..3393d35 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -24,6 +24,7 @@ docs = [ "sphinx-rtd-theme>=2.0.0", "sphinx-autodoc-typehints>=1.24.0", "myst-parser>=2.0.0", + "sphinx-intl", ] [tool.setuptools]