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(); }
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); }