C#学习之S参数读取(s2p文件)
目录
一、创作灵感
二、S2PFileReader类
1.代码示例
2.代码说明
a.ReadS2PFile 方法:
b.DataTable 结构:
三、S2PFileReader类的调用演示
1.使用示例
一、创作灵感
虽然MATLAB处理数据很实用,但是C#常用于程控仪器的控制,对于射频器件的测试,由于趋肤效应会使得射频同轴线在不同频点具有不同的插入损耗。C#编写的测试平台遍历DUT的不同工作频点需要正确的补偿值,利用C#提前提取出平台射频输入、输出线的插入损耗能减少数据后期的处理工作量。S2P文件可以由矢量网络分析仪事先测量再通过C#编写程序提取并正确补偿到信号源、功率计和频谱仪等仪器中。
二、S2PFileReader类
1.代码示例
以下是一个封装好的类,用于读取 .s2p 文件并将其内容赋值给 DataTable。
using System;
using System.Data;
using System.IO;public class S2PFileReader
{/// <summary>/// 读取 .s2p 文件并返回 DataTable/// </summary>/// <param name="filePath">.s2p 文件路径</param>/// <returns>包含 .s2p 文件数据的 DataTable</returns>public static DataTable ReadS2PFile(string filePath){// 创建 DataTableDataTable dataTable = new DataTable();dataTable.TableName = "S2PData";// 添加列dataTable.Columns.Add("Frequency", typeof(double)); // 频率dataTable.Columns.Add("S11_Magnitude", typeof(double)); // S11 幅度dataTable.Columns.Add("S11_Phase", typeof(double)); // S11 相位dataTable.Columns.Add("S21_Magnitude", typeof(double)); // S21 幅度dataTable.Columns.Add("S21_Phase", typeof(double)); // S21 相位dataTable.Columns.Add("S12_Magnitude", typeof(double)); // S12 幅度dataTable.Columns.Add("S12_Phase", typeof(double)); // S12 相位dataTable.Columns.Add("S22_Magnitude", typeof(double)); // S22 幅度dataTable.Columns.Add("S22_Phase", typeof(double)); // S22 相位try{// 读取文件using (StreamReader reader = new StreamReader(filePath)){string line;while ((line = reader.ReadLine()) != null){// 跳过注释行(以 ! 或 # 开头的行)if (line.StartsWith("!") || line.StartsWith("#"))continue;// 按空格分割行数据string[] values = line.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);// 确保数据行包含足够的列if (values.Length >= 9){// 解析数据并添加到 DataTableDataRow row = dataTable.NewRow();row["Frequency"] = double.Parse(values[0]); // 频率row["S11_Magnitude"] = double.Parse(values[1]); // S11 幅度row["S11_Phase"] = double.Parse(values[2]); // S11 相位row["S21_Magnitude"] = double.Parse(values[3]); // S21 幅度row["S21_Phase"] = double.Parse(values[4]); // S21 相位row["S12_Magnitude"] = double.Parse(values[5]); // S12 幅度row["S12_Phase"] = double.Parse(values[6]); // S12 相位row["S22_Magnitude"] = double.Parse(values[7]); // S22 幅度row["S22_Phase"] = double.Parse(values[8]); // S22 相位dataTable.Rows.Add(row);}}}}catch (Exception ex){throw new Exception("读取 .s2p 文件时出错: " + ex.Message);}return dataTable;}
}
2.代码说明
a.ReadS2PFile 方法:
读取 .s2p 文件并解析数据。
将频率和 S 参数(幅度和相位)存储到 DataTable 中。
跳过以 ! 或 # 开头的注释行。
b.DataTable 结构:
包含以下列:Frequency(频率)、S11_Magnitude(S11 幅度)、S11_Phase(S11 相位)、S21_Magnitude(S21 幅度)、S21_Phase(S21 相位)、S12_Magnitude(S12 幅度)、S12_Phase(S12 相位)、S22_Magnitude(S22 幅度)、S22_Phase(S22 相位)。
三、S2PFileReader类的调用演示
1.使用示例
调用ReadS2PFile(string filePath)方法,将 .s2p 文件数据绑定到 DataGridView 的示例:
using System;
using System.Data;
using System.Windows.Forms;public class MainForm : Form
{private DataGridView dataGridView1;public MainForm(){InitializeComponent();}private void InitializeComponent(){this.dataGridView1 = new DataGridView();((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();this.SuspendLayout();// 设置 DataGridViewthis.dataGridView1.Dock = DockStyle.Fill;this.Controls.Add(this.dataGridView1);// 加载 .s2p 文件string filePath = "example.s2p"; // 替换为你的 .s2p 文件路径try{DataTable dataTable = S2PFileReader.ReadS2PFile(filePath);this.dataGridView1.DataSource = dataTable;}catch (Exception ex){MessageBox.Show("加载文件失败: " + ex.Message);}((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();this.ResumeLayout(false);}[STAThread]static void Main(){Application.EnableVisualStyles();Application.Run(new MainForm());}
}相关文章:
C#学习之S参数读取(s2p文件)
目录 一、创作灵感 二、S2PFileReader类 1.代码示例 2.代码说明 a.ReadS2PFile 方法: b.DataTable 结构: 三、S2PFileReader类的调用演示 1.使用示例 一、创作灵感 虽然MATLAB处理数据很实用,但是C#常用于程控仪器的控制,…...
Spring Boot “约定大于配置”
什么是“约定大于配置”? “约定大于配置”是一种简化开发的设计理念。简单来说,就是框架默认提供了常见的配置和行为,开发者只需要按照约定来编写代码,避免了繁琐的配置,只在需要时进行定制和调整。这种理念在Spring…...
传输层协议TCP ( 下 )
文章目录 前言序号与确认序号超时重传RTOJacobson算法内核中超时时间的计算 滑动窗口滑动窗口延迟应答流量控制 拥塞控制慢启动拥塞避免快重传快速恢复 保活机制参考资料 前言 TCP(Transmission Control Protocol,传输控制协议)是互联网最重要…...
NLP 八股 DAY1:BERT
BERT全称:Pre-training of deep bidirectional transformers for language understanding,即深度双向Transformer。 模型训练时的两个任务是预测句⼦中被掩盖的词以及判断输⼊的两个句⼦是不是上下句。在预训练 好的BERT模型后⾯根据特定任务加上相应的⽹…...
演示synchronized锁机制用法的简单Demo
演示synchronized锁机制用法的简单Demo。我们以"银行开户"场景为例:每个用户只能创建一个账户(模拟类似原代码中每个用户只能有一个私有空间的限制)。 第1步:创建项目结构 demo-lock ├── src/main/java/com/exampl…...
Datawhale 数学建模导论二 笔记1
第6章 数据处理与拟合模型 本章主要涉及到的知识点有: 数据与大数据Python数据预处理常见的统计分析模型随机过程与随机模拟数据可视化 本章内容涉及到基础的概率论与数理统计理论,如果对这部分内容不熟悉,可以参考相关概率论与数理统计的…...
差分解方程
差分解方程 差分法在数值求解偏微分方程(PDEs)和常微分方程(ODEs)时,可以分为隐式格式和显式格式。以下是两者的主要区别: 显式格式(Explicit Scheme) 时间推进: 显式格…...
EasyExcel 复杂填充
EasyExcel Excel表格中用{}或者{.} 来表示包裹要填充的变量,如果单元格文本中本来就有{、}左右大括号,需要在括号前面使用斜杠转义\{ 、\}。 代码中被填充数据的实体对象的成员变量名或被填充map集合的key需要和Excel中被{}包裹的变量名称一致。 …...
ESP32通过MQTT连接阿里云平台实现消息发布与订阅
文章目录 前言 一、准备工作 二、阿里云平台配置 三、代码实现 总结 前言 本文将介绍如何使用ESP32开发板通过MQTT协议连接阿里云物联网平台,并实现消息的发布与订阅功能。我们将使用Arduino IDE进行开发,并借助PubSubClient库实现MQTT通信。 一、准备…...
NVIDIA Jetson Orin Nano 刷机过程
1. 背景 新到手 NVIDIA Jetson Orin Nano 插上显示屏,显示如下: 这是UEFI Shell,UEFI Shell(统一可扩展固件接口外壳程序)是一种基于UEFI规范的交互式命令行工具,它运行在UEFI固件环境中,为用…...
C#学习之数据转换
目录 一、创作说明 二、数据类型之间的转换 1.数据类型之间的转换表格 2.代码示例 三、进制之间的转换 1.进制之间的转换表格 2.代码示例 四、ASCII 编码和字符之间的转换 1.ASCII 编码和字符之间的转换表格 2.代码示例 五、总结 一、创作说明 C#大多数时候都是和各…...
typecho快速发布文章
typecho_Pytools typecho_Pytools工具由python编写,可以快速批量的在本地发布文章,不需要登陆后台粘贴md文件内容,同时此工具还能查看最新的评论消息。… 开源地址: GitHub Gitee 使用教学:B站 一、主要功能 所有操作不用登陆博…...
深度学习R4周:LSTM-火灾温度预测
🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 任务: 数据集中提供了火灾温度(Tem1)、一氧化碳浓度(CO 1)烟雾浓度(Soot 1)…...
探索Java中的集合类_特性与使用场景
1. 引言 1.1 Java集合框架概述 Java集合框架(Java Collections Framework, JCF)是Java中用于存储和操作一组对象的类和接口的统称。它提供了多种数据结构来满足不同的需求,如列表、集合、映射等。JCF的核心接口包括Collection、List、Set、Queue和Map,以及它们的各种实现…...
自动化遇到的问题记录(遇到问题就更)
总结回归下自己这边遇到的一些问题 “EOF错误”,获取不到csv里面的内容 跑多csv文件里的场景,部分场景的请求值为 1、检查csv文件里不能直接是[]开头的参数,把[]改到ms平台的请求参数里 2、有时可能是某个参数值缺了双引号的其中一边 met…...
【云安全】云原生- K8S kubeconfig 文件泄露
什么是 kubeconfig 文件? kubeconfig 文件是 Kubernetes 的配置文件,用于存储集群的访问凭证、API Server 的地址和认证信息,允许用户和 kubectl 等工具与 Kubernetes 集群进行交互。它通常包含多个集群的配置,支持通过上下文&am…...
【愚公系列】《Python网络爬虫从入门到精通》008-正则表达式基础
标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...
【Linux】Ext2文件系统、软硬链接
Ext2文件系统 一.理解硬件1.磁盘、服务器、机柜、机房2.磁盘的物理结构3.磁盘的存储结构4.磁盘的逻辑结构1.理解过程2.真实过程 5.CHS地址、LBA地址转换 二.引入文件系统1.引入"块"概念2.引入"分区"概念3.引入"inode"概念 三.Ext2文件系统1.宏观…...
ATF系统安全从入门到精通
CSDN学院课程连接:https://edu.csdn.net/course/detail/39573...
【算法专场】哈希表
目录 前言 哈希表 1. 两数之和 - 力扣(LeetCode) 算法分析 算法代码 面试题 01.02. 判定是否互为字符重排 编辑算法分析 算法代码 217. 存在重复元素 算法分析 算法代码 219. 存在重复元素 II 算法分析 算法代码 解法二 算法代码 算法…...
Spring Boot启动慢?5个优化技巧让你的应用秒启动(附实战代码)
Spring Boot启动慢?5个优化技巧让你的应用秒启动(附实战代码) 每次等待Spring Boot应用启动时,看着控制台不断刷新的日志,你是否也感到焦虑?特别是在微服务架构下,频繁的重启和部署让启动时间成…...
HPH构造揭秘:建筑省钱新法宝
在建筑这个领域当中,一场围绕着效率跟成本的革新此时正在静悄悄发生着。HPH构造,它的全称是“高预应力混杂配筋”,正借助着其特有的设计思想而变成了行业的焦点所在。这项技术最开始是源自装配式建筑的探索,现如今已经被广泛运用在…...
zfoo入门指南:10分钟快速搭建高性能Java服务器
zfoo入门指南:10分钟快速搭建高性能Java服务器 【免费下载链接】zfoo 💡Extremely fast enterprise server framework, can be used in RPC, game server, web server. 项目地址: https://gitcode.com/gh_mirrors/zf/zfoo zfoo是一个极其快速的企…...
3个微信聊天记录备份痛点与开源解决方案:WeChatExporter完全指南
3个微信聊天记录备份痛点与开源解决方案:WeChatExporter完全指南 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾因手机丢失或更换而痛失珍贵的微信聊…...
Fluent UDF实战:除了速度入口,你的DEFINE_PROFILE宏还能搞定这些边界条件(温度、组分、壁面接触角全解析)
Fluent UDF实战:DEFINE_PROFILE宏在复杂边界条件中的高阶应用 在计算流体动力学(CFD)仿真中,标准界面提供的边界条件设置往往难以满足复杂物理场景的需求。当您需要定义随空间变化的温度场、随时间波动的组分浓度,或是…...
4月openKylin多项进展:社区治理、技术突破、生态拓展全面开花!
1. 社区治理4月30日,2026年OpenAtom openKylin(简称"openKylin")常务委员会4月会议在线上召开,麒麟软件、联想开天等常委单位代表参会,汇报当月工作进展,常委们还提出宝贵建议。4月16日ÿ…...
【AISMM高管汇报模板实战指南】:SITS2026官方未公开的5大结构漏洞与3小时速成改造法
更多请点击: https://intelliparadigm.com 第一章:SITS2026官方AISMM高管汇报模板的权威定位与战略价值 SITS2026官方AISMM(AI-Driven Strategic Transformation & Security Maturity Model)高管汇报模板是由国际数字治理联盟…...
vscode-dark-islands的命令面板美化:玻璃态边框与圆角设计
vscode-dark-islands的命令面板美化:玻璃态边框与圆角设计 【免费下载链接】vscode-dark-islands VSCode theme based off the easemate IDE and Jetbrains islands theme 项目地址: https://gitcode.com/GitHub_Trending/vs/vscode-dark-islands vscode-dar…...
RepoToText:将Git仓库转换为结构化文本的实用工具
1. 项目概述:从代码仓库到结构化文本的“翻译官”如果你和我一样,经常需要快速理解一个陌生的开源项目,或者想把自己项目的代码库整理成一份清晰的文档,那你肯定遇到过这样的困境:面对一个包含成百上千个文件的Git仓库…...
Python 爬虫进阶技巧:动态调整请求频率规避 IP 封禁
前言 网络爬虫规模化采集过程中,高频无节制的批量请求是触发站点反爬机制、导致 IP 封禁、访问受限、请求拦截的核心诱因。多数互联网服务提供商与站点服务器均配置了完善的流量监控、访问频率检测、异常请求识别策略,短时间内高密度的 HTTP 请求会被判…...
