我喜欢函数式编程
arrayfun
(游戏邦注:它明确表示:将此函数应用于这些序列的所有元素)但请注意,如果速度非常关键,那么显式循环可能会更快。
与
arrayfun
你别无选择,只能通过中间单元阵列。在你的例子中,你不需要把它分成两行:
b = cell2mat(arrayfun(@(x,y)冒号(x,y),a(1,:),a(2,:),“UniformOutput”、假));
使用显式循环,在你的例子中,你可以很容易地计算序列在最终数组中的位置,并完全避免单元格数组:
seqlengths = a(2,:) - a(1,:) + 1;
seqstarts = cumsum([1,seqlengths(1:end-1)]);
B =零(1,SEQSTARTS(END)-1);
为colidx = 1:尺寸(a,2)
b(seqstarts(colidx)+(0:seqlengths(colidx)-1))= a(1,colidx):a(2,colidx);
结束
代码复杂度的增加是否值得我们去做。当然,上述方法可能不适用于您的实际用例。