我有一个数组
A={1 6 31 65; 1 38 53 4};
我想要一个
形式的单元格数组C={[1 1] [6 6] [31 31] [65 65];[1 1] [38 38] [53 53] [4 4]};
这样做的一种方法是循环:
for count=1:2
for i=1:4
for j=1:2
C{i,j}(count)=A(i,j);
end
end
end
如何在不循环的情况下完成此操作并提高时间复杂度?
编辑:不是只有count = 2的情况,我的应用程序的计数高达85.循环大大降低了效率。而寻求更高维矩阵的效率也很低。
答案 0 :(得分:0)
执行此操作的一种方法是使用cellfun
创建每个新元素
C = cellfun(@(x)ones(1,2) * x, A, 'UniformOutput', false);
正如@excaza指出的那样,你有相同大小的数据,所以建议你使用多维数组。你可以(例如),只需沿第三维复制数据
C = repmat(A, [1 1 2]);