我们的C ++代码库中有一个工具可以将EEG浮点值输出到Tabbed分隔文本中。例如,如果我们有256个通道和550000个样本,我们输出一个CSV Tabbed测试文件,该文件应该在Excel中打开,包含256列和550000行。
当我尝试在Open Office中打开此文件时(按照打开TDT文件的说明),我可以看到进度条工作非常缓慢,最终完成,但文件永远不会打开。
当我尝试在Excel 2011 for Mac中打开它时,它会挂起几分钟,然后我最终得到一个对话框“没有足够的内存”。我看看活动监视器,我有16演出的内存,大约2.7使用,当Excel返回此消息时,我仍然有大约6演出内存可用。转换此文件后的大小从大约560MB到1.81 gigs,这似乎与值的字符串大小相符。
较小的文件,如100000个样本和256个通道打开正常,看起来正确。
根据Excel的文档,它应该能够显示超过100万行和类似16000列。
我写了一个Python脚本来检查文件,它应该有550,000行。 我还写了一些C ++测试代码,以确保它不是我正在做的任何事情。
代码段:
// C style file stream.
#include <cstdio>
#include <iostream>
int main(int argc, const char * argv[])
{
std::cout<<"Procesing"<<std::endl;
std::string fileURI = "/Users/mmurphy/Desktop/TabbedTestFile.txt";
float eeg = 87658.98765;
// Create a C style file stream object.
FILE* dataStream;
dataStream = fopen(fileURI.c_str(), "w+");
for(int32_t s = 0; s < 550000; s++){
for(int32_t c = 0; c < 256; c++){
fprintf(dataStream, "%f\t",eeg);
}
// Simulate the Vref Channel (257)
fprintf(dataStream, "%f\n",0.0);
}
// Close the fileStream
fclose(dataStream);
std::cout<<"Complete"<<std::endl;
}
如果我将列数从256更改为3,则可以正常工作。我应该假设,因为在Excel和OO中都发生了这种情况,OS Mavericks可能会引入某种类型的错误吗?
感谢任何信息。