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 Weekly Digest (Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/10/27-2025/11/3(2025.11.04)
- Google AI StudioのBuild(アプリを作る機能)で高周波・RFニュースを1週間分まとめるアプリを作った(最終版) 私がいつも調査しているサイト67個を全部入れて調べてもらうようにした。これでとりあえず完成かな。QorvoとSkyworksの合併も拾ってくれた。(2025.10.30)
- Google AI StudioのBuild(アプリを作る機能)にVibe CodingのためのSupercharge your apps with AIというのがついた。そこで高周波・RFニュースを1週間分まとめるアプリを作った(続き)調べたものの画像を入れて、というとできないのでそれっぽい画像を生成する機能が付いた。(2025.10.29)
- Google AI StudioのBuild(アプリを作る機能)にVibe CodingのためのSupercharge your apps with AIというのがついた。そこで高周波・RFニュースを集めて要約するアプリRF Tech Summarizerを作った。見かけも0から作った前と違って結構かっこよくできている。(2025.10.28)
- RF Weekly Digest (Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/10/20-2025/10/26(2025.10.26)
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2025年11月7日 IEEE Microwave Magazineで5Gから6Gへのインフラの論文、GSMAがJapan Digital Nationレポート発行、MolexがEMIシールド付き4列B2Bコネクタ発表、Rohde&SchwarzのMobile Test Summit登録開始、ZTEがPre6G GigaMIMO発表(2025.11.07)
- 高周波・RFニュース 2025年11月6日 QualcommのWi-Fi 8解説記事続き、SEMCOと住友化学がグラスコア基板の合弁会社設立、KeysightとMediaTekがPre-6Gのセンシング・通信で協業、KYOCERA AVXがイリジウム用CAPアンテナ発表(2025.11.06)
- 高周波・RFニュース 2025年11月5日 NokiaとR&SがAI-powered 6Gレシーバーで協業、ESA, Eutelsat, Airbus, MediaTekらが5G-Advanced NTNを実証、Seeed StudioのモジュールのNordicのSoC採用、MathWorksのRF・アンテナ設計解説(2025.11.05)
- RF Weekly Digest (Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/10/27-2025/11/3(2025.11.04)
- Google AI StudioのBuild(アプリを作る機能)で高周波・RFニュースを1週間分まとめるアプリを作った(最終版) 私がいつも調査しているサイト67個を全部入れて調べてもらうようにした。これでとりあえず完成かな。QorvoとSkyworksの合併も拾ってくれた。(2025.10.30)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2025年11月7日 IEEE Microwave Magazineで5Gから6Gへのインフラの論文、GSMAがJapan Digital Nationレポート発行、MolexがEMIシールド付き4列B2Bコネクタ発表、Rohde&SchwarzのMobile Test Summit登録開始、ZTEがPre6G GigaMIMO発表(2025.11.07)
- 高周波・RFニュース 2025年11月6日 QualcommのWi-Fi 8解説記事続き、SEMCOと住友化学がグラスコア基板の合弁会社設立、KeysightとMediaTekがPre-6Gのセンシング・通信で協業、KYOCERA AVXがイリジウム用CAPアンテナ発表(2025.11.06)
- 高周波・RFニュース 2025年11月5日 NokiaとR&SがAI-powered 6Gレシーバーで協業、ESA, Eutelsat, Airbus, MediaTekらが5G-Advanced NTNを実証、Seeed StudioのモジュールのNordicのSoC採用、MathWorksのRF・アンテナ設計解説(2025.11.05)
- RF Weekly Digest (Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/10/27-2025/11/3(2025.11.04)
- Google AI StudioのBuild(アプリを作る機能)で高周波・RFニュースを1週間分まとめるアプリを作った(最終版) 私がいつも調査しているサイト67個を全部入れて調べてもらうようにした。これでとりあえず完成かな。QorvoとSkyworksの合併も拾ってくれた。(2025.10.30)
« 高周波・RFニュース 2025年2月27日 Rogersがミリ波レーダ用基板の新製品発表、QorvoがXバンドレーダ解説、Silicon Labsがスマートホーム用新SoC発表、STMがGNNS受信機を発表、DesignCon2025でのBroadcomの発表内容、Qualcommが産業用にDragonwing発表 | トップページ | エッホエッホと走るフクロウの赤ちゃんがいらすとやのイラストとして公開されたので、それを使ってUnityで動かしてみた動画。もうちょっと動きに工夫がいるな。 »


コメント