Wie flatten (Umformen zu 1D) ein array beliebiger dimension in Labview
Lassen ein array beliebiger dimension (2 oder 3 in meinem Fall).
Wie kann ich das reduzieren (Umformen zu 1D) dieses array ohne im Voraus zu wissen, die Anzahl der Dimensionen ?
Wenn ich wusste, dass die Anzahl der Dimensionen, ich könnte leicht erhalten, die Gesamtzahl der Elemente (durch eine Kombination von "Array-Größe" - Funktion) und dann Umformen von A bis 1D mit dieser Nummer.
Leider, die "Array-Größe" - Funktion selbst gibt ein array zurück, dessen Anzahl der Elemente ist gleich der Anzahl der Dimensionen, die bringt uns zurück zu dem ursprünglichen problem.
Habe ich "löste" das problem, indem Sie eine Funktion erstellen, (VI), das gibt die gesamte Anzahl der Elemente einer 3D-array (die häufigste Art von arrays, die ich erwarten, zu behandeln), so dass ich geben kann das als ein argument zu der Reshape-Funktion. Problem: es kann nicht sein, dass ein 2D-array, obwohl der Algorithmus funktionieren würde das mit einem array ! (es scheint, dass in Labview, Arrays Kontrollen sind streng, was die Zahl der Dimensionen, die Sie annehmen, was nicht der Fall in Matlab zum Beispiel).
Schöne Lösung wäre ein einfacher Weg, um zu multiplizieren alle Elemente des Arrays gegeben, die von "Array-Größe", um schnell die Gesamtzahl der Elemente, ohne zu müssen, wickeln Sie diese in ein sub-VI.
Insgesamt gibt es nicht eine einfache und effiziente Möglichkeit, dieses problem zu lösen ? Es sollte ziemlich standard..
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaub das ist was du suchst :
http://zone.ni.com/reference/en-XX/help/371361E-01/glang/reshape_array/
Würden Sie tun :
n-DimInputArray --> ArraySize --> 1D_SizesOUT
Dieser liefert ein 1D-array mit den Größen aller Dimensionen des Arrays.
Gehen Sie dann :
1D_SizeOUT --> MultiplyArrayElements --> NumberOfElementsIn_n-DimInputArray
Geht dieser Wert in die dimension Größe für ReshapeArray - fertig.
http://zone.ni.com/reference/en-XX/help/371361E-01/glang/array_size/
http://zone.ni.com/reference/en-XX/help/371361E-01/glang/multiply_array_elements/
Hier ist ein Ausschnitt des obigen Codes:
Nur das array die Größe der array-Größe an, und Sie erhalten die Anzahl der Dimensionen...
Werden, um diese in ein subvi, verwandeln Sie Ihren unbekannt-array in eine Variante und geben diese Variante und die Anzahl der Dimensionen in das subvi. Innerhalb des subvi, "Variant nach Daten" mit einem array der dimension.