GNU/Linux >> Linux Esercitazione >  >> Linux

Fwrite di Matlab:cosa succede ai byte saltati?

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:


Linux
  1. Cosa succede a un handle di file aperto su Linux se il file puntato viene spostato o eliminato

  2. Qual è il totale nella primissima riga dopo ls -l?

  3. Cosa succede quando un thread si biforca?

  4. DD da /dev/zero a /dev/null... cosa succede realmente

  5. Cosa succede se elimini un file del dispositivo?

Cosa succede quando eseguo il comando Cat /proc/cpuinfo?

Cosa succede esattamente quando eseguo un file nella shell?

Linux:cosa succede quando esegui la sincronizzazione senza un percorso di destinazione??

Cosa succede in background quando esegui il comando "useradd" in Linux

Qual è il concetto di creare un file con zero byte in Linux?

Cosa succede se il limite di 4 miliardi di file è stato superato in una partizione ext4?