Z
Entschuldigt, habe gestern nicht mehr reingeschaut. Wow, sind das viele Antworten...
Also zum Aufbau der Daten:
In der Dateiendung spiegeln sich die Menge der Daten wieder:
.s2p = 2 Ports = 4 Paare komplexer Zahlen + 1 Frequenz, bei der sie auftreten.
! Das ist eine Kommentarzeile
# GHz S RI R 50
1.500 0.0043 -0.625 0.0653 -0.085 0.3564 -0.7632 0.074 0.00432
1.550 0.0343 -0.715 0.1743 -0.345 0.3444 -0.7192 0.042 0.02345
.
.
.
noch 19998 Datensätze...
Ich lese das ungefähr so ein:
float d0, d1, d2, d3, d4, d5, d6, d7, d8;
std::string S;
S.reserve(1024);
while (!eof)
{
if ((S[0] != "#") && (S[0] != "!"))
{
getline(file, S);
std::istringstream sin(S);
sin >> d0; // Frequenz
sin >> d1; // S11 real
sin >> d2; // S11 imaginaer
sin >> d3; // S12 real
sin >> d4; // S12 imaginaer
sin >> d5; // S21 real
sin >> d6; // S21 imaginaer
sin >> d7; // S22 real
sin >> d8; // S21 imaginaer
SchiebeAllesInEinenVektor();
m_pPointerAufProgressBar->StepIt();
}
}
Bitte nicht aufstöhnen, es gibt bestimmt effizientere Methoden, für Ratschläge bin ich jederzeit offen. Gibt es eine Möglichkeit, das effizienter einzulesen? Problem am Format ist - wie oben schon erwähnt - zwischen den Datenzeilen können immer noch beliebig viele Kommentarzeilen (mit "!" beginnend) stehen.