INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dieses Thema hat akzeptierte Lösungen:

An alle Array-Profis: lsb in msb umwandeln



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

20.05.2011, 22:52
Beitrag #1

YYYs Offline
LVF-Grünschnabel
*


Beiträge: 29
Registriert seit: May 2011

LabVIEW 2011
2011
DE


Deutschland
An alle Array-Profis: lsb in msb umwandeln
Guten Abend,

ich sitze jetzt schon 2 Stunden (eher 3 oder 4, aber ich will ja nicht so dumm dastehen Wink ) an einem Problem. Ich habe einen Bitstrom der nach lsb, least significant bit (niederwertiges bit zuerst), geordnet ist.

Bei 2 Bit pro Symbol sieht das so z.B. aus:

LSB Fall:

2 1 3 0 -> 01 10 11 00

Was ich programmieren möchte ist die Umwandlung in msb, most significant bit (höherwertiges bit zuerst):

01 10 11 00 -> 10 01 11 00

Schritt 1:
Mein Gedanke war es den Bit-Strom in Symbole zu trennen und in einem Array zu schreiben:

01 10 11 00 -> 01
10
11
00

Schritt 2:
Danach wollte ich beide Spalten tauschen:

01 -> 10
10 01
11 11
00 00

Schritt 3:
Jetzt jede Zeile nacheinander einem Array einfügen:

10 -> 10 01 11 00 = MSB
01
11
00

1. Problem:
Mein Problem tritt bei Schritt 2 auf. Um beide Spalten vertauschen zu können, habe ich die Funktion "Aus Array löschen" genutzt. Dadurch erhalte ich 2 Arrays (2 Spalten = 2 Arrays). Ein Array ist 1-dimensional und das zweite 2-dimensional. Leider schaffe ich es nicht das 2-dimensionale Array in ein 1-dimensionales Array zu überführen.

2. Problem:
Sollte ich Problem 1 gelöst haben, würde ich nicht wissen wie am elegantesten ich Schritt 3 bewerkstelligen kann.

Einen weiteren Lösungsansatz hatte ich noch gefunden, der alles verkürzt. Durch die Funktion "1D-Arrays überführen", wollte ich mit Hilfe eines Schieberegister und dem Teil-Array (2-Bit Symbol) aus "Array Subset / Teil-Array" die Symbole nacheinander setzen. Ich wäre dann von meiner Theorie her gleich beim MSB angelangt.
Nur leider kommt beim Ausgang von "1D-Arrays überführen" nichts raus.

Ich hoffe ihr könnt mir wieder helfen.

Vielen Dank schon mal!


Angehängte Datei(en)
2009 .vi  LSB_MSB_5.vi (Größe: 14,03 KB / Downloads: 246)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
21.05.2011, 06:16
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: An alle Array-Profis: lsb in msb umwandeln

Akzeptierte Lösung

Wenn du wirklich immer nur die Reihenfolge von 2 "Bits" tauschen willst (ungewöhnlich!), dann z.B. so:
   
Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.05.2011, 06:28
Beitrag #3

YYYs Offline
LVF-Grünschnabel
*


Beiträge: 29
Registriert seit: May 2011

LabVIEW 2011
2011
DE


Deutschland
RE: An alle Array-Profis: lsb in msb umwandeln
Wow, ich bin begeistert! Wie einfach es doch sein kann.

Eine Frage bleibt für mich noch. Warum funktioniert mein 2. Lösungsansatz nicht? Er beruht ja auch auf der Funktion Interleave 1D-Arrays/1D-Arrays überführen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.05.2011, 10:47
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: An alle Array-Profis: lsb in msb umwandeln
(21.05.2011 06:28 )YYYs schrieb:  Eine Frage bleibt für mich noch. Warum funktioniert mein 2. Lösungsansatz nicht?
Weil du dir die Hilfe von Interleave-Array nicht richtig durchgelesen hast? (Strg-H ist eine wichtige Tastenkombination in LabVIEW)

1) Sinnvollerweise sollten die Eingangsarrays dieselbe Größe haben. In jedem Schritt ist ein Array leer, somit ist auch immer das Ausgangsarray leer.
2) Interleave Array dreht nichts um.
3) Und selbst, wenn die Eingangsarrays dieselbe Größe hätten, es würde dir so, wie du es einsetzt, nichts nützen. Denn es wird ganz anders zusammengesetzt, wie du das vielleicht gedacht hast. Bsp: Eingangsarray1 = [1,2,3], Eingangsarray2=[4,5,6] -> Ausgangsarray = [1,4,2,5,3,6].

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Fehlermeldung 91 bei 2D Array umwandeln zu Variant und wieder zurück Tobzn 4 4.914 31.03.2018 21:05
Letzter Beitrag: Tobzn
  STL-Datei umwandeln in 2D-Array ahebauer 2 4.452 21.12.2017 10:45
Letzter Beitrag: ahebauer
  2d array nach kriterium in 3d umwandeln tobi45f 4 4.259 22.04.2015 10:26
Letzter Beitrag: tobi45f
  Double in 1D Array umwandeln? BunterLoewe 33 27.046 10.02.2014 23:49
Letzter Beitrag: BunterLoewe
  1D-Array in 2D-Array mit Clusterarray umwandeln Hasenfuss 5 6.381 04.06.2013 20:03
Letzter Beitrag: GerdW
  2D Array in 1D Arrays umwandeln bierber 6 22.498 31.05.2012 13:41
Letzter Beitrag: f.kampus

Gehe zu: