Matlab函数permute(A,dimorder)对应的R语言等效实现方法
Matlab permute函数的R语言等效实现
核心替换方案
R基础包内置的aperm()函数是Matlab permute(A, dimorder)的完全等效实现,二者功能逻辑完全一致,无需额外安装第三方包即可直接使用。
代码转换示例
你提供的Matlab代码:
x = permute(a{i}(b(i,ii),:,:,:,:,:),[2 3 4 5 6 1])
转换为R代码的对应逻辑:
- Matlab元胞数组
a{}对应R的列表结构,取第i个元素使用a[[i]] - Matlab数组索引中表示取全维度的冒号
:,对应R数组索引的留空写法 - 维度排列参数
[2 3 4 5 6 1]直接传入aperm()的perm参数
最终转换后的R代码:
# 分步写法 sub_arr <- a[[i]][b[i, ii], , , , , ] x <- aperm(sub_arr, perm = c(2, 3, 4, 5, 6, 1)) # 合并为一行的写法 x <- aperm(a[[i]][b[i, ii], , , , , ], perm = c(2, 3, 4, 5, 6, 1))
结果验证
你可以通过打印维度属性确认转换正确性:
# 输出原始切片的维度 print(dim(sub_arr)) # 输出重排后的维度 print(dim(x))
示例中原始切片的维度顺序为[行, 维度2, 维度3, 维度4, 维度5, 维度6],重排后会变为[维度2, 维度3, 维度4, 维度5, 维度6, 行],和Matlab permute的输出结果完全一致。
内容的提问来源于stack exchange,提问作者Steffen Schwerdtfeger
相关产品推荐
相关产品推荐

