假设我有一个名为“cellPoints”的空m-by-p维度单元格,并且我还有一个名为“cellIdx”的D-3维数组,其中每行i包含“cellPoints”中的下标。现在我想计算“cellPoints”,以便cellPoints {x,y,z}包含“cellIdx”中的一行数字数组。使用matlab对矩阵中的行进行索引
甲幼稚实现可以是
for i = 1:size(cellIdx, 1)
cellPoints{cellIdx(i, 1), cellIdx(i, 2), cellIdx(i, 3)} = ...
[cellPoints{cellIdx(i, 1), cellIdx(i, 2), cellIdx(i, 3)};i];
end
作为一个例子,假设
cellPoints = cell(10, 10, 10);% user defined, cannot change
cellIdx = [1, 3, 2;
3, 2, 1;
1, 3, 2;
1, 4, 2]
然后
cellPoints{1, 3, 2} = [1;3];
cellPoints{3, 2, 1} = [2];
cellPoints{1, 4, 2} = [4];
和cellPoints的其他指数应为空
仙ce cellIdx是一个大矩阵,这显然是低效的,还有其他更好的实现吗?我试过使用唯一的(cellIdx,'行')在cellIdx中找到唯一行,然后编写for-loop来计算cellPoints,但它比上面慢。
目前尚不清楚你想要什么。发布一些示例输入和输出 – 2015-04-05 23:26:30
@LuisMendo现在提供了一个示例 – luvegood 2015-04-05 23:32:11
将您的代码应用于给定的'cellIdx'不起作用。 'cellPoints'也应该定义为你的代码运行 – 2015-04-05 23:35:16