2016-06-24 3 views
0

Мне нужно сохранить несколько точечных облаков, сгенерированных в цикле. Я пытался сохранить их в массиве, который возвращает ошибку:Сохранение нескольких объектов класса (облака точек)

Array formation and parentheses-style indexing with objects of class 'pointCloud' is not allowed.

while i<=N 
. 
. 
[imageDepth, pointCld] = getPointCloud(cp, maxDistance); 
imgDepthAll(:,:,i) = imageDepth; 
pointCldAll(:,:,i) = pointCld; 
. 
. 
i = i+1; 
end 

Как я могу это исправить? Большое спасибо.

+1

'pointCld' это, предположительно, [не массив] (http://www.mathworks.com/help/vision/ref/pointcloud-class.html). – excaza

+0

pointCld - это объект со свойствами Location, Color, Count, XLimits, YLimits, Z Limits – Basit

+0

Да, спасибо, я могу отлично читать документацию. – excaza

ответ

2

Второй выход (pointCld) - это PointCloud2 object, который, по-видимому, не поддерживает размещение в массиве. Из-за этого вы захотите разместить их в массиве ячеек.

pointCldAll{k} = pointCld; 

Если вы хотите фактические XYZ или RGB данные из этого объекта, вы хотите получить к нему доступ с помощью следующих методов, а затем вы можете хранить их в обычном массиве.

xyz = readXYZ(pointCld) 
rgb = readRGB(pointCld) 

Или принести Location собственность и хранить что.

loc = pointCld.Location 
+0

Причина ошибки заключается в том, что он пытается обратиться к объекту, подобному массиву. Ему нужно получить доступ к свойству «Местоположение». – excaza

+0

@excaza Ah обновил это, чтобы включить дополнительную информацию о втором выходе. – Suever

+0

@excaza Ah пропустил это сообщение об ошибке в сообщении. По-видимому, они не поддерживают массивы. Интересно. – Suever