情況:快速索引到數據陣列
我有UINT8的數據陣列(例如UINT8(零(24 * 30000,1))),其編碼24各字節的30000點。說,我有一個指向這個數據數組的數組,例如1:2:30000。我知道想要有效地爲指向向量中引用的點創建正確的數據數組。例如,當嘗試使用Robotics系統工具箱從'sensor_msgs/PointCloud2'消息中刪除點時會發生這種情況。
解決方案
到現在爲止,我的解決辦法是這樣的上述
startIndices = (pointIndices-1) * double(pointCloud_out.PointStep) + 1;
endIndices = pointIndices * double(pointCloud_out.PointStep);
indices = zeros(pointCloud_out.RowStep,1);
for ii = 1:numel(pointIndices)
indices((ii-1)*pointCloud_out.PointStep+1 : ii*pointCloud_out.PointStep) = startIndices(ii):endIndices(ii);
end
pointCloud_out.Data = pointCloud_in_msg.Data(indices);
其中pointIndices是上述指數之向量和pointCloud_out.PointStep編碼多少字節有一個點( 24)。然而,這個解決方案在我的機器上需要大約1.5秒,而且這個解決方案需要很長的時間。
問:
你能想到的任何(非常)快速的解決方案做到這一點的?
我對你在問什麼有點困惑。 pointCloud(:,indices)'有什麼問題? – Suever
@Suever:pointCloud(-2消息)的數據字段是一個m×1的矩陣,在這裏 – user1809923