Extrahieren von Daten aus mehreren kontinuierlichen Wellenformen mit JSLIch versuche, Zeitwerte zu extrahieren, bei denen kontinuierliche Rechteckimpulse auf V0-Potentail treffen.
Obwohl ich nur 3 Zyklen für 3 Wellenformen gezeigt habe, gibt es mehr Zyklen und die Anzahl der Wellenformen beträgt mehr als 3.
Das Steigen und Senken geschieht für jede Wellenform zu unterschiedlichen Zeitpunkten, und ich möchte eine Lösung finden, um t1_rise, t1_fall, t2_rise, t2_fall zu extrahieren. für den angegebenen Datensatz.
Wenn einer von euch mich erleuchten kann, wird es enorm dankbar sein.
Vielen Dank,
Pi
Betreff: Extrahieren von Daten aus mehreren kontinuierlichen Wellenformen mit JSLIch nahm den Code, den ich hinzugefügt hatte, und fügte nur eine Totzeit nach einer Kreuzung hinzu, wenn beobachtet, wobei Untersequenz-Kreuzungen ignoriert werden.
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "time of crossing" );
dt << New Column( "direction", character );
dt << New Column( "Which threshold", character );
max90 = 5.6;
max10 = .6;
deadtime = .001;
lastcross = -9999999999;
timerise = Function( {MaxPercent},
:time of crossing[i] = ((MaxPercent - :voltage[i - 1]) / (:voltage[i] - :voltage[i - 1])) * (:time[i] - :time[i - 1]) + :time[i - 1]
);
timefall = Function( {MaxPercent},
:time of crossing[i] = ((:voltage[i - 1] - MaxPercent) / (:voltage[i - 1] - :voltage[i])) * (:time[i - 1] - :time[i]) + :time[i]
);
For( i = 2, i <= N Rows( dt ), i++,
If( :waveform[i - 1] != :waveform[i],
Show( i ),
If( :voltage[i] >= max10 & :voltage[i - 1] < max10 & :time[i]> lastcross+deadtime,
lastcross = :time[i];
x = timerise( max10 );
:direction[i] = "Rise";
:Which Threshold[i] = "10%";
);
If( :voltage[i] >= max90 & :voltage[i - 1] < max90 & :time[i]> lastcross+deadtime,
lastcross = :time[i];
x = timerise( max90 );
:direction[i] = "Rise";
:Which Threshold[i] = "90%";
);
If( :voltage[i] <= max10 & :voltage[i - 1] > max10 & :time[i]> lastcross+deadtime,
lastcross = :time[i];
x = timefall( max10 );
:direction[i] = "Fall";
:Which Threshold[i] = "10%";
);
If( :voltage[i] <= max90 & :voltage[i - 1] > max90 & :time[i]> lastcross+deadtime,
lastcross = :time[i];
x = timefall( max90 );
:direction[i] = "Fall";
:Which Threshold[i] = "90%";
);
)
);Betreff: Extrahieren von Daten aus mehreren kontinuierlichen Wellenformen mit JSL Ich hatte vor einiger Zeit einen distanzierten Post auf Powerline-Wellenformen .
Es enthält eine Kurve einer 60-Hz-Wellenform mit einem Ausfall von 1/2 Sekunde und einige schlecht durchdachte Ideen zur Erfassung der Frequenz durch Zählen von Nulldurchgängen. Insbesondere die Frequenzberechnung erzeugte einen extremen Ausreißer, wenn die Stromversorgung ausfiel.
Betreff: Extrahieren von Daten aus mehreren kontinuierlichen Wellenformen mit JSLEs hat funktioniert!!
Ich weiß Ihre Hilfe wirklich zu schätzen, und ich freue mich sehr, von Ihnen zu lernen, Jim.
Nachdem ich den Weg gefunden hatte, Ihre Lösung in meinen jsl-Code zu implementieren, fand ich tatsächlich ein anderes Problem.
Es gibt wenige Fehlerkennungen aufgrund von Schwingungen in der Wellenform.
Ich könnte einige falsche Entdeckungen nach dem Puls beseitigen, indem ich Datenpunkte entferne.
Für den ersten Impuls haben jedoch mehrere Wellenformen bei einer steigenden Flanke aufgrund einer langsamen Anstiegszeit eine mehrfache Erkennung. (Es kann auch in der Beispieldatentabelle gefunden werden, die ich zuvor in diesem Thread eingefügt habe.)
Ich weiß, dass ich dich zu sehr störe, aber ich kann mir nicht vorstellen, wie ich diese im Puls entfernen kann.
Ich wünschte, Sie können mich aufklären, wie ich sie herausfiltern / ignorieren kann.
Vielen Dank,
Pil
Betreff: Extrahieren von Daten aus mehreren kontinuierlichen Wellenformen mit JSLIch habe ein einfaches kleines Skript zusammengestellt, das mit Ausnahme der Berechnung der 90% und 10% von max (ein wenig verwirrt ist, was Sie dort wollen), ich denke, das ist eine Art von dem, was Sie wollen.
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "time of crossing" );
dt << New Column( "direction", character );
dt << New Column( "Which threshold", character );
max90 = 5.6;
max10 = .6;
timerise = Function( {MaxPercent},
:time of crossing[i] = ((MaxPercent - :voltage[i - 1]) / (:voltage[i] - :voltage[i - 1])) * (:time[i] - :time[i - 1]) + :time[i - 1]
);
timefall = Function( {MaxPercent},
:time of crossing[i] = ((:voltage[i - 1] - MaxPercent) / (:voltage[i - 1] - :voltage[i])) * (:time[i - 1] - :time[i]) + :time[i]
);
For( i = 2, i <= N Rows( dt ), i++,
If( :waveform[i - 1] != :waveform[i],
Show( i ),
If( :voltage[i] >= max10 & :voltage[i - 1] < max10,
x = timerise( max10 );
:direction[i] = "Rise";
:Which Threshold[i] = "10%";
);
If( :voltage[i] >= max90 & :voltage[i - 1] < max90,
x = timerise( max90 );
:direction[i] = "Rise";
:Which Threshold[i] = "90%";
);
If( :voltage[i] <= max10 & :voltage[i - 1] > max10,
x = timefall( max10 );
:direction[i] = "Fall";
:Which Threshold[i] = "10%";
);
If( :voltage[i] <= max90 & :voltage[i - 1] > max90,
x = timefall( max90 );
:direction[i] = "Fall";
:Which Threshold[i] = "90%";
);
)
);Betreff: Extrahieren von Daten aus mehreren kontinuierlichen Wellenformen mit JSLIch freue mich sehr über Ihren Kommentar
Ich habe unten eine Beispieldatentabelle angehängt und hoffe wirklich, dass Sie mir eine Lösung geben können.
Wie Sie bereits sagten, habe ich Zeitstempel in gleichen Abständen für die Wellenformen, die in derselben Spalte gestapelt sind, und die Wellenformnummer ist in einer Spalte kategorisiert, die ich beibehalten muss. (dh Ich kann die Kolumne nicht teilen.)
Um die Anstiegs- und Abfallzeit jedes Rechteckimpulses zu ermitteln, möchte ich bei jedem Rechteckimpuls die Kreuzungszeit der Spannung bei 10% und 90% der Maximalspannung (mit Ausnahme von Über- und Unterschreitungen, die etwa 6 V beträgt) finden.
Wenn zwei Grenzwertüberschreitungen pro Kante zu kompliziert sind, möchte ich den Weg finden, um die Zeit für nur einen Grenzwertübergang zu ermitteln.
Ich hoffe, ich kann die Lösung von der Community finden.
Vielen Dank,
Pil
Vielen Dank,
Pil
Betreff: Extrahieren von Daten aus mehreren kontinuierlichen Wellenformen mit JSLWenn man davon ausgeht, dass jede Zeile einen Zeitstempel und einen Spannungswert hat, ist es relativ einfach, die Daten zu durchlaufen und zu erkennen, wann die Daten eine bestimmte Spannung überschreiten. Dies für mehrere Wellenformen zu tun, wäre nur etwas komplexer. Was hilfreich wäre, ist die Struktur Ihrer Datentabelle zu sehen. Wenn Sie das schaffen könnten, bin ich mir sicher, dass jemand in der Community Ihnen eine Lösung bieten könnte