WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

4 Bytes wieder in eine REAL wandeln

 

Nyquist
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 19.11.07
Wohnort: Laupheim
Version: ---
     Beitrag Verfasst am: 03.12.2007, 15:34     Titel: 4 Bytes wieder in eine REAL wandeln
  Antworten mit Zitat      
Ich bins nochmal

ich habe mit einem Programm eine REAL Zahl(32-Bit) zerstückelt in 4 mal Byte und erhalte in Matlab jetzt ein Feld mit 4 Zahlen.

Kann mir von euch jemand sagen wie ich die 4 Bytes zu einer Real Zahl zusammenbekomme

bsp. Zahl 1000.20

dann kommt in Matlab an 205 12 122 68
jetzt sollte irgendwie die obige Zahl wieder rauskommen

Vielen Dank schonmal
_________________

Mit freundlcihem Gruß
Nyquist
Private Nachricht senden Benutzer-Profile anzeigen


keloid
Forum-Century

Forum-Century


Beiträge: 216
Anmeldedatum: 04.10.07
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 03.12.2007, 16:23     Titel:
  Antworten mit Zitat      
Wenn Du noch posten könntest, wie die Zahl in diesem Programm zerlegt wird, wäre es vielleicht einfacher.

So spontan hab ich leider keine Vermutung.

Edit: Schau mal auf http://www.tfh-berlin.de/~kempfer/skript_c/Kap04.html, vielleicht hilft Dir das weiter.

Ich vermute, dass "REAL" nichts anderes als ein "float" unter anderen Programmiersprachen wie z.B. C ist.

Dann müsstest Du die vier Bytes wieder in Binärdarstellung umwandeln, aneinanderhängen und anhand der im Link dargestellten Weise separieren.
1. Bit für Vorzeichen (1 = negativ, 0 = positiv)
2. bis 9. Bit für den Exponenten (2^(E-127))
10. bis 32. Bit für die Mantisse, also 1+ (10.Bit)*1/2^1 + (11.Bit)*1/2^2 + ... + (32.Bit)*1/2^23.
Private Nachricht senden Benutzer-Profile anzeigen
 
Nyquist
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 19.11.07
Wohnort: Laupheim
Version: ---
     Beitrag Verfasst am: 03.12.2007, 16:46     Titel:
  Antworten mit Zitat      
das mach ich mit CoDeSys

Code:

Datenverarbeitung1.aMatlab[0]:='1000.20';
            Drehzahl:=STRING_TO_REAL(Datenverarbeitung1.aMatlab[0]);
            Drehzahl;
            pSource := ADR(Drehzahl);
            m_pDciPLC^.pMatlabBuffer[0] :=pSource^;
            pSource:=pSource+1;
            m_pDciPLC^.pMatlabBuffer[1] :=pSource^;
            pSource:=pSource+1;
            m_pDciPLC^.pMatlabBuffer[2] :=pSource^;
            pSource:=pSource+1;
            m_pDciPLC^.pMatlabBuffer[3] :=pSource^;
            m_pDciPLC^.pMatlabBuffer[4] :=0;
 


pMatlabBuffer geht dann zu Matlab

und wie kann ich diese vier Zahlen in Matlab als Binär uahl anzeigen lassen bzw. alle zusammenhängen das ist mir noch ein bisschen unklar.

Vielen Dank
_________________

Mit freundlcihem Gruß
Nyquist
Private Nachricht senden Benutzer-Profile anzeigen
 
Christoph

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.12.2007, 18:47     Titel:
  Antworten mit Zitat      
Versuch mal

typecast(uint8([205 12 122 68]), 'single')
 
Nyquist
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 19.11.07
Wohnort: Laupheim
Version: ---
     Beitrag Verfasst am: 04.12.2007, 08:51     Titel:
  Antworten mit Zitat      
Danke hat super funktioniert
Very Happy
_________________

Mit freundlcihem Gruß
Nyquist
Private Nachricht senden Benutzer-Profile anzeigen
 
Nyquist
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 19.11.07
Wohnort: Laupheim
Version: ---
     Beitrag Verfasst am: 04.12.2007, 16:24     Titel:
  Antworten mit Zitat      
Hallo christoph


ich hab festgestellt das die typecast funktion ab einer zerstückelten Real die größer als 1024 nicht mehr funktioniert.

ist die begrenzt???

ich sollte nämlich zahlen im ganzen realbereich (32Bit) wieder wandeln können

Danke
_________________

Mit freundlcihem Gruß
Nyquist
Private Nachricht senden Benutzer-Profile anzeigen
 
Christoph

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.12.2007, 17:45     Titel:
  Antworten mit Zitat      
Das kann eigentlich nicht an der typecast-Funktion liegen. Vielleicht liegen deine Real-Werte doch nicht imselben Binärformat vor wie Matlab das gerne hätte. Kannst du mal ein konkretes Beispiel posten? Also die Ausgangszahl und die 4 Bytes, die du bekommst?
 
keloid
Forum-Century

Forum-Century


Beiträge: 216
Anmeldedatum: 04.10.07
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 05.12.2007, 09:07     Titel:
  Antworten mit Zitat      
Wichtig ist, dass das letzte Byte (im bisherigen Beispiel die 68) nicht 255 und nicht 127 ist. Zumindest erzeugt Matlab dann bei mir ein NaN.
Ansonsten kann ich aber Zahlen zwischen -1.7e38 und 1.7e38 erzeugen, scheint also wirklich nicht an typecast zu liegen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Nyquist
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 19.11.07
Wohnort: Laupheim
Version: ---
     Beitrag Verfasst am: 05.12.2007, 11:13     Titel:
  Antworten mit Zitat      
hallo Jungs,

ich hab jetzt auch viel getestet. Also es liegt definitiv nicht an Matlab sondern an meiner Schnittstelle die manchmal die empfangenen ASCII werte falsch interpretiert

Trotzdem danke für eure Mühe

Very Happy
_________________

Mit freundlcihem Gruß
Nyquist
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.