Ich habe einen Uint8 Wert als A = [4, 8, 16, 32];
deklariert und ich warf auf den Wert B = typecast(uint8(A), 'uint16')
, aber die Antwort ist 2052 8208
Ich wäre sehr dankbar, wenn jemand mir helfen könnte, den Grund dahinter zu verstehen.Warum sind MATLAB uint8 Wert und Uint16 Werte unterschiedlich
Antwort
MATLABs Typumwandlungsfunktion konvertiert den Datentyp, ohne die zugrunde liegenden Daten zu ändern. Mit anderen Worten, es ändert die zugrunde liegende Speicherdarstellung der Datenstruktur nicht und behandelt sie einfach als ein uint16 anstelle von uint8.
In Ihrem Fall möchten Sie nach dem Casting die Originalwerte Ihrer Daten beibehalten. Daher möchten Sie, dass MATLAB die Speicherrepräsentation der Datenstruktur ändert. Es gibt zwei Möglichkeiten, diese Art von Gießen auszuführen:
-verwenden Umsetzungsfunktion
B = cast(uint8(A), 'uint16');
einen direkten Aufruf -verwenden Funktion Uint16:
B = uint16(A);
Ergebnis:
B =
4 8 16 32
Sie erwarten wahrscheinlich, dass Matlab Ihren uint8
Wert eingibt s nur in uint16
Variablen. Dies ist nicht, was die Typumwandlungsfunktion tut. Es wird die Anzahl der Bytes von der Eingabe zur Ausgabe beibehalten. In Ihrem Beispiel werden also die Bit-Darstellung von 4 und 8 in eine uint16
-Nummer und äquivalent auch 16 und 32 zusammengefügt.
Also ist die binäre Darstellung von 4 00000100 und von 8 ist 00001000 und zusammengeführt (zu einer 16-Bit-Nummer)) Sie geben 0000100000000100, das ist 2052.
- 1. Numpy aus string (Differenz von uint8 und uint16) [Die Kombination von zwei uint8 Werte zu einem uint16 Wert]
- 2. Matlab zu Arbeitsbereich und RMS Wert unterschiedlich
- 3. warum die background_color und die farbe in kivy unterschiedlich sind?
- 4. UINT16-Wert scheint beim Drucken "rückwärts" zu sein
- 5. Warum sind diese Linq-Ausgaben unterschiedlich?
- 6. HQL Query Equivalence: Warum sind sie unterschiedlich
- 7. Windows Scancodes für F11 und F12 sind unterschiedlich. Warum?
- 8. Warum sind die Ergebnisse von map() und Listenverständnis unterschiedlich?
- 9. Warum OpenCV Versionen unterschiedlich sind in dpkg und pkg-config
- 10. String Wert UnsafePointer <UInt8> Funktionsparameter Verhalten
- 11. In C# sind Dezimal und Dezimal unterschiedlich?
- 12. `endIndex` und` count` einer Zeichenkette sind unterschiedlich
- 13. uint8 zeigt seltsame Zeichen
- 14. Sind liest und schreibt für uint8 in Golang Atom?
- 15. Was ist der Unterschied zwischen UInt8 und uint8_t
- 16. Warum ist der eingestellte und tatsächliche Wert von PermSize und MaxPermSize unterschiedlich?
- 17. Warum vergleichen diese dtypes gleich, aber unterschiedlich?
- 18. Sind diese Regex-Muster unterschiedlich?
- 19. wie die Zeit unterschiedlich in Matlab berechnen
- 20. Ich möchte wissen, warum die beiden Ausgänge unterschiedlich sind
- 21. Warum vergleicht NSString: NSOrderedSame zurückgeben, wenn die Zeichenfolgen unterschiedlich sind?
- 22. Was bewirkt, dass int8_t und int_fast8_t unterschiedlich sind?
- 23. update Ergebnisse in postgresql 8.4 und 9.5 sind unterschiedlich
- 24. Warum arbeiten der erste und der dritte Druck so unterschiedlich?
- 25. Problem, wenn send und recv Puffergröße sind unterschiedlich
- 26. Lassen Sie Matlab eine Warnung ausgeben, wenn Sie ein Double in ein Uint8 konvertieren und umgekehrt?
- 27. Matlab RGB-Werte Dilemma
- 28. Seltsame Typumwandlung beim Hinzufügen von int zu uint8?
- 29. Warum sind logische Verknüpfungen und boolesche Werte in Coq getrennt?
- 30. AngularUI - UI Bootstrap Datepicker Datum auf Sicht und im Wert sind unterschiedlich