GNU/Linux >> Tutoriales Linux >  >> Linux

fwrite de Matlab:¿Qué sucede con los bytes omitidos?

En este tipo de preguntas, la forma más fácil de averiguarlo suele ser probarlo usted mismo si no es demasiado complejo. Ahora indicó que está usando Linux , es posible que pueda repetir la prueba en su plataforma y ver si los resultados coinciden.

Para Windows plataforma, el skip valor:

  • se implementa antes el primer valor a escribir
  • parece dejar cada byte omitido en el valor 00 (probablemente lo que el sistema operativo asigne como nuevo valor para un archivo)

Ejemplos:

Este código:

fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,1,'short',10,'ieee-le')
fclose(fid)

Produce el siguiente archivo (visto en un editor hexadecimal):

Y si tiene más de un valor para escribir:

fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,[1 2 3],'short',10,'ieee-le')
fclose(fid)

Todavía obtienes 10x 00 valores antes de cada short valor que escribes activamente:

Este fue el caso de un archivo recién creado. Veamos qué pasó con un archivo existente:

%% Let's create a file full of `FF`
FFarray = uint8(ones(36,1)*255) ;
fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,FFarray,'uint8')
fclose(fid)

lo que da:

Ahora usando el mismo código que antes (con el permission establecido en w ):

fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,[1 2 3],'short',10,'ieee-le')
fclose(fid)

Sí, seguimos con lo mismo. Ahora bien, esto es consistente con la documentación de MATLAB para el permiso que indicó:

w => Abrir o crear un nuevo archivo para escribir. Descartar contenidos existentes , si lo hay.

Si simplemente cambia ese permiso a r+ (Abrir archivo para lectura y escritura. ):

fid = fopen(my_filename,'r+','ieee-le','ISO-8859-1');
fwrite(fid,[1 2 3],'short',10,'ieee-le')
fclose(fid)

Solo sobrescribe los valores no omitidos:


Linux
  1. ¿Qué sucede detrás de escena de un contenedor Podman sin raíces?

  2. ¿Qué sucede con la salida de un proceso que ha sido repudiado y ha perdido su terminal?

  3. Linux:¿qué sucede cuando ejecuta Rsync sin una ruta de destino?

  4. ¿Qué sucede si desactivo y desinstalo Plymouth?

  5. ¿Qué sucede cuando se excede el límite de ancho de banda?

¿Qué sucede exactamente cuando ejecuto un archivo en el Shell?

Qué sucede en segundo plano cuando ejecuta el comando "useradd" en Linux

¿Cuál es ese total en la primera línea después de ls -l?

¿Qué sucede si se interrumpe mv?

¿Qué sucede si elimina un archivo de dispositivo?

¿Qué pasa si elimino perdido+encontrado?