В Matlab нет функции ftruncate (), но у вас есть доступ к полной стандартной библиотеке Java в JVM, встроенной в Matlab, и вы можете использовать java.io.RandomAccessFile или классы Java NIO для усечения файла.
Вот функция Matlab, которая вызывает Java для удаления последних n байтов из файла. Должна иметь минимальную стоимость ввода / вывода.
function remove_last_n_bytes_from_file(file, n)
jFile = java.io.RandomAccessFile(file, 'rw');
currentLength = jFile.length();
wantLength = currentLength - n;
fprintf('Truncating file %s: Resizing to %d to remove %d bytes\n', file, wantLength, n);
jFile.setLength(wantLength);
jFile.close();
Вы также можете сделать это как однострочник.
java.io.RandomAccessFile('/path/to/my/file.bin', 'rw').setLength(n);