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: