Visual C#(C_sharp)用のグラフプロットライブラリScottPlotを使う(2) 2ポートTouchstoneフォーマットのSパラメータを読み込んで高周波設計で用いられるスミスチャートとdB表示プロットを描く。拡大縮小移動も簡単。
今回はSパラメータの表示。dB表示は簡単だが、スミスチャートはどうする?と思ったらもうScottPlotに用意されていた。
https://scottplot.net/cookbook/5.0/SmithChart/
これなら簡単だ。ソースコードはこんな感じで(Touchstone読むところは面倒なので手抜き…)。
namespace PlotSmith
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
radioButton1.Checked = true;
var axis = formsPlot1.Plot.Axes;
axis.Bottom.Label.Text = "Frequency[MHz]";
axis.Bottom.Label.FontSize = 21;
axis.Bottom.TickLabelStyle.FontSize = 21;
axis.Left.Label.Text = "S parameter[dB]";
axis.Left.Label.FontSize = 21;
axis.Left.TickLabelStyle.FontSize = 21;
}
private void button1_Click(object sender, EventArgs e)
{
List<double> freq = new List<double>();
List<List<double>> spara = new List<List<double>>();
StreamReader sr = new StreamReader("dea165550bt-2322a1-h.s2p");
while (!sr.EndOfStream)
{
string? line = sr.ReadLine();
if (line != null && line[0] != '!' && line[0] != '#')
{
string[] data = line.Split(' ');
freq.Add(double.Parse(data[0]));
List<double> list = new List<double>();
list.Add(double.Parse(data[1]));
list.Add(double.Parse(data[2]));
list.Add(double.Parse(data[3]));
list.Add(double.Parse(data[4]));
spara.Add(list);
}
}
int n = spara.Count;
if (radioButton1.Checked)
{
formsPlot1.Plot.Clear();
var fr = new double[n];
var s11 = new double[n];
var s21 = new double[n];
for (int i = 0; i < n; i++)
{
fr[i] = freq[i];
s11[i] = spara[i][0];
s21[i] = spara[i][2];
}
var s11plot = formsPlot1.Plot.Add.ScatterLine(fr, s11);
s11plot.LegendText = "S11";
s11plot.LineWidth = 5;
var s21plot = formsPlot1.Plot.Add.ScatterLine(fr, s21);
s21plot.LegendText = "S21";
s21plot.LineWidth = 5;
formsPlot1.Plot.Legend.FontSize = 21;
formsPlot1.Plot.ShowLegend();
formsPlot1.Plot.Axes.AutoScale();
formsPlot1.Refresh();
}
if (radioButton2.Checked)
{
formsPlot1.Plot.Clear();
var smith = formsPlot1.Plot.Add.SmithChartAxis();
var s11re = new double[n];
var s11im = new double[n];
for (int i = 0;i < n; i++)
{
var db = spara[i][0];
var phase = spara[i][1];
var mag = Math.Pow(10.0, db / 20.0);
s11re[i] = mag * Math.Cos(phase * Math.PI / 180.0);
s11im[i] = mag * Math.Sin(phase * Math.PI / 180.0);
}
var sline = formsPlot1.Plot.Add.ScatterLine(s11re, s11im);
sline.LineWidth = 5;
formsPlot1.Plot.Axes.AutoScale();
formsPlot1.Refresh();
}
}
}
}
|
実行結果の動画。dBとスミスチャートを切り替えられるようにした。
« 高周波・RFニュース 2025年2月27日 Rogersがミリ波レーダ用基板の新製品発表、QorvoがXバンドレーダ解説、Silicon Labsがスマートホーム用新SoC発表、STMがGNNS受信機を発表、DesignCon2025でのBroadcomの発表内容、Qualcommが産業用にDragonwing発表 | トップページ | エッホエッホと走るフクロウの赤ちゃんがいらすとやのイラストとして公開されたので、それを使ってUnityで動かしてみた動画。もうちょっと動きに工夫がいるな。 »
「パソコン・インターネット」カテゴリの記事
- Julia言語でタッパーの自己言及式(不等式を計算して図示するとまた不等式になる)を描いてみる。543桁の数を含む計算が必要だが、デフォルトで任意精度演算が可能なので容易にできた。(2025.03.11)
- UnityでVisual C#用の常微分方程式ソルバーOpen Solving Library for ODEs(OSLO)を使う(3)三体問題の周期解としてまずは有名な8の字を描くものをやってみる。(2025.03.14)
- UnityでVisual C#用の常微分方程式ソルバーOpen Solving Library for ODEs(OSLO)を使う(2)ブルースカイ・カタストロフィを生じるGavrilov Shilnikov modelを計算してDormand&PrinceのRK547Mで計算して玉を動かして軌跡を付ける。ぐるぐる回っていたと思ったら突然広がって戻る。(2025.03.12)
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2025年3月14日 Microwave Journalでテラヘルツデバイス製造解説、IgnionのRF、アンテナ向けAIツールOxionが2.0に、TIが1.38mm²の超小型MCU発表、IntelのCEOはLip-Bu Tanに。(2025.03.14)
- 高周波・RFニュース 2025年3月13日 NordicとQorvoがAliroとMatterのリファレンスアプリケーション提供、TSMCとMediaTekがパワーアンプと電源管理ユニット統合、3GPPのTSG RANの議長がSamsungの人に、Silicon Labsが超小型Bluetooth Soc, QuectelがWi-Fi/BTモジュール発表(2025.03.13)
- 高周波・RFニュース 2025年3月12日 iFixitが任天堂Alarmoを分解、なんとSocionextの24GHzミリ波センサ’積んでる!Next G Allianceが6Gに向けたデジタルツインとFWAのホワイトペーパー発行、Qorvoが統合型UWB SoC発表、SemtechがLora、u-bloxとTelitがGNSSモジュール発表(2025.03.12)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2025年3月14日 Microwave Journalでテラヘルツデバイス製造解説、IgnionのRF、アンテナ向けAIツールOxionが2.0に、TIが1.38mm²の超小型MCU発表、IntelのCEOはLip-Bu Tanに。(2025.03.14)
- 高周波・RFニュース 2025年3月13日 NordicとQorvoがAliroとMatterのリファレンスアプリケーション提供、TSMCとMediaTekがパワーアンプと電源管理ユニット統合、3GPPのTSG RANの議長がSamsungの人に、Silicon Labsが超小型Bluetooth Soc, QuectelがWi-Fi/BTモジュール発表(2025.03.13)
- 高周波・RFニュース 2025年3月12日 iFixitが任天堂Alarmoを分解、なんとSocionextの24GHzミリ波センサ’積んでる!Next G Allianceが6Gに向けたデジタルツインとFWAのホワイトペーパー発行、Qorvoが統合型UWB SoC発表、SemtechがLora、u-bloxとTelitがGNSSモジュール発表(2025.03.12)
« 高周波・RFニュース 2025年2月27日 Rogersがミリ波レーダ用基板の新製品発表、QorvoがXバンドレーダ解説、Silicon Labsがスマートホーム用新SoC発表、STMがGNNS受信機を発表、DesignCon2025でのBroadcomの発表内容、Qualcommが産業用にDragonwing発表 | トップページ | エッホエッホと走るフクロウの赤ちゃんがいらすとやのイラストとして公開されたので、それを使ってUnityで動かしてみた動画。もうちょっと動きに工夫がいるな。 »
コメント