MATLAB:相同长度、相同类型的向量占用的空间量与 .mat 文件不同

MATLAB: Same-length, same-type vectors take up different amounts of space as .mat files

提问人:Thelona 提问时间:10/16/2023 最后编辑:Thelona 更新时间:10/16/2023 访问量:29

问:

我有两种分辨率的神经记录,一种以 2048Hz 采样,另一种以 32768Hz 采样。我为 2048Hz 录制实现了一个分析管道,我想将其应用于其他更高分辨率的录制。

记录是在同一系统中并行完成的,因此除了采样率外,有关数据及其情况的所有内容在质量上都是相同的。这就是为什么我在应用我的管道之前将 32768Hz 的录音重新采样到 2048Hz,期望它也能正常工作。然而,生成的矢量虽然与原始 2048Hz 记录的长度相同,但最终被保存为一个更大的 .mat 文件。

我使用 MATLAB 2018a 中的重采样函数对数据进行重采样:

>> which resample.m
/usr/local/MATLAB/R2018a/toolbox/signal/signal/resample.m

我输入我的 32768Hz 信号,p, q = 1, 16。

我的流水线还没有大问题,只有:重采样信号具有预期的样本数,这与最初以 2048Hz 记录的相应信号中的样本数相同。所有向量都是双精度。但是,当我去保存它时,它作为 .mat 文件占用的空间比原始的 2048Hz 录音要多得多:

save('original_32768Hz.mat', 'original_highSF', "-v7")
save('original_2048Hz.mat', 'original_lowSF', "-v7")
save('resampled_to_2048Hz.mat', 'resampled_lowSF', "-v7")

结果: 原始 32768Hz 录音按原样重新保存:385 MB

原始 2048Hz 录音按原样重新保存:22.1 MB

原始 32768Hz 录音重新采样至 2048Hz 并保存:38.7 MB

当我直接将原始 32768Hz 向量转换为 2048Hz 向量的大小并保存时,不会复制相对于预期大小的 ~50% 大小增加。在这种情况下,正如预期的那样,它与最初的 2048Hz 录音大小相同。

如果我直接在 MATLAB 中模拟具有相似长度和“采样率”的记录,而不是从实验室中使用的文件类型加载记录,则该问题也不会重现。我意识到这可能会使回答这个问题变得更加困难,但也许有人猜测在重新采样过程中向量会发生什么,这使得包含重新采样向量的文件比包含完全相同长度的非重新采样向量的文件大得多。

MATLAB 信号处理重 下采样

评论

0赞 rahnema1 10/16/2023
它可能与压缩有关。如果数据包含相同的值,则可能会导致文件大小变小。例如,最好压缩为 .[0 0 0 0 0 0][1 4 2 6 1 7]
0赞 Cris Luengo 10/16/2023
预计您的录音设备在采样前应用低通滤波器。这将在相邻样本之间引入一定程度的相关性。 也应用了低通滤波器,但该滤波器在结构上可能非常不同,并且可能会在相邻样本之间引入较少的相关性。更多的相关性意味着更多的冗余,因此更多的压缩。resample

答: 暂无答案