GNU/Linux >> Tutoriels Linux >  >> Linux

fwrite de Matlab :qu'advient-il des octets ignorés ?

Dans ce genre de question, le moyen le plus simple de le savoir est généralement de l'essayer vous-même si ce n'est pas trop complexe. Maintenant, vous avez indiqué que vous utilisez Linux , vous pouvez peut-être répéter le test sur votre plateforme et voir si les résultats correspondent.

Pour Windows plate-forme, le skip valeur :

  • est implémenté avant la première valeur à écrire
  • semble laisser chaque octet ignoré à la valeur 00 (probablement ce que le système d'exploitation attribue comme nouvelle valeur pour un fichier)

Exemples :

Ce code :

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

Produit le fichier suivant (vu dans un éditeur hexadécimal) :

Et si vous avez plus d'une valeur à écrire :

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

Vous obtenez toujours 10x 00 valeurs avant chaque short valeur que vous écrivez activement :

C'était le cas pour un fichier nouvellement créé. Voyons ce qui est arrivé à un fichier existant :

%% 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)

qui donne:

Maintenant en utilisant le même code qu'avant (avec le permission défini sur w ):

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

Oui, nous obtenons toujours la même chose. Maintenant, cela est cohérent avec la documentation MATLAB pour l'autorisation que vous avez indiquée :

w => Ouvrir ou créer un nouveau fichier pour l'écriture. Supprimer le contenu existant , le cas échéant.

Si vous modifiez simplement cette autorisation en r+ (Ouvrir le fichier pour lecture et écriture. ):

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

Vous n'écrasez que les valeurs non ignorées :


Linux
  1. Qu'advient-il d'un descripteur de fichier ouvert sous Linux si le fichier pointé est déplacé ou supprimé

  2. Que se passe-t-il lorsqu'un thread bifurque ?

  3. Que se passe-t-il si mv est interrompu ?

  4. DD de /dev/zero à /dev/null...ce qui se passe réellement

  5. Quel est le concept de création d'un fichier avec zéro octet sous Linux ?

Que se passe-t-il exactement lorsque j'exécute un fichier dans le shell ?

Qu'advient-il de la sortie d'un processus qui a été désavoué et a perdu son terminal ?

Que se passe-t-il si je désactive et désinstalle Plymouth ?

Que se passe-t-il lorsque la limite de bande passante est dépassée ?

Que se passe-t-il en arrière-plan lorsque vous exécutez la commande "useradd" sous Linux

Dans quelles unités sont les mesures d'E/S en temps GNU ?