|
|
binäre Zahl zusammenfügen |
|
fekal |

Forum-Century
|
 |
Beiträge: 124
|
 |
|
 |
Anmeldedatum: 08.02.11
|
 |
|
 |
Wohnort: Mainz
|
 |
|
 |
Version: 2017b
|
 |
|
|
 |
|
Verfasst am: 04.02.2013, 12:31
Titel: binäre Zahl zusammenfügen
|
 |
Bestes Forum,
ich möchte eine binäre Zahl die in mehrere Spalten eines Arrays aufgeteilt ist (CAN Nachricht) zusammenfügen um deren float ermitteln zu können.
Kennt ihr den Befehl zum zusammenfügen? Google spuckt einfach nichts aus.
Besten Dank
Euer Fekal
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 04.02.2013, 13:41
Titel: Re: binäre Zahl zusammenfügen
|
 |
Hallo fekal,
Bitte definiere den vorhandenen Input mit Class und Dimension. "binäre Zahl die in mehrere Spalten eines Arrays aufgeteilt ist" ist noch nicht eindeutig. Auch "zusammenfügen" und "deren float" ist nicht klar.
Gruß, Jan
|
|
|
fekal |
Themenstarter

Forum-Century
|
 |
Beiträge: 124
|
 |
|
 |
Anmeldedatum: 08.02.11
|
 |
|
 |
Wohnort: Mainz
|
 |
|
 |
Version: 2017b
|
 |
|
|
 |
|
Verfasst am: 04.02.2013, 14:10
Titel:
|
 |
Hallo Jan,
Verzeihung, wenn ich meine Frage nicht richtig formuliert habe.
ich kriege Daten aus einem CAN device gesendet. Diese werden als uint8 (warum auch immer) in ein z.B. [1x6] Array gespeichert.
Ich möchte diese nun einzeln in IEEE 754 (8bit ?) wandeln. Dann habe ich immer noch ein [1x6] Array mit IEEE Werten. Um daraus nun eine Dezimalzahl zu bestimmen muss ich die 6 IEEEs zu einer IEEE zusammenfassen [1x1].
Dann kann ich die [1x1] IEEE zu einer Dezimalzahl wandeln.
Sicher höchst umständlich, aber ich sehe gerade keinen anderen Weg.
Momentan hänge ich noch daran uint8 in bin zu wandeln.
Vielen Dank für deine Zeit
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 04.02.2013, 22:15
Titel:
|
 |
Hallo fekal,
Ich verstehe es immer noch nicht ganz. Aber ich weiß, dass es niemals einfach ist eine Frage zu stellen, solange man noch nicht die Antwort kennt.
Also, Du hast als Input z.B.:
In was möchtest Du dies nun umwandeln? Ein "IEEE 754 (8bit ?)" kenne ich nicht. IEEE 754 ist der Standard, der z.B. die binäre Representation von Floating Point Zahlen mit 2, 4 (single) und 8 (double) Bytes definiert.
Wie sollen nun die vorhandenen 6*8 Byte= 48 Bits in ein wahrscheinlich gewünschtes 64 bit IEEE 754 Double konvertiert werden?
Gruß, Jan
|
|
|
fekal |
Themenstarter

Forum-Century
|
 |
Beiträge: 124
|
 |
|
 |
Anmeldedatum: 08.02.11
|
 |
|
 |
Wohnort: Mainz
|
 |
|
 |
Version: 2017b
|
 |
|
|
 |
|
Verfasst am: 04.02.2013, 22:31
Titel:
|
 |
Ja, das mit der Frage...
genau, mein Input sieht so aus wie du Ihn beschreibst.
Ich würde den dann in bin wandeln, also
128= 10000000
62= 11100
117 =1110101 etc.
die würden dann erst mal so stehen
und sollen dann später so aussehen
daraus ergibt sich dann nach dem IEEE Standart eine Dezimalzahl mit Exponent, Mantisse, Vorzeichen.
Ich merke gerade, dass das wandeln von uint8 in bin nicht so einfach läuft wie ich mir das vorgestellt habe. Aber wenn das geschafft ist, bräuchte ich den Befehl um die einzelnen bin Werte "zusammen zuschieben"
Das ist die Urfrage meines Threads.
Ich hoffe ich hab nicht nur Unsinn erzählt.
Danke Jan für deine Hilfe auch noch um diese Uhrzeit.
Beste Grüße Fekal
|
|
|
fekal |
Themenstarter

Forum-Century
|
 |
Beiträge: 124
|
 |
|
 |
Anmeldedatum: 08.02.11
|
 |
|
 |
Wohnort: Mainz
|
 |
|
 |
Version: 2017b
|
 |
|
|
 |
|
Verfasst am: 20.02.2013, 18:16
Titel:
|
 |
Yhiaaaa , endlich ist die Lösung gefunden:
mit
Hier von uint8 in single. Das geht sicher auch mit typecast(hex (...),'hex'). Aber ich brauchte das Zusammenschieben um aus ankommenden CAN Nachricht einen wert zu bestimmen. Dafür müssen die einzelne Bits zusammen geschoben werden und umgewandelt. Das übernimmt typecast.
Data ist hier eine Array mit mehreren Feldern in denen die Daten ankommen.
Die umgedrehte Reihenfolge wird von Matlab verlangt. Jetzt müsst Ihr nur noch schauen, in welcher Reihenfolge die CAN Nachricht ankommt.
Beste Grüße
Euer fekal
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 21.02.2013, 22:18
Titel:
|
 |
Hallo fekal,
Schön, dass es läuft. Etwas kürzer:
Nach 'hex' kann man nicht per TYPECAST konvertieren, da 'hex' kein Datentyp in Matlab ist, sondern nur eine Konversionsvorschrift um von Strings auf Integerwerte zu kommen.
Zitat: |
Jetzt müsst Ihr nur noch schauen, in welcher Reihenfolge die CAN Nachricht ankommt. |
Müssen wir das? ;-)
Gruß, Jan
|
|
|
fekal |
Themenstarter

Forum-Century
|
 |
Beiträge: 124
|
 |
|
 |
Anmeldedatum: 08.02.11
|
 |
|
 |
Wohnort: Mainz
|
 |
|
 |
Version: 2017b
|
 |
|
|
 |
|
Verfasst am: 22.02.2013, 18:17
Titel:
|
 |
Das sieht ja noch schöner aus.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|