2017-12-11 3 views
2

Ich möchte das Byte-Array einer .mat-Datei einer bestimmten Matrix erhalten. Wie kann ich das machen?Wie wird der Inhalt von .mat-Dateien in MATLAB gespeichert?

kann ich eine Matrix auf der Festplatte durch diesen Befehl speichern:

save('a.mat', 'a') 

Nun, ich mag nicht die .mat Datei auf der Festplatte speichern. Stattdessen möchte ich es im Speicher, um es über ein Netzwerk zu senden.

+0

meinst du 'laden ('a.mat')'? – Haz

Antwort

0

Ich glaube nicht, dass das möglich ist. Aber Sie könnten die MAT-Datei in ein temporäres Verzeichnis schreiben (siehe tempdir) und dann als eine Binärdatei öffnen, ihren Inhalt im Speicher als ein uint8-Array oder etwas ähnliches lesen.

1

Nun ja ... wenn Sie den binären Inhalt eines mat Datei über ein Netzwerk gesendet werden soll, haben Sie keine andere Wahl, als Sie wie folgt vorgehen:

  1. Ihre Daten auf der Festplatte in mat Format speichern:

    save('a.mat','a');

  2. Lesen Sie die mat Datei als Byte-Array gespeichert:

    fid = fopen('a.mat','r'); data = fread(fid);

  3. die binären Daten über das Netzwerk senden:

    send_data(data);

Wenn Sie einen sehr viel aufwendiger Ansatz gehen wollen (ich es übrigens nicht empfehlen), wie in eine mat Datei zu graben, um Daten zu extrahieren oder Ihre eigene mat Datei zur Laufzeit zu erstellen, this is a good starting point.

4

Sie könnten ein paar undocumented functions (intern verwendet von save und load) für die Serialisierung/Deserialisierung Daten verwenden. Dies würde ermöglicht es Ihnen, Ihre Matrix a in eine Byte-Stream auf die gleiche Weise zu kodieren save würden, wenn es in einer .mat Datei zu speichern:

byteStream = getByteStreamFromArray(a); 

Sie können dann diese Byte-Stream-Daten über ein Netzwerk senden und dekodieren es auf dem Empfangsende wie folgt:

a = getArrayFromByteStream(byteStream); 
Verwandte Themen