txt leer lector importar extraer datos archivos archivo matlab file-io binary

leer - Lee y escribe desde/a un archivo binario en Matlab



lector de archivos matlab (3)

Como escribió Bill the Lizard , puedes usar fread para cargar los datos en un vector. Solo quiero ampliar un poco su respuesta.

Lectura de datos

>> fid=fopen(''data.bin'',''rb'') % opens the file for reading >> A = fread(fid, count, ''int16'') % reads _count_ elements and stores them in A.

Los comandos fopen y fread default a la codificación Little-endian [1] para los enteros. Si su archivo está codificado Big-endian, deberá cambiar el fread a

>> A = fread(fid, count, ''int16'', ''ieee-be'');

Además, si desea leer todo el conjunto de archivos

>> count=inf;

y si quiere leer los datos en la matriz con n columnas, use

>> count=[n inf];

Escribir datos

En cuanto a escribir los datos en un archivo. El comando, fwrite , en la respuesta de Bill escribirá en un archivo binario. Si desea escribir los datos en un archivo de texto, puede usar dlmwrite

>> dlmwrite(''data.csv'',A,'','');

Referencias

[1] http://en.wikipedia.org/wiki/Endianness

Actualizar

  1. El formato de la máquina (IE, ieee-be , ieee-le , vaxd , etc.) de los datos binarios se puede especificar en los comandos fopen o fread en Matlab. Los detalles del formato de máquina admitido se pueden encontrar en la documentación de fopen de Matlab.

  2. El comentario de Scott French a la respuesta de Bill sugiere leer los datos en una variable int16. Para hacer esto uso

    >> A = int16(fread(fid,count,precision,machineFormat));

    donde el recuento es el tamaño / forma de los datos que se leerán, la precisión es el formato de los datos, y el formato de la máquina es la codificación de cada byte.

  3. Ver comandos fseek para moverse por el archivo. Por ejemplo,

    >> fseek(fid,0,''bof'');

    rebobinará el archivo al principio donde bof representa el comienzo del archivo .

Mi conocimiento de matlab es simplemente una necesidad de saber, así que esta es probablemente una pregunta elemental. Sin embargo aquí viene:

Tengo un archivo que contiene datos (enteros de 16 bits) almacenados en formato binario. ¿Cómo lo leo en un vector / matriz en matlab? ¿Cómo escribo esta información en un archivo en matlab? ¿Hay alguna modificación inteligente para aumentar la velocidad de rendimiento al leer / escribir una gran cantidad de datos (gigabytes)?



Suponiendo que sepa cuántos valores ha almacenado en el archivo, puede hacer algo como esto para leer los datos en una matriz.

fid = fopen(''data.bin'',''rb'') A = fread(fid, count, ''int16'')

Para escribir datos en un archivo, haga esto:

fid = fopen(''data.bin'',''w'') count = fwrite(fid, A, ''int16'')

La función fwrite devuelve la cantidad de elementos (no bytes) escritos en el archivo.

En lo que respecta al ajuste del rendimiento, puede leer los datos en fragmentos para usar solo todo lo que necesite procesar. Esto es lo mismo en cualquier idioma, y ​​no hay forma de acelerarlo que sea específico de Matlab.