2016-04-12 7 views

Antwort

2

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 
3

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.

Verwandte Themen