poster
2019-12-14, 20:13
在MATLAB中处理点云 (http://en.wikipedia.org/wiki/Point_cloud)数据时遇到“数据过载”问题。这是我目前正在做的:
我从我的原始数据文件开始,每个文件的大小约为30Mb。
然后,我对它们进行初始处理,以提取n个单个对象并删除外围点,这些外围点全部合并为1 xn结构testset ,保存到testset.mat ( testset.mat )中。
到目前为止,一切都很好。现在事情变得复杂了:
用于在各对象的各点testset ,我将计算数的功能,其中最终被某些大小的矩阵(每个点)中的一个。矩阵的大小以及计算的其他一些属性是计算的参数。我将这些计算出的特征保存在1 xn的单元格数组中,每个单元格包含每个点的矩阵数组。
然后,我将此单元格数组保存在.mat文件中,其中名称指定了参数,使用的测试数据的名称以及提取的特征类型。例如:
testset_feature_type_A_5x5_0.2x0.2_alpha_3_beta_4.mat
现在,对于每个文件,我都会做一些进一步的处理(使用分类算法)。同样,还有更多参数需要设置。
因此,现在我处在一个棘手的情况下,每个初始数据的最后每条都经过某个路径,但是所采用的路径(以及沿该路径设置的参数)并没有与数据本身固有地保持在一起。
所以我的问题是:
有一个更好的方法吗?谁有在MATLAB中处理大型数据集的经验,可以提出一种更有效,更完整地存储数据和参数设置的方法吗?
理想情况下,我可以查找某些数据,而不必在文件字符串上使用正则表达式。但是,这样做还有一个动机,就是将单独处理的文件分开保存,以在加载文件时节省系统内存(并有助于防止腐败)。
每次计算所花费的时间(约2个小时)禁止“即时”计算数据。
回答:
对于类似的问题,我创建了一个执行以下操作的类结构:
每个对象都链接到原始数据文件
对于每个处理步骤,都有一个属性
属性的set方法将数据保存到文件(与原始数据文件同名的目录中),存储文件名,并更新“ status”属性以指示此步骤已完成。
如果已存储文件名并且状态指示为“完成”,则属性的get方法将加载数据。
最后,可以保存/加载对象,这样我就可以立即进行一些处理,保存对象,然后再加载它,并且我立即知道特定数据集在处理管道中的距离。
因此,内存中唯一的数据就是当前正在处理的数据,您可以轻松地知道哪个数据集处于哪个处理阶段。此外,如果将方法设置为接受对象数组,则可以进行非常方便的批处理。
更多&回答... (https://stackoverflow.com/questions/4760610)
我从我的原始数据文件开始,每个文件的大小约为30Mb。
然后,我对它们进行初始处理,以提取n个单个对象并删除外围点,这些外围点全部合并为1 xn结构testset ,保存到testset.mat ( testset.mat )中。
到目前为止,一切都很好。现在事情变得复杂了:
用于在各对象的各点testset ,我将计算数的功能,其中最终被某些大小的矩阵(每个点)中的一个。矩阵的大小以及计算的其他一些属性是计算的参数。我将这些计算出的特征保存在1 xn的单元格数组中,每个单元格包含每个点的矩阵数组。
然后,我将此单元格数组保存在.mat文件中,其中名称指定了参数,使用的测试数据的名称以及提取的特征类型。例如:
testset_feature_type_A_5x5_0.2x0.2_alpha_3_beta_4.mat
现在,对于每个文件,我都会做一些进一步的处理(使用分类算法)。同样,还有更多参数需要设置。
因此,现在我处在一个棘手的情况下,每个初始数据的最后每条都经过某个路径,但是所采用的路径(以及沿该路径设置的参数)并没有与数据本身固有地保持在一起。
所以我的问题是:
有一个更好的方法吗?谁有在MATLAB中处理大型数据集的经验,可以提出一种更有效,更完整地存储数据和参数设置的方法吗?
理想情况下,我可以查找某些数据,而不必在文件字符串上使用正则表达式。但是,这样做还有一个动机,就是将单独处理的文件分开保存,以在加载文件时节省系统内存(并有助于防止腐败)。
每次计算所花费的时间(约2个小时)禁止“即时”计算数据。
回答:
对于类似的问题,我创建了一个执行以下操作的类结构:
每个对象都链接到原始数据文件
对于每个处理步骤,都有一个属性
属性的set方法将数据保存到文件(与原始数据文件同名的目录中),存储文件名,并更新“ status”属性以指示此步骤已完成。
如果已存储文件名并且状态指示为“完成”,则属性的get方法将加载数据。
最后,可以保存/加载对象,这样我就可以立即进行一些处理,保存对象,然后再加载它,并且我立即知道特定数据集在处理管道中的距离。
因此,内存中唯一的数据就是当前正在处理的数据,您可以轻松地知道哪个数据集处于哪个处理阶段。此外,如果将方法设置为接受对象数组,则可以进行非常方便的批处理。
更多&回答... (https://stackoverflow.com/questions/4760610)