gpt4 book ai didi

matlab - 有没有内置的方法来翻转 nd 数组的第 i 个维度?

转载 作者:太空宇宙 更新时间:2023-11-03 20:11:04 26 4
gpt4 key购买 nike

基本上,我正在寻找 flipudfliplr 的泛化来翻转 nd 数组的第 i 个维度。

当要翻转的维度是第一个的时候,估计可以用

function flipped = flipfirst(ndarr)
sz = size(ndarr);
flipped = reshape(flipud(reshape(ndarr, sz(1), [])), sz);
end

同样,如果要翻转的维度是最后一个维度,我可以使用

function flipped = fliplast(ndarr)
sz = size(ndarr);
flipped = reshape(fliplr(reshape(ndarr, [], sz(end))), sz);
end

我确定我可以编写更通用的代码,调用 permute 等等,但是是否有任何内置的东西?

我不确定做上面所有的reshape-ing 有多昂贵,但如果是的话,我也会对更高效的非内置方法感兴趣。

最佳答案

如果你有 R2013b+,你应该使用 new flip功能:

A = rand(2,2,2);
B = flip(A,3);

对于旧版本,您可以使用 flipdim :

A = rand(2,2,2);
B = flipdim(A,3);

在命令窗口中键入 edit flipdim 以查看 flipdim 的巧妙代码。

关于matlab - 有没有内置的方法来翻转 nd 数组的第 i 个维度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21961871/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com