我正在使用Matlab进行一些评估,然后我想保存保存结果的结构以供将来使用。
问题:我注意到的第一件事是执行持续了太长时间,可能是8个小时,然后当我想保存结构时又可能需要2个小时。经过几次阻止和重做之后,我终于设法保存了数据的副本。我感到困惑的是该文件的大小为150GB。
过程:代码结构如下:遍历文件夹(50 000)中的 .csv文件,将其以csv格式文件读取,提取所需的列并计算数据。
我的观点:我猜想,整个迭代以及从每个文件中提取数据都需要大量缓存,随着时间的流逝,这可能会减慢该过程的速度!但是,我仍然不明白为什么最终的 .mat 文件需要这么多的内存,因为过去对于相同的数据,但是参数不同,它不需要那么多的空间来保存文件。结果。
问题/秒:是否可以在不影响结果的情况下减小最终文件的大小?我基于Matlab可能从过程中保存其他信息这一假设来提出这个问题?
代码架构:
clc; close all; clear all; fclose('all');
result = struct('values_a', [], 'other', []);
counter = 1;
for i=1:length(dataNames)
try
structRead = ezread(nameOfFile, ',');
values_a = structRead.timestamp;
for j=1:length(values_a)
if(strcmp(values_a(j),'N'))
if(j==1)
values_a(j) = values_a(j+1);
elseif (j==length(values_a))
values_a(j) = values_a(j-1);
else
values_a(j) = (values_a(j-1)+values_a(j+1))/2;
end
end
result(counter).values_a(j) = values_a(j);
end
counter=counter+1;
catch
counterFailed= counterFailed+1;
end
end
end
save(path2save,'result','-v7.3');