LabVIEWForum.de - Kleines Array in großes Array umwandeln

LabVIEWForum.de

Normale Version: Kleines Array in großes Array umwandeln
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Liebes Forum,

ich suche momentan nach einer Möglichkeit, wie man ein kleines Array aus Zahlenwerten (50x50) in ein beliebig großes Array aus Zahlenwerten konvertiert.
Beispielsweise wenn in der 1. Zelle des kleinen Arrays eine 64 steht, würden in allen Zellen a<sub>ij</sub> , wobei i,j von 0 bis 9 laufen auch eine 64 stehen.
Ist soetwas möglich - mit einfachen Mitteln?

Es kommt vor allem auch auf Geschwindigkeit an, da dies nur ein winziger Teil eines riesigen Projektes ist...

Vielen Dank schon mal im Voraus für sachdienliche Hinweise zur Ergreifung der flüchtigen Lösung,

Jan
Hallo Jan

' schrieb:Beispielsweise wenn in der 1. Zelle des kleinen Arrays eine 64 steht, würden in allen Zellen a<sub>ij</sub> , wobei i,j von 0 bis 9 laufen auch eine 64 stehen.
Habe ich richtig verstanden, dass du das hier haben möchtest.

Nehmen wir mal als Beispiel ein kleines 3x3-Array:

Code:
1 2 3
4 5 6
7 8 9
Wenn du das z.B. auf 5x5 vergrößert haben möchtest, sollen alle neuen Zellen mit dem ersten Wert des kleinen Arrays gefüllt werden?

Code:
1 2 3 1 1
4 5 6 1 1
7 8 9 1 1
1 1 1 1 1
1 1 1 1 1
Ist das richtig?

Mir wäre so eine Funktion nicht bekannt und ich wüsste auch nicht, wo man so etwas benötigt.

Du könntest aber her gehen und ein neues, großes Array über "Initialize Array" mit dem einen Wert initialisieren und dann über "Replace Subset" dein kleines 50x50-Array dort einbringen. Ob das mit einem 2-dimensionalen Teil-Array ohne Umweg funktioniert, weiß ich grad nicht.
Sonst könntest du das auch so lösen:

[attachment=29236]Lv85_img
[attachment=29237]

Evtl. kannst du auch mehrere Lösungen vergleichen, um die schnellste zu finden.
Einen Kopiervorgang im Speicher wirst du immer haben.

Was du auf alle Fälle vermeiden musst ist eine Array-Vergrößerung innerhalb einer Schleife ("Build Array", "Insert Into Array").
Sonst wird in jedem Schleifendurchlauf Speicher reserviert, was richtig langsam ist.
Hallo,

schöner geht das alle malSmile
[attachment=28376]
Immerhin ist das Vorgehen das gleiche (Array initialisieren und dann hinein kopieren). Big Grin

Deins ist aber viel übersichtlicher. Ich muss mir die Array-Funktionen mal genauer ansehen. Damit kann man schon viel anstellen. Wenn auch nicht alles direkt, wie man an der hier vorliegenden Aufgabenstellung sieht.
Wobei es - wie so oft - hier zig Lösungen gibt. Schön in ein SubVI verpackt stört meine Lösung auch nicht so sehr, wobei deine etwas schneller sein könnte. *g*
Hallo ihr beiden,

ich hatte schon etwas Angst, dass meine Formulierung Verwirrung stiften könnte.
Tut mir leid deswegen, ich hätte ein ausführlicheres Beispiel geben sollen:

Aus
1 2
3 4

sollte werden:
1 1 2 2
1 1 2 2
3 3 4 4
3 3 4 4

Quasi so eine Art "Aufweitung der Matrix"

Die Idee die dahinter steckt ist folgende:
(LV9) [attachment=29247]

Ich will ein kleines Kontroll-Array vorgeben (9 Einträge + Rand) daraus ein "gesmoothtes" großes Array erhalten mit weichen Übergängen (Dafür auch der bicubic spline).
Die einzelnen Array Einträge aus dem großen Array übersetze ich danach 1:1 in Pixelwerte eines Bildes (einfach nur anders speichern).

Allerdings hat meine Methode bis jetzt einen Haken, die Dimensionen des großen Arrays kann ich nicht beliebig einstellen, sondern hängen stark von der Iterationstiefe und von der Größe des Kontroll-Arrays ab. Die Lösung wäre jetzt, wenn ich das große Array beliebig "resizen" könnte.

Hat dazu jemand ne Idee?Smile

Grüße,
Jan
Wie gefallen dir meine Ansätze?
Lv09_img2[attachment=29255]
Lv09_img2[attachment=29256]
Beides geht auch mit nicht-quadratischen Matrizen!

Grüße,
Totti
Referenz-URLs