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で動かしてみた動画。もうちょっと動きに工夫がいるな。 »
「パソコン・インターネット」カテゴリの記事
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2025年6月19日 QorvoがSバンドレーダ用のBAW switched filter bank発表、Ericssonがミッションクリティカル用途のアンテナ発表、SEMCOが125℃保証の0201インチX7T 1.0㎌ 6.3V MLCC発表、iFixitがトルクスプラスねじについて解説(2025.06.19)
- 高周波・RFニュース 2025年6月18日 Qorvoが5Gインフラ向けBAWフィルタとプリドライバアンプ発表、KeysightとNTTらが300GHz帯で280Gbpsを達成する信号発生システム発表、TDKが自動車用パワー・オーバー・コアクス・インダクター発表、NordicがNeuton AI買収(2025.06.18)
- 高周波・RFニュース2025年6月17日 everythingRF magazineはIMS2025特別号、MITの6Gに向け光でディープラーニングを行うチップ論文、NGMNが6Gに向けたキーメッセージを出版、Litepoint、Spirent、ViaviのTest and Measurementのトレンドレポート(2025.06.17)
- 高周波・RFニュース 2025年6月16日 iFixitのSamsung Galaxy S25 Edge分解でCTスキャンで2階建て基板の内部や5Gミリ波アンテナモジュールが鮮明に見える、Microwave JournalでRFのヘテロジニアスインテグレーションとローデ・シュワルツの複数ポートをもつスペアナFSWX紹介(2025.06.16)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2025年6月19日 QorvoがSバンドレーダ用のBAW switched filter bank発表、Ericssonがミッションクリティカル用途のアンテナ発表、SEMCOが125℃保証の0201インチX7T 1.0㎌ 6.3V MLCC発表、iFixitがトルクスプラスねじについて解説(2025.06.19)
- 高周波・RFニュース 2025年6月18日 Qorvoが5Gインフラ向けBAWフィルタとプリドライバアンプ発表、KeysightとNTTらが300GHz帯で280Gbpsを達成する信号発生システム発表、TDKが自動車用パワー・オーバー・コアクス・インダクター発表、NordicがNeuton AI買収(2025.06.18)
- 高周波・RFニュース2025年6月17日 everythingRF magazineはIMS2025特別号、MITの6Gに向け光でディープラーニングを行うチップ論文、NGMNが6Gに向けたキーメッセージを出版、Litepoint、Spirent、ViaviのTest and Measurementのトレンドレポート(2025.06.17)
- 高周波・RFニュース 2025年6月16日 iFixitのSamsung Galaxy S25 Edge分解でCTスキャンで2階建て基板の内部や5Gミリ波アンテナモジュールが鮮明に見える、Microwave JournalでRFのヘテロジニアスインテグレーションとローデ・シュワルツの複数ポートをもつスペアナFSWX紹介(2025.06.16)
« 高周波・RFニュース 2025年2月27日 Rogersがミリ波レーダ用基板の新製品発表、QorvoがXバンドレーダ解説、Silicon Labsがスマートホーム用新SoC発表、STMがGNNS受信機を発表、DesignCon2025でのBroadcomの発表内容、Qualcommが産業用にDragonwing発表 | トップページ | エッホエッホと走るフクロウの赤ちゃんがいらすとやのイラストとして公開されたので、それを使ってUnityで動かしてみた動画。もうちょっと動きに工夫がいるな。 »
コメント