In questo tipo di domande, il modo più semplice per scoprirlo è di solito provarlo tu stesso se non è troppo complesso. Ora hai indicato che stai usando Linux , potresti ripetere il test sulla tua piattaforma e vedere se i risultati corrispondono.
Per Windows piattaforma, il skip
valore:
- è implementato prima il primo valore da scrivere
- sembra lasciare ogni byte saltato al valore
00
(probabilmente ciò che il sistema operativo assegna come nuovo valore per un file)
Esempi:
Questo codice:
fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,1,'short',10,'ieee-le')
fclose(fid)
Produce il seguente file (visto in un editor esadecimale):
E se hai più di un valore da scrivere:
fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,[1 2 3],'short',10,'ieee-le')
fclose(fid)
Ottieni ancora 10 volte 00
valori prima di ogni short
valore che scrivi attivamente:
Questo era il caso di un file appena creato. Vediamo cosa è successo a un file esistente:
%% 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)
che dà:
Ora usando lo stesso codice di prima (con il permission
impostato su w
):
fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,[1 2 3],'short',10,'ieee-le')
fclose(fid)
Sì, abbiamo ancora la stessa cosa. Ora questo è coerente con la documentazione MATLAB per l'autorizzazione che hai indicato:
w
=> Apri o crea un nuovo file per la scrittura. Elimina i contenuti esistenti , se presente.
Se modifichi semplicemente tale autorizzazione in r+
(Apri file in lettura e scrittura. ):
fid = fopen(my_filename,'r+','ieee-le','ISO-8859-1');
fwrite(fid,[1 2 3],'short',10,'ieee-le')
fclose(fid)
Sovrascrivi solo i valori non saltati: