Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Exportar a archivos de datos de texto con e/s de bajo nivel

Escribir en archivos de texto mediantefprintf

En este ejemplo se muestra cómo crear archivos de texto, incluidas combinaciones de datos numéricos y de caracteres y archivos no rectangulares, mediante la función de bajo nivel.fprintf

se basa en su homónimo en la biblioteca de C estándar de ANSI®.fprintf Sin embargo, MATLAB® utiliza una versión vectorizada de la que escribe datos de una matriz con bucles de control mínimos.fprintf

Abra el archivo

Cree una matriz de muestra con dos filas.y

x = 0:0.1:1; y = [x; exp(x)];

Abra un archivo para escribir y obtener un identificador de archivo,.fopenfileID De forma predeterminada, abre un archivo para acceso de solo lectura, por lo que debe especificar el permiso para escribir o anexar, como o.fopen'w''a'

fileID = fopen('exptable.txt','w');

Escriba en el archivo

Escriba un título, seguido de una línea en blanco con la función.fprintf Para desplazarse a una nueva línea del archivo, utilice.'\n'

fprintf(fileID, 'Exponential Function\n\n');

Nota: Algunos editores de texto de Windows®, incluido Microsoft® Notepad, requieren una secuencia de caracteres de nueva línea en lugar de.'\r\n''\n' Sin embargo, es suficiente para Microsoft Word o WordPad.'\n'

Escriba los valores en el orden de las columnas para que aparezcan dos valores en cada fila del archivo. convierte los números o caracteres de las entradas de la matriz en texto según sus especificaciones.yfprintf Especifique para imprimir números de punto flotante.'%f'

fprintf(fileID,'%f %f\n',y);

Otros especificadores de conversión comunes incluyen para números enteros o para caracteres. vuelve a aplicar la información de conversión para desplazarse por todos los valores de las matrices de entrada en orden de columnas.'%d''%s'fprintf

Cierre el archivo cuando termine de escribir.fclose

fclose(fileID);

Ver el contenido del archivo mediante la función.type

type exptable.txt
Exponential Function  0.000000 1.000000 0.100000 1.105171 0.200000 1.221403 0.300000 1.349859 0.400000 1.491825 0.500000 1.648721 0.600000 1.822119 0.700000 2.013753 0.800000 2.225541 0.900000 2.459603 1.000000 2.718282 

Opciones de formato adicionales

Opcionalmente, incluya información adicional en la llamada para describir el ancho de campo, la precisión o el orden de los valores de salida.fprintf Por ejemplo, especifique el ancho del campo y el número de dígitos a la derecha del punto decimal en la tabla exponencial.

fileID = fopen('exptable_new.txt', 'w');  fprintf(fileID,'Exponential Function\n\n'); fprintf(fileID,'%6.2f %12.8f\n', y);  fclose(fileID);

Ver el contenido del archivo.

type exptable_new.txt
Exponential Function    0.00   1.00000000   0.10   1.10517092   0.20   1.22140276   0.30   1.34985881   0.40   1.49182470   0.50   1.64872127   0.60   1.82211880   0.70   2.01375271   0.80   2.22554093   0.90   2.45960311   1.00   2.71828183 

Anexar a o sobrescribir archivos de texto existentes

En este ejemplo se muestra cómo anexar valores a un archivo de texto existente, volver a escribir todo el archivo y sobrescribir solo una parte del archivo.

De forma predeterminada, abre archivos con acceso de lectura.fopen Para cambiar el tipo de acceso a archivos, use el especificador de permiso en la llamada a.fopen Los especificadores de permisos posibles incluyen:

  • para leer'r'

  • para escribir, descartando cualquier contenido existente del archivo'w'

  • para anexar al final de un archivo existente'a'

Para abrir un archivo tanto para leer como para escribir o anexar, adjunte un signo más al permiso, como o.'w+''a+' Si abre un archivo para lectura y escritura, debe llamar o entre operaciones de lectura y escritura.fseekfrewind

Anexar a archivo de texto existente

Cree un archivo llamado.changing.txt

fileID = fopen('changing.txt','w'); fmt = '%5d %5d %5d %5d\n'; fprintf(fileID,fmt, magic(4)); fclose(fileID);

El contenido actual de son:changing.txt

16 5 9 4

2 11 7 14

3 10 6 15

13 8 12 1

Abra el archivo con permiso para anexar.

fileID = fopen('changing.txt','a');

Escriba los valores al final del archivo:[55 55 55 55]

fprintf(fileID,fmt,[55 55 55 55]);

Cierre el archivo.

fclose(fileID);

Ver el contenido del archivo mediante la función.type

type changing.txt
   16     5     9     4     2    11     7    14     3    10     6    15    13     8    12     1    55    55    55    55 

Sobrescribir archivo de texto completo

Un archivo de texto consta de un conjunto contiguo de caracteres, incluidos los caracteres de nueva línea. Para reemplazar una línea del archivo con un número diferente de caracteres, debe volver a escribir la línea que desea cambiar y todas las líneas subsiguientes en el archivo.

Reemplace la primera línea de texto descriptivo más largo.changing.txt Dado que el cambio se aplica a la primera línea, vuelva a escribir todo el archivo.

replaceLine = 1; numLines = 5; newText = 'This file originally contained a magic square';  fileID = fopen('changing.txt','r'); mydata = cell(1, numLines); for k = 1:numLines    mydata{k} = fgetl(fileID); end fclose(fileID);  mydata{replaceLine} = newText;  fileID = fopen('changing.txt','w'); fprintf(fileID,'%s\n',mydata{:}); fclose(fileID);

Ver el contenido del archivo.

type changing.txt
This file originally contained a magic square     2    11     7    14     3    10     6    15    13     8    12     1    55    55    55    55 

Sobrescribir parte del archivo de texto

Reemplace la tercera línea de Changing. txt con.[33 33 33 33] Si desea reemplazar una parte de un archivo de texto con exactamente el mismo número de caracteres, no necesita volver a escribir ninguna otra línea en el archivo.

replaceLine = 3; myformat = '%5d %5d %5d %5d\n'; newData = [33 33 33 33];

Mueva el marcador de posición del archivo a la línea correcta.

fileID = fopen('changing.txt','r+'); for k=1:(replaceLine-1);    fgetl(fileID); end

Llame entre operaciones de lectura y escritura.fseek

fseek(fileID,0,'cof');  fprintf(fileID, myformat, newData); fclose(fileID);

Ver el contenido del archivo.

type changing.txt
This file originally contained a magic square     2    11     7    14    33    33    33    33    13     8    12     1    55    55    55    55 

Abrir archivos con diferentes codificaciones de caracteres

admiten los caracteres requeridos para alfabetos concretos, como los de idiomas japoneses o europeos.Encoding schemes Los esquemas de codificación comunes incluyen US-ASCII o UTF-8.

Si no especifica un esquema de codificación, abre los archivos para su procesamiento utilizando la codificación predeterminada para el sistema.fopen Para determinar el valor predeterminado, abra un archivo y vuelva a llamar con la sintaxis:fopen

[filename, permission, machineformat, encoding] = fopen(fid);

Si especifica un esquema de codificación al abrir un archivo, las siguientes funciones aplican ese esquema:,,,, y.fscanffprintffgetlfgetsfreadfwrite

Para obtener una lista completa de los esquemas de codificación admitidos y la sintaxis para especificar la codificación, consulte la página de referencia.fopen

Consulte también

| |

Temas relacionados