matlab - 如何重新采样不适合 MATLAB 内存的信号数据数组?
问题描述
我有一组大小为 200,000,000x3 的加速度计数据,我需要在 matlab 中重新采样。使用此数据调用 resample 函数后,我收到“内存不足”错误。(我的电脑有 8 GB 的 RAM)
我尝试了什么:我将加速度计数据(x,y,z)加载为一个数组,将时间数据加载为另一个数组。我为每个创建了一个 tall 数组,然后尝试再次调用 resample 函数。
我这次收到的错误是:“第一个参数必须是一个高列向量。”
请帮助我了解完成此任务的正确方法。谢谢!
解决方案
默认情况下,Matlab 将所有内容都放在一个 64 位数字中。如果您的 acc 数据限制为 8 位或 16 位或 32 位值,则可以使用这些数字类型节省一些空间。但是,这可能会出现问题,具体取决于您想要做什么,因为并非 matlab 中的所有函数都可以使用非 64 位数字。
数组需要一块连续的内存,所以一个 3xn 的数组需要 3 n 8 字节的内存 + 更多的开销。我认为如果你做 3 个 1xn 数组,你可能会消耗更多的内存,但它不必是一个块。
您可以尝试关闭所有内容,以便您的机器也有大量可用内存。
根据数据,我可能会编写一个快速的 awk 脚本来提取每个第 n 个点并将其放入一个较小的文件中,甚至在将数据放入 matlab 之前就可以读取该文件。
听起来您可以加载数据,但是您的重采样功能是什么?您是在减少数据还是尝试将其插入到更精细的时间向量中?
您可以加载数据,删除部分数据,将其保存到 mat 文件,然后重复。然后对你的各种mat文件进行操作。
推荐阅读
- javascript - Object.entries().map() 没有返回输出
- java - 不知道如何让 java 编译器运行 HelloWorld,尝试了一切
- apache-spark - 如何从 Jupyter 笔记本中更改运行时 Spark 工作人员使用的 python 可执行文件
- java - 无法从 JAR 文件中导入资源
- wordpress - 在 WordPress 网站上使用 Screaming Frog 的“错误 502 - 网关错误”
- postgresql - 如何修复错误解析错误:语法错误,postgresql查询中的意外''?
- html - 将 AngularJS 值插入 HTML 表不起作用
- spring-boot - 当同时支持 http 和 https 时,Spring Boot Tomcat httpsession 不一样
- c# - EntityFramework - 虚拟 ICollection 查询
- python - 当视频即将结束时,函数 'cv::resize' 中出现错误!ssize.empty()