简体中文 | English
StoZ 是一个面向射频和微波工程的小工具,用于把单端口或二端口 S 参数换算为阻抗。 程序提供中文图形界面,可以选择参考阻抗、查看指定频率下的阻抗,并把结果写成 CST 风格的 MDF 文件。
- 单端口 S 参数换算为阻抗:
Z = Z0 * (1 + S) / (1 - S)。 - 二端口 S 参数换算为输入阻抗和输出阻抗。
- 二端口对端终端支持匹配、开路、短路和自定义阻抗。
- Touchstone 文件的参考阻抗与界面 Z0 不一致时,自动重新归一化 S 参数。
- 支持 CSV、Excel(
.xlsx/.xlsm)和 Touchstone V1.0(.sp/.s1p/.s2p)。 - 支持从剪贴板读取文本并自动识别文件路径、Touchstone 文本或 CSV/TSV 表格。
- 支持把 S 参数文件直接拖入主窗口。
- 支持指定频率查询;非数据点自动线性插值,超出范围时使用最近端点。
- 支持 2D/3D 阻抗绘图:2D 分别绘制实部和虚部,3D 使用频率、实部、虚部坐标轴。
- 2D 支持点标记、横向 Marker、纵向 Marker;3D 支持单击散点添加点标记。
- 自动给出串联、并联、共轭串联、共轭并联等效电路。
- 频率、阻抗、电容、电感自动选择工程单位。
- 输出文件名固定为
Output-yyyy-MM-dd_HH-mm-ss.mdf,保存在同级Outputs文件夹。 - 关于界面包含作者、版本、更新日期、版本历史、免责声明和面向 EXE 用户的帮助手册。
- 用户手册提供简体中文和英文两版,内容只面向 EXE 用户,不含源码运行说明。
- EXE 内嵌 Windows 版本资源,右键“属性”可以看到文件说明、文件版本、产品名称和版权信息。
- 绘图窗口统一使用原生控件,支持显示/隐藏单条曲线、框选放大、拖动平移和保存图片。
- Smith 圆图页按 50 Ω 归一化绘制输入/输出阻抗轨迹,支持曲线显隐。
- 2D、Smith、3D 三个绘图视图都支持鼠标悬停,显示最近曲线点的频率和复阻抗; 3D 与 Smith 显示完整复数。
- 横向/纵向 Marker 会显示与可见曲线交点的复阻抗;点标记和交点标签均可用鼠标 拖动,拖动只移动标签,不改变 Marker 或数据。
- 每次启动在程序同级
log目录生成运行日志,记录全部用户操作、换算和异常堆栈。 - 用户手册和关于界面使用 Markdown 渲染,支持标题、列表、代码块和表格。
- 转换完成后弹出提示窗口,显示数据点和输出文件路径。
- 支持简体中文、繁体中文和英文界面,可在“语言”菜单中切换并保存设置。
- 附带 PyInstaller 打包脚本、GitHub Actions 工作流、示例文件和单元测试。
2D 视图把阻抗实部和虚部分开绘制,支持点标记、横向 Marker 和纵向 Marker, 并可通过勾选框显示或隐藏单条曲线;缩放、平移和保存使用原生按钮。Smith 圆图 按 50 Ω 归一化显示输入/输出阻抗的反射系数轨迹;三个视图悬停均可查看对应 频率的复阻抗。
pip install -r requirements.txt
python StoZ.py环境要求:Windows 10/11,Python 3.10 及以上,推荐 Python 3.12。Windows 官方 Python 自带 tkinter,不需要额外安装。
从 Releases 下载 StoZ-v1.5.0-win64.zip,解压到普通用户目录后双击 StoZ.exe。
不要解压到项目源码目录或受限制的工作区目录。
程序不需要安装 Python,也不会联网。
如果 Windows 提示“未知发布者”,点击“更多信息”,再选择“仍要运行”。
第一列为频率,默认按 Hz 解析。表头可以写明 Frequency(GHz) 之类的单位,也可以
在界面中手动选择表格频率单位。
单端口 3 列:
频率, S11 实部, S11 虚部
二端口 9 列,顺序为 S11、S12、S21、S22:
频率, S11 实部, S11 虚部, S12 实部, S12 虚部, S21 实部, S21 虚部, S22 实部, S22 虚部
示例:
Frequency(Hz),S11_real,S11_imag,S12_real,S12_imag,S21_real,S21_imag,S22_real,S22_imag
1000000000,0.1,0.01,0.3,0.03,0.2,0.02,0.4,0.04
支持 .sp、.s1p、.s2p,选项行示例:
# Hz S RI R 50
二端口数据遵循标准顺序 S11、S21、S12、S22,与 CSV/Excel 的 S11、S12、S21、S22 顺序不同。程序会按文件类型分别处理。
点击输入文件栏右侧的“读取剪贴板”,或使用快捷键 Ctrl+Shift+V。程序会自动识别:
- 剪贴板中的文件路径;
- Touchstone 文本;
- 从 Excel 复制的 TSV 文本;
- 逗号、分号或空白分隔的表格文本。
表格默认按 Hz 解析,也可以在界面中切换表格频率单位。识别失败时会在弹窗和运行 日志中给出原因。
可以直接从资源管理器把 S 参数文件拖入主窗口。一次拖入多个文件时,程序会载入 第一个受支持的文件。
完成转换后点击“绘制阻抗曲线”打开自动居中的绘图窗口。窗口控件全部是原生 风格:2D 视图把实部和虚部分别绘制成随频率变化的曲线,模式下拉框提供浏览 (滚轮缩放)、框选放大、拖动平移、标点、横向 Marker 和纵向 Marker;勾选框 可以显示或隐藏某条曲线;底部按钮支持放大、缩小、重置视图和保存图片。3D 视图 使用频率、实部和虚部三个坐标轴,拖动旋转、滚轮缩放,单击散点即可添加点标记。 所有绘图操作都会写入运行日志。
通过“语言”菜单切换简体中文、繁体中文和英文。切换后主界面会立即重建,并保留 已加载的数据和换算结果;语言设置会保存到用户配置目录。
Z = Z0 * (1 + S) / (1 - S)
设对端终端反射系数为 ΓL:
Γin = S11 + S12 * S21 * ΓL / (1 - S22 * ΓL)
Zin = Z0 * (1 + Γin) / (1 - Γin)
Γout = S22 + S12 * S21 * ΓS / (1 - S11 * ΓS)
Zout = Z0 * (1 + Γout) / (1 - Γout)
默认 ΓL = ΓS = 0,即对端端口匹配参考阻抗 Z0。开路时 Γ = +1,短路时 Γ = -1。
在查询频率 f 下,ω = 2πf:
- 串联等效:
Rs = Re(Z),Xs = Im(Z);Xs > 0时Ls = Xs / ω,Xs < 0时Cs = -1 / (ω Xs)。 - 并联等效:
Rp = |Z|² / Re(Z),Xp = |Z|² / Im(Z);再按Xp的正负换算 为并联电感或并联电容。 - 共轭等效:
Z* = R - jX,电阻不变,电抗符号翻转。 - 品质因数:
Q = |Xs| / Rs = Rp / |Xp|。
转换完成后,程序会弹出完成提示,并自动把结果写入程序同级的 Outputs 文件夹:
Output-2026-10-22_22-35-06.mdf
单端口 MDF:
BEGIN Impedance
% Frequency(real) Impedance1(complex)
1000000000.0 80.9867961185 -234.729413334
END
二端口 MDF:
BEGIN Impedance
% Frequency(real) Impedance1(complex) Impedance2(complex)
1000000000.0 61.09739538 1.2344155 115.92920354 11.0619469
END
pip install -r requirements-dev.txt
python build_exe.py也可以双击 build_exe.bat。脚本会先运行单元测试,再调用 PyInstaller 生成单文件
无控制台 EXE,并把 README、用户手册、许可证和示例文件复制到发布目录,最后生成
zip 压缩包。
脚本不会把 EXE 直接生成在项目工作区,而是在当前用户的本地目录
%LOCALAPPDATA%\StoZ-build 中完成 PyInstaller 构建、发布目录组装和 zip 打包。
这样可以避免项目工作区的低完整性标签、未知 SID 或 Zone.Identifier 被 EXE 继承。
发布文件会被设置为当前用户所有、Medium 完整性级别,并预创建可写的 Outputs
和 log 目录。生成的 EXE 内嵌 Windows 版本资源(文件说明、文件版本、产品名称、
公司、版权等),打包脚本会在字段缺失时立即报错。
生成结果:
%LOCALAPPDATA%\StoZ-build\StoZ-v1.5.0-win64\
%LOCALAPPDATA%\StoZ-build\StoZ-v1.5.0-win64.zip
dist\StoZ-v1.5.0-win64.zip
dist\StoZ-v1.5.0-win64\ (指向本地发布目录的目录联接)
请从本地发布目录或 dist 中的目录联接运行 EXE;dist 不再生成直接可执行的
EXE 文件。GitHub Actions 仍然上传 dist/*.zip。
打包脚本支持跳过测试和跳过压缩:
python build_exe.py --skip-tests
python build_exe.py --no-zippython -m unittest discover -s tests -v测试覆盖单位解析、单端口/二端口换算、参考阻抗重新归一化、串并联和共轭等效电路、 频率插值、CSV/Excel/Touchstone 读取、Markdown 解析、剪贴板识别、多语言翻译以及 MDF 写出。
StoZ/
├─ StoZ.py 程序入口
├─ stoz_app/
│ ├─ gui.py 图形界面
│ ├─ readers.py CSV/Excel/Touchstone 读取
│ ├─ mathcore.py S 参数到阻抗换算、插值、等效电路
│ ├─ units.py 工程单位解析与格式化
│ ├─ mdf.py MDF 输出
│ ├─ models.py 数据结构
│ ├─ about.py 关于界面、免责声明、版本历史和使用手册窗口
│ ├─ markdown_view.py Markdown 渲染组件
│ ├─ manual.py 多语言帮助文本
│ ├─ plot_window.py 2D/3D 阻抗绘图窗口
│ ├─ i18n.py 多语言词典
│ ├─ config.py 用户配置读写
│ ├─ dnd.py Windows 文件拖放
│ ├─ paths.py 路径处理
│ ├─ info.py 作者、版本、更新日期
│ └─ errors.py 自定义异常
├─ tests/ 单元测试
├─ example/ 示例输入文件和 MDF 示例
├─ docs/ 用户手册和截图
├─ assets/ 程序图标
├─ build_exe.py 打包脚本
├─ build_exe.bat 打包批处理
├─ requirements.txt 运行依赖
├─ requirements-dev.txt 开发和打包依赖
├─ CHANGELOG.md 更新记录
├─ CHANGELOG.en.md English changelog
├─ README.en.md English README
├─ LICENSE MIT 许可证
└─ README.md
- 用户手册:完整操作说明、公式、输入格式和故障排除。
- English User Manual:英文操作说明和故障排除。
- 示例说明:示例文件列表和列顺序说明。
- 更新记录:版本变更。
- 打包脚本:仓库根目录的
build_exe.py和build_exe.bat。
- 程序只支持 S 参数,不直接支持 Y、Z、H、G 参数。
- Excel 读取活动工作表(通常为第一个工作表);旧版
.xls请先另存为.xlsx。 - 输出目录没有写入权限时,程序会尝试改用用户目录下的
StoZ/Outputs。 - MDF 中的非有限阻抗值会写作
inf或nan。 - 本项目面向 Windows,界面使用 tkinter,绘图使用 matplotlib。
- 作者:CodfishYao (yaohaolin.cn)
- 版本:1.5.0
- 更新日期:2026-10-23
- 许可证:MIT License
作者信息集中在 stoz_app/info.py,重新打包前可以按需要修改。


