Julia中Matlab的cell2mat的等价性是什么?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Julia中Matlab的cell2mat的等价性是什么?相关的知识,希望对你有一定的参考价值。
好吧,我不确定你们中有些人是否遇到过同样的问题。我需要将matlab程序转换为julia,其中'cell2mat'被广泛使用。例如,大矩阵A由3 * 2小矩阵组成,参见a11,a12,a21,a22,a31,a32,其尺寸均为4 * 2。或者A = [a11 a12; a21 a22; a31 a32]
与a11 = rand(4,2)
为例。我首先使用Array{Array{Float64,2},1}
类型来创建整个矩阵A.然后,我需要将此A转换为通常的矩阵,比如Array{Float64,2}
。我确实尝试像hvcat((NUM),A...)
那样做,但转换后的矩阵的顺序与原始的Array{Array{Float64,2},1}
类型不对应。感谢任何能提供一些滑雪道的人。祝大家一切顺利!
让我们从一个数组开始:
A = [reshape((1:8) .+ (10i+100j), 4, 2) for i in 1:3, j in 1:2]
这样我们就可以直观地验证结果是否正确。
现在的方法可能是:
hcat([vcat(A[:,i]...) for i in 1:size(A,2)]...)
在Julia 0.7中,您可以使用permutedims
不是递归的事实来以更简单的方式获得相同的事实:
hvcat(size(A,2), permutedims(A)...)
这也适用于朱莉娅0.6,但你必须写permutedims(A, (2,1))
。
作为旁注,有趣的是(这里有问题)hvcat
遍历行中的参数,但矩阵存储在列中。
编辑:实际上transpose
在0.7递归,改为permutedims
,也在0.6以下工作。
通过转置数组数组的原始元素---当然是矩阵----然后在命令中转换数组的最后一个数组,例如hvcat(NUM,A ...'),正确的答案可以被找寻到。
以上是关于Julia中Matlab的cell2mat的等价性是什么?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以像在 Matlab 中一样在 Julia 中嵌套 tic() 和 toc() ?如果不是,那么解决方法是啥?