Fix detection of reflection/transmission measurement for touchstone files with more than two ports

This commit is contained in:
Jan Käberich 2022-07-09 21:58:02 +02:00
parent 2e055bb55d
commit 3af9b735ba

View File

@ -158,22 +158,14 @@ void Trace::fillFromTouchstone(Touchstone &t, unsigned int parameter)
d.y = t.point(i).S[parameter]; d.y = t.point(i).S[parameter];
addData(d, DataType::Frequency); addData(d, DataType::Frequency);
} }
// check if parameter is square (e.i. S11/S22/S33/...) // check if parameter is a reflection measurement (e.i. S11/S22/S33/...)
parameter++; reflection = false;
bool isSquare = false; for (unsigned int i = 0; i * i <= parameter; i++) {
for (unsigned int i = 1; i * i <= parameter; i++) { if (parameter == i * t.ports() + i) {
reflection = true;
// If (i * i = n)
if ((parameter % i == 0) && (parameter / i == i)) {
isSquare = true;
break; break;
} }
} }
if(isSquare == 1) {
reflection = true;
} else {
reflection = false;
}
createdFromFile = true; createdFromFile = true;
reference_impedance = t.getReferenceImpedance(); reference_impedance = t.getReferenceImpedance();
emit typeChanged(this); emit typeChanged(this);