Octave 保存和检索倍频程文件中的单元格数组的最佳函数和文件格式

Octave 保存和检索倍频程文件中的单元格数组的最佳函数和文件格式,octave,cell-array,Octave,Cell Array,什么样的函数scanf、fscanf、load、textread和文件格式dat、mat、txt、csv组合最适合读取包含单元格数组的倍频程文件 我应该使用哪个函数以上面定义的读取性能最高的格式将单元格数组存储在该文件中 请注意,性能对于读取操作更为重要,因为这是我将使用最多的操作。但是有一个性能良好的函数来编写文件也是可取的 octave:1> MyCell = {'a', 'cell', 'with', 5, 'elements'}; octave:2> save -binary

什么样的函数scanf、fscanf、load、textread和文件格式dat、mat、txt、csv组合最适合读取包含单元格数组的倍频程文件

我应该使用哪个函数以上面定义的读取性能最高的格式将单元格数组存储在该文件中

请注意,性能对于读取操作更为重要,因为这是我将使用最多的操作。但是有一个性能良好的函数来编写文件也是可取的

octave:1> MyCell = {'a', 'cell', 'with', 5, 'elements'};
octave:2> save -binary myworkspace.dat MyCell
octave:3> clear
octave:4> load -binary myworkspace.dat
octave:5> MyCell 
MyCell = 
{
  [1,1] = a
  [1,2] = cell
  [1,3] = with
  [1,4] =  5
  [1,5] = elements
}


大概octave的本机二进制格式本身没有扩展名,通过save-binary和load-binary命令。@tasospapstylenou问题是我不知道如何准确地保存一个文件,当使用load读取时,会生成一个单元格数组而不是结构。你能在这方面提供一些指导吗?如果你不收集加载的结果,它只是将二进制文件的内容解压到你的工作区中。因此,只要您知道存储在二进制文件中的单元阵列的名称,您就可以在加载文件后立即从工作区访问它。性能取决于许多因素,如CPU、内存、硬盘驱动器吞吐量等。正如@TASOSPAPSTYLEANOU回答的那样,使用八度音阶本机双音格式在许多设置中提供了良好的性能。但是,例如,如果您有一个速度较慢的RaspberryPi sd卡,那么如果您使用gzip压缩格式,您可能会获得更好的读取速率。如果您在嵌入式系统上,内存占用也很重要。因此,您可以在目标系统上使用真实的数据进行基准测试。我确实是在收集结果,或者至少我认为我是通过使用词汇=加载'词汇表.mat';。切换到load'vocabulary.mat'、'vocabulary'后;它正确地将词汇表变量重新生成为单元格数组。二进制标志没有任何区别。我使用save'词汇表.mat'、'词汇表';保存文件;。你知道为什么会这样吗?我纠正自己一件事。二进制确实对性能有很大的影响。在我做的一些小测试中,我发现在保存小文件时性能提高了90%,在读取它们时性能提高了近100%。是的,如果不指定二进制,则默认为人类可读文本模式,对于使用vacabulary=load'vocabulary.mat'和使用load'vocabulary.mat'、'vocabulary'时的行为差异有何评论?
octave:6> S = load ('-binary', 'myworkspace.dat');
octave:7> S.MyCell
ans = 
{
  [1,1] = a
  [1,2] = cell
  [1,3] = with
  [1,4] =  5
  [1,5] = elements
}