Performance 在函数期间,在Matlab中解压文本文件的最快方法是什么?

Performance 在函数期间,在Matlab中解压文本文件的最快方法是什么?,performance,matlab,text-files,unzip,gunzip,Performance,Matlab,Text Files,Unzip,Gunzip,我想用textscan函数在Matlab中扫描文本文件的文本。在用fid=fopen('C:\path')打开文本文件之前,我需要先解压缩文件。这些文件的扩展名为:*.gz 我需要分析成千上万的文件,高性能很重要 我有两个想法: (1) 使用外部程序从Matlab中的命令行调用它 (2) 使用Matlab“zip”工具箱。我听说过gunzip,但不知道它的性能 有人知道从Matlab中快速解压这些文件的方法吗 谢谢 您可以尝试使用Matlab unzip()函数: 解压 提取zip文件的内容 语

我想用textscan函数在Matlab中扫描文本文件的文本。在用fid=fopen('C:\path')打开文本文件之前,我需要先解压缩文件。这些文件的扩展名为:*.gz

我需要分析成千上万的文件,高性能很重要

我有两个想法: (1) 使用外部程序从Matlab中的命令行调用它 (2) 使用Matlab“zip”工具箱。我听说过gunzip,但不知道它的性能

有人知道从Matlab中快速解压这些文件的方法吗


谢谢

您可以尝试使用Matlab unzip()函数:

解压 提取zip文件的内容

语法 解压缩(zipfilename) 解压(zipfilename,outputdir) 解压(url,…) filenames=解压缩(…)

描述 解压(zipfilename)将zipfilename的存档内容提取到当前文件夹中,并设置文件的属性,同时保留时间戳。如果现有文件的属性和所有权允许,它将覆盖与存档中的文件同名的任何现有文件。例如,在同一zip文件名上重新运行解压的文件不会覆盖任何具有只读属性的文件;相反,解压会对此类文件发出警告。 在内部,它使用Java的zip库
org.apache.tools.zip
。如果您的zip归档文件都包含许多文本文件,那么在不显式解压文件的情况下,将其下载到Java并逐条提取它们可能会更快。查看unzip.m的源代码,了解一些想法,以及Java文档。

我发现/p7zip(Unix)在这方面速度更快

[编辑]通过一些快速测试,对gunzip进行系统调用似乎比使用MATLAB的原生gunzip更快。你也可以试试看

只需编写一个新函数,模仿基本的MATLAB gunzip功能:

函数[]=sunzip(完整文件名,输出目录)
如果~exist('output_dir','var'),output_dir=fileparts(fullfilename);结束

app_path='/usr/bin/7za'
开关='e';%提取文件时忽略目录结构
选项=['-o'输出目录]

系统([app_path switches options'u'fullfilename])

然后像使用gunzip一样使用它:

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

使用MATLAB的
toc
计时器,我使用6个未压缩的114MB ASCII文件获得以下提取时间:

压缩:10.15秒

sunzip:7.84s运行得很好,只需要对Max调用可执行文件的语法做一点小小的修改

system([app_path switches ' ' fullfilename options ]);

这有可能从未得到回答?实际上,您要求的是最快的解决方案,并且您收到的是“解决方案”,而没有谈论性能。