Каков самый быстрый способ разархивировать текстовые файлы в Matlab во время функции?

Я хотел бы сканировать текст текстовых файлов в Matlab с помощью функции textscan. Прежде чем я смогу открыть текстовый файл с помощью fid = fopen('C:\path'), мне нужно сначала разархивировать файлы. Файлы имеют расширение: *.gz

Есть тысячи файлов, которые мне нужно проанализировать, и важна высокая производительность.

У меня есть две идеи: (1) использовать внешнюю программу и вызывать ее из командной строки в Matlab (2) использовать набор инструментов Matlab 'zip'. Я слышал о gunzip, но не знаю о его производительности.

Кто-нибудь знает способ как можно быстрее разархивировать эти файлы из Matlab?

Спасибо!


person Community    schedule 19.02.2010    source источник
comment
Возможно, что на это так и не ответили? На самом деле вы просите самое быстрое решение, и вы получаете «решение», не говоря о производительности.   -  person eMarine    schedule 01.07.2015


Ответы (2)


Я обнаружил, что 7zip-commandline(Windows) / p7zip(Unix) несколько быстрее для этого.

[править] Из некоторых быстрых тестов кажется, что системный вызов gunzip выполняется быстрее, чем использование родного gunzip MATLAB. Вы могли бы попробовать и это.

Просто напишите новую функцию, которая имитирует базовую функциональность MATLAB gunzip:

function [] = sunzip(fullfilename,output_dir)
if ~exist('output_dir','var'), output_dir = fileparts(fullfilename); конец

app_path = '/usr/bin/7za';
Switchs = 'e'; %extract файлы игнорируют структуру каталогов
options = [' -o' output_dir];

system([app_path переключает опции '_' fullfilename]);

Затем используйте его так же, как и gunzip:

sunzip('/data/time_1000.out.gz',tmp_dir);

С таймером MATLAB toc я получаю следующее время извлечения с 6 несжатыми файлами ASCII размером 114 МБ:

распаковка: 10,15 с
распаковка: 7,84 с

person JS Ng    schedule 16.04.2010

работал хорошо, просто нужно было немного изменить синтаксис Макса, вызывающего исполняемый файл.

system([app_path switches ' ' fullfilename options ]);
person user3473486    schedule 28.03.2014