【发布时间】:2013-04-29 08:36:58
【问题描述】:
给定一些数据——例如(在我的例子中)——像下面的表格
Name |pos_x|pos_y|pos_z
------------------------
Point1| .1| .1| .2
Point2| 0.0| 0.0| .1
Middle| .1| .2| .1
Point3| 0.0| 1| 0.0
也许在从 excel 导入该数据后,所有值都存储在一个单元格数组中(我们称之为celldata)。
出于测试目的,可以使用以下行创建此单元格
celldata={'Point1' .1 .1 .2;'Point2' 0 0 .1;'Middle' .1 .2 .1;'Point3' 0 1 0}
在本例中,单元格大小为 4x4。
目前我正在使用以下几行创建一个结构
point.name=char(celldata(:,1));
point.posxyz=cell2mat(celldata(:,2:4));
这导致point size 1x1 Class struct。我正在寻找一种有效的方法将其生成为point size 4x1 Class struct - 因此上面表格中的每一行都有一个元素 - 都具有相同的内部结构:名称和坐标。
我已经尝试过cell2struct,但它只能沿一个维度展开,而无需将一些列组合在一起——据我所知。
此外,这不是 Preallocate structure of cells in matlab 的重复,因为在这种情况下,我有许多不同的列 - 甚至可能是动态列数。
【问题讨论】:
-
您认为
dataset会有帮助吗? -
我认为循环遍历元素会很好:例如
for punkt=point,disp([punkt.name ':' num2str(norm(punkt.posxyz))]),end。尤其是不需要检查有多少元素。你知道什么更好的吗?
标签: arrays matlab struct cell dimension