Diese Werte möchte ich nun, jeden Einzelnen, in Hexadezimal Code wandeln. Dazu wollte ich eigentlich die "num2hex" Funktion nutzen, aber die gibt für eine 1 ja 3f800000 (bei single) aus. Das ist meiner Meinung nach falsch. Für eine 1 sollte man auch 00000001 raus bekommen. Kann mir jemand erklären warum die num2hex Funktion die falschen Werte ausgibt? Es steht ja sogar so in der Beschreibung, aber ich verstehe nicht was das soll.
Nun habe ich mir gedacht, dann nutze ich halt dec2hex, aber da bekomme ich immer eine Fehlermeldung.
??? Error using ==> dec2hex at 27
First argument must contain non-negative integers.
Kann ich dec2hex irgendwie nutzen auch mit negativen Zahlen und Kommazahlen?
dec2hex ist nur für Natürliche Positive Zahlen gedacht.
Wenn du es nutzen willst muss du deine Zahlen irgendwie auf Natürliche Positive Zahlen normieren.
danke für eure Antworten. Ich habe jetzt auch eine Lösung gefunden, wie ich die richtigen hex Werte bekomme. Diese spezielle Form nach IEEE 754 war für mich nämlich nicht zu gebrauchen.
Nun habe ich aber noch ein kleines anderes Problem. Ich möchte von den hex Werten die in einem Vektor stehen jeweils einen festen hex Wert abziehen, wenn ich das mache bekomme ich aber immer eine Berechnung die dann dezimal Werte ausgibt. Kann mir da jemand helfen?
wie hast du es denn jetzt gelöst? D.h. wie transformierst du denn die Daten jetzt. Richtig und Falsch liegt da wohl im Auge des Betrachters.
Die Hex Zahlen sind ja nur String arrays. D.h. die musst du nochmal zum Beispiel mit hex2dex einzeln zurückwandeln um die dann voneinander abzuziehen. Z.B. so:
also ich addiere zu meinen Sinus Werten einfach 1 und multipliziere sie auch noch mit 10000, dann schneide ich die Nachkomma-Stellen ab. So bekomme ich nur positive integer Werte und kann dann diese Werte ja ganz einfach mit dec2hex umwandeln. Jetzt wollte ich die 10000 aber wieder abziehen damit ich meine eigentlichen Werte wieder bekomme.
Dein Vorschlag erst wieder alles in dezimal umzurechnen funktioniert dann ja leider nicht, weil sonst würde er ja wieder Kommazahlen umrechnen müssen und das war ja das Problem von Anfang an.
Hier mal mein kompletter Code zum besseren Verständnis:
Gibt es denn wirklich keine Möglichkeit in Matlab im hexadezimal System zu rechnen? Ich arbeite noch nicht sehr lange mit Matlab und habe deswegen so gut wie keine Erfahrungen, aber ich dachte dass es sowas schon können sollte.
So ungefähr muss du dann für dich eigene Funktion schreiben,
wenn du möchtest, dass Operationen direkt an HEX durchgeführt werden.
Und wie du siehst es läuft kein Weg über hex2dec oder dec2hex vorbei
Vielen Dank für deine Antwort, ich muss allerdings zugeben dass ich nicht sehr viel damit anfangen kann. Ich habe den Code mal in ein m File kopiert, aber er wird nicht ausgeführt, hängt schon an der ersten Funktion. Ich denke mal du meinst mit "op1" und "op2" die Operanden, oder? Wenn ich die gleich zu Anfang wieder in dec umwandle bekomme ich am Ende ja doch auch wieder negative Werte und kann sie nicht wieder in hex umrechnen, oder? Ich versteh den Code den du geschrieben hast leider nicht wirklich, also auch nicht was er machen soll. Sorry.
2) Negative Zahlen werden abgefangen,
muss aber aufpassen, dass diese in max Bereich liegen(zugrunde habe ich Idee der Integer Darstellung aus C )
z.B '0' Minus '1' ergibt 'FFFFFFFE'
Aufruf:
Code:
res = hexfun('minus', '270F', '2700')
res = hexfun('plus', '270F', '2700')
res = hexfun('times', '16', '2')
res = hexfun('divide', '16', '2')
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
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.