public void ConversionTests()
        {
            NetworkParameter s = NetworkParameter.FromPolarDegree(100, 180);

            s.Magnitude_dB.Should().Be(20);
            s.Phase_deg.Should().Be(180);

            NetworkParameter s2 = NetworkParameter.FromPolarDecibelDegree(20, 180);

            s2.Magnitude.Should().Be(100);
            s.Phase_deg.Should().Be(180);

            NetworkParameter s3 = new NetworkParameter(10, 10);

            s3.Phase_deg.Should().Be(45);

            NetworkParameter s4 = new NetworkParameter(10, -10);

            s4.Phase_deg.Should().Be(-45);

            NetworkParameter s5 = NetworkParameter.FromPolarDegree(100 * Math.Sqrt(2), 45);

            s5.Real.Should().BeApproximately(100, .001);
            s5.Imaginary.Should().BeApproximately(100, .001);
        }
        public void SimpleRoundTripTest()
        {
            TouchstoneOptions options = new TouchstoneOptions
            {
                Format        = FormatType.DecibelAngle,
                FrequencyUnit = FrequencyUnit.GHz,
                Parameter     = ParameterType.Scattering,
                Resistance    = 50
            };

            string filePath = Path.GetTempFileName();

            var ts      = new Touchstone(2, options);
            int gain_dB = 0;

            for (double f = 1e9; f <= 2e9; f += 0.1e9)
            {
                var gain = NetworkParameter.FromPolarDecibelDegree(gain_dB, 0);
                ts.NetworkParameters[f, 2, 1] = gain;
            }

            ts.Write(filePath);

            var result = Touchstone.ReadAllData(filePath);

            result.Count.Should().Be(ts.NetworkParameters.Count);

            foreach (var freq in result.Frequencies)
            {
                ts.NetworkParameters[freq, 2, 1].Should().Be(result[freq, 2, 1]);
            }
        }
        public void SimpleCascade()
        {
            NetworkParameter infiniteReturnLoss = NetworkParameter.FromPolarDecibelDegree(double.NegativeInfinity, 0);
            NetworkParameter three_dBLoss       = NetworkParameter.FromPolarDecibelDegree(3, 0);
            NetworkParameter five_dBLoss        = NetworkParameter.FromPolarDecibelDegree(5, 0);

            ScatteringParametersMatrix s1 = new ScatteringParametersMatrix(2)
            {
        public void ComparisonTests()
        {
            NetworkParameter s  = NetworkParameter.FromPolarDecibelDegree(20, 0);
            NetworkParameter s2 = NetworkParameter.FromPolarDecibelDegree(10, 180);

            //(s > s2).Should().BeTrue("magnitude is prioritized");

            NetworkParameter s_0 = NetworkParameter.FromPolarDecibelDegree(20, 10);
            //(s < s_0).Should().BeTrue("greater angle");

            NetworkParameter s3 = NetworkParameter.FromPolarDecibelDegree(20, 100);
            NetworkParameter s4 = NetworkParameter.FromPolarDegree(100, 100);

            (s3 == s4).Should().BeTrue();
        }
Beispiel #5
0
        public void TestNearest()
        {
            var collection = new NetworkParametersCollection <ScatteringParametersMatrix>(2);

            for (int i = 1; i <= 20; i++)
            {
                collection[i * 1.0e9, 2, 1] = NetworkParameter.FromPolarDecibelDegree(i, 0);
            }

            collection.Nearest(0)[2, 1].Should().Be(NetworkParameter.FromPolarDecibelDegree(1, 0),
                                                    "0 is out of bounds but closest to 1e9");

            collection.Nearest(1.0e9)[2, 1].Should().Be(NetworkParameter.FromPolarDecibelDegree(1, 0),
                                                        "1e9 is equal to 1e9");

            collection.Nearest(1.51e9)[2, 1].Should().Be(NetworkParameter.FromPolarDecibelDegree(2, 0),
                                                         "1.51e9 is closer to 2e9");

            collection.Nearest(19.9e9)[2, 1].Should().Be(NetworkParameter.FromPolarDecibelDegree(20, 0),
                                                         "19.9e9 is nearest to 20e9");

            collection.Nearest(21e9)[2, 1].Should().Be(NetworkParameter.FromPolarDecibelDegree(20, 0),
                                                       "21e9 is outside of bounds but nearest to 20e9");
        }
        private List <NetworkParameter> ParseParameters(List <string> data)
        {
            List <NetworkParameter> parameters = new List <NetworkParameter>();


            for (int j = 0; j < data.Count; j += 2)
            {
                double val1 = 0, val2 = 0;
                try
                {
                    val1 = double.Parse(data[j]);
                    val2 = double.Parse(data[j + 1]);
                }
                catch (FormatException)
                {
                    ThrowHelper("Data", "Invalid data format");
                }
                NetworkParameter param = new NetworkParameter();
                switch (Options.Format)
                {
                case FormatType.DecibelAngle:
                    param = NetworkParameter.FromPolarDecibelDegree(val1, val2);
                    break;

                case FormatType.MagnitudeAngle:
                    param = NetworkParameter.FromPolarDegree(val1, val2);
                    break;

                case FormatType.RealImaginary:
                    param = new NetworkParameter(val1, val2);
                    break;
                }
                parameters.Add(param);
            }
            return(parameters);
        }