Char (nicht ascii) in Matlab

8

Ich habe drei Zeichen (größer als 127) und muss es in eine Binärdatei schreiben.
Aus irgendeinem Grund neigen MATLAB und PHP / Python dazu, unterschiedliche Zeichen zu schreiben.
Für Python habe ich:

%Vor%

Für MATLAB habe ich:

%Vor%

Wenn ich diese beiden Dateien vergleiche, sind sie anders. (mit dem Befehl diff und / oder cmp).
Mehr noch, wenn ich das tue

%Vor%

Beide Ausgänge sind unterschiedlich. Ich möchte meinen MATLAB-Code wie Python machen. Was ist falsch mit MATLAB-Code?

    
user1983388 17.01.2013, 09:36
quelle

2 Antworten

4

Sie versuchen, erweiterte ASCII-Zeichen anzuzeigen, d. h. Symbole mit einer ASCII-Nummer größer als 128. MATLAB verwendet intern kein erweitertes ASCII, stattdessen wird 16-Bit-Unicode verwendet.

Wenn Sie die gleichen Werte wie im Python-Skript schreiben möchten, verwenden Sie native2unicode um die gewünschten Zeichen zu erhalten. Zum Beispiel gibt native2unicode(136) ^ zurück.

    
Eitan T 17.01.2013, 10:05
quelle
4

Die Tatsache, dass die beiden Dateien unterschiedlich sind, erscheint offensichtlich; chr(134) unterscheidet sich offensichtlich von char(136) :)

In Matlab entsprechen nur die ersten 127 Zeichen (nicht erweitertem) ASCII; alles danach ist Unicode16.

In Python entsprechen die ersten 255 Zeichen (erweitertem) ASCII (verwenden Sie unichr() für Unicode).

Unicode 0x88 ist jedoch dasselbe wie erweitertes ASCII 0x88 (wie die meisten anderen). Der Grund, warum Matlab es nicht korrekt anzeigt, liegt an der Tatsache, dass das Matlab-Befehlsfenster Unicode standardmäßig nicht sehr gut behandelt, während Python (das in einem Terminal läuft) wahrscheinlich einen besseren Job macht.

Versuchen Sie, die Schriftart im Matlab-Befehlsfenster zu ändern, oder starten Sie Matlab in einem Terminal und geben Sie das 0x88-Zeichen aus; Es sollte dasselbe sein.

In jedem Fall sollte die Ausgabe der Zeichen in die Datei keinen Unterschied ergeben; es ist nur ein display Problem.

    
Rody Oldenhuis 17.01.2013 10:08
quelle

Tags und Links