U tohoto typu otázek je nejsnazší způsob, jak to zjistit, vyzkoušet si to sami, pokud to není příliš složité. Nyní jste uvedli, že používáte Linux , možná můžete zopakovat test na vaší platformě a zjistit, zda se výsledky shodují.
Pro Windows platforma, skip hodnota:
- je implementován před první hodnota k zápisu
- zdá se, že každý přeskočený bajt ponechává na hodnotě
00(pravděpodobně to, co OS přiřadí jako novou hodnotu souboru)
Příklady:
Tento kód:
fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,1,'short',10,'ieee-le')
fclose(fid)
Vytváří následující soubor (zobrazený v hex editoru):
A pokud chcete napsat více než jednu hodnotu:
fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,[1 2 3],'short',10,'ieee-le')
fclose(fid)
Stále dostanete 10x 00 hodnoty před každým short hodnota, kterou aktivně píšete:
To byl případ nově vytvořeného souboru. Podívejme se, co se stalo s existujícím souborem:
%% 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)
což dává:
Nyní pomocí stejného kódu jako dříve (s permission nastavte na w ):
fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,[1 2 3],'short',10,'ieee-le')
fclose(fid)
Ano, stále dostáváme to samé. Nyní je to v souladu s dokumentací MATLABu pro oprávnění, které jste uvedli:
w => Otevřete nebo vytvořte nový soubor pro zápis. Zahodit stávající obsah , pokud existuje.
Pokud toto oprávnění jednoduše změníte na r+ (Otevřít soubor pro čtení a zápis. ):
fid = fopen(my_filename,'r+','ieee-le','ISO-8859-1');
fwrite(fid,[1 2 3],'short',10,'ieee-le')
fclose(fid)
Přepíšete pouze nepřeskočené hodnoty: