« 高周波・RFニュース 2025年2月27日 Rogersがミリ波レーダ用基板の新製品発表、QorvoがXバンドレーダ解説、Silicon Labsがスマートホーム用新SoC発表、STMがGNNS受信機を発表、DesignCon2025でのBroadcomの発表内容、Qualcommが産業用にDragonwing発表 | トップページ | エッホエッホと走るフクロウの赤ちゃんがいらすとやのイラストとして公開されたので、それを使ってUnityで動かしてみた動画。もうちょっと動きに工夫がいるな。 »

2025年2月28日 (金)

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年2月27日 Rogersがミリ波レーダ用基板の新製品発表、QorvoがXバンドレーダ解説、Silicon Labsがスマートホーム用新SoC発表、STMがGNNS受信機を発表、DesignCon2025でのBroadcomの発表内容、Qualcommが産業用にDragonwing発表 | トップページ | エッホエッホと走るフクロウの赤ちゃんがいらすとやのイラストとして公開されたので、それを使ってUnityで動かしてみた動画。もうちょっと動きに工夫がいるな。 »

最近の記事

2025年3月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

最近のコメント

無料ブログはココログ
フォト