Hallo,
es ist wieder einmal soweit, dass mich ein Problem(chen) quält, das eurer Hilfe bedarf.
Folgende skizzenhafte Problemstellung:
Ich habe ein Programm geschrieben, das im Wesentlichen ein Eingangssignal über eine Filterbank mehrerer Bandpassfilter in verschiedene Frequenzbereiche aufspaltet. Mit diesen typischerweise 10-12 Signalen arbeite ich dann weiter.
Das ganze läuft online - ich bekomme also ständig (soll heißen kontinuierlich) Signale, die ich filtere und verarbeite.
Dabei ergibt sich:
a) Filterfunktionen und einige andere Operationen in meiner Signalverarbeitung erfordern für den korrekten Betrieb einige Werte aus dem vorherigen Durchlauf.
b) die Filterbank muss auf jeden Fall variabel sein. Dies führt dazu, dass ich die Filter Vis in eine For Loop packe (muss?!). Das ist prinzipiell ja kein Problem, aber ich kann dadurch meine Signalverarbeitung nicht mehr einfach auf Reentrant stellen, da innerhalb einer ForSchleife nicht für jeden Durchlauf eine Instanz erstellt wird.
Ich löse das zur Zeit mit Hilfe von funktionalen Vi's. Das klappt auch. Allerdings bin ich damit nicht ganz glücklich, da meine Anzahl von nichtinitialisierten Schieberegistern (zur Datenübergabe) irgendwie ins (gefühlte) unendliche steigt.
Wenn ich pro Kanal 2 1d Arrays speichern muss, dann sind das schon 2 2dim Arrays zur Speicherung. (1d array x Anzahl Kanal = 2d array)
Meine Frage also: Gibt es irgendeine elegante Lösung, die ich hier anwenden könnte? Kann man reentrant innerhalb einer Forschleife aktivieren? Wie würdet ihr sowas angehen?
Anbei ein Screenshot von einem typischen functional Vi bei mir. In diesem Fall ein 2d Array, der die Daten mitschleift.
Besten Dank mal im Voraus