将数据附加到Matlab中的文件,在符号之前删除

时间:2015-10-05 15:56:08

标签: matlab file byte

我有一个文件,它是通过Matlab从带有二进制数据值的向量M写入的。此文件是使用Matlab的fwritemyGenFile.m形式的以下脚本function myGenFile(fName, M)中编写的:

% open output file
fId = fopen(fName, 'W');

% start by writing some things to the file    
fprintf(fId, '{DATA BITLENGTH:%d}', length(M));
fprintf(fId, '{DATA LIST-%d:#', ceil(length(M) / 8) + 1);

% pad to full bytes
lenRest = mod(length(M), 8);
M = [M, zeros(1, 8 - lenRest)];

% reverse order in bytes
M = reshape(M, 8, ceil(length(M) / 8));
MReversed = zeros(8, ceil(length(M) / 8));
for i = 1:8
    MReversed(i,:) = M(9-i,:);
end
MM = reshape(MReversed, 1, 8*len8);

fwrite(fId, MM, 'ubit1');

% write some ending of the file
fprintf(fId, '}');
fclose(fId);

现在我想编写一个文件myAppendFile.m,它会将一些值附加到现有文件中,并具有以下格式:function myAppendFile(newData, fName)。要做到这一点,我将不得不删除尾随'}':

fId = fopen(nameFile,'r');
oldData = textscan(fId, '%s', 'Delimiter', '\n');
% remove the last character of the file; aka the ending '}'
oldData{end}{end} = oldData{end}{end}(1:end-1);

现在问题在于尝试将oldData写入文件时(写newData应该是微不足道的,因为它也是二进制数据的向量,如M),因为它是包含字符串的单元格数组。

我如何克服此问题并正确附加新数据?

1 个答案:

答案 0 :(得分:1)

不是使用将文件复制到内存中的textscan,而是将其写回,您可以使用fseek将指针设置为要继续写入的位置。只需在文件结束前加上一个字符并继续编写。

fseek(fid, -1, 'eof');