【发布时间】:2016-07-14 18:50:02
【问题描述】:
例如,[1 1 ; 2 2 ; 3 3] 变为
[1 1
1 1
1 1
2 2
2 2
2 2
3 3
3 3
3 3]
我正在使用这个:
Julia 中的 expander(orig,mult::Int) = orig[ceil(Int,(1:size(orig,1)*mult)/mult),:]; 和 Matlab 中的以下内容:
function expanded = expander(original,multiplier)
expanded = original(ceil((1:size(original,1)*multiplier)/multiplier),:);
end
另一个 matlab 唯一的方法是:
expanded = kron(original,ones(multiplier,1));
如果存在,我更喜欢超快的 julia 选项。
【问题讨论】:
-
kron是最好的方法,在这个问题得到修复后,Julia 的速度非常快:github.com/JuliaLang/julia/issues/4958 -
是什么阻止您在 Julia 中以同样的方式使用
kron? -
如果 kron 是最快的方法,那我会用。它是否更快,因为它避免了从 int 更改为 double 然后返回?
-
因为你也用
[matlab]标记了这个问题:你可以使用repmat。但是不知道相比之下它有多快。 -
对于 Matlab R2015a+ 尝试 repelem,例如,
A=[1 1;2 2;3 3];repelem(A,3,1)
标签: arrays matlab multidimensional-array julia