Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Julia 由矩阵组成矩阵_Julia - Fatal编程技术网

Julia 由矩阵组成矩阵

Julia 由矩阵组成矩阵,julia,Julia,我想要一个元素也是矩阵的矩阵 比如说 A=[[1 2 3;3 4 1;2 3 6] [1 4 5;4 8 7;2 0 1];[1 5 8;6 4 7;2 0 0] [2 1 5;4 7 7;2 4 6]] 如何在Julia中生成此矩阵?我不确定是否有简写/文字,但您可以构造它,然后填充它: B=Matrix{Matrix}(3,3) Out[4]: 3×3 Array{Array{T,2} where T,2}: #undef #undef #undef #undef #unde

我想要一个元素也是矩阵的矩阵

比如说

A=[[1 2 3;3 4 1;2 3 6]  [1 4 5;4 8 7;2 0 1];[1 5 8;6 4 7;2 0 0]  [2 1 5;4 7 7;2 4 6]]

如何在Julia中生成此矩阵?

我不确定是否有简写/文字,但您可以构造它,然后填充它:

B=Matrix{Matrix}(3,3)
Out[4]:
3×3 Array{Array{T,2} where T,2}:
 #undef  #undef  #undef
 #undef  #undef  #undef
 #undef  #undef  #undef
B[1,1]=[1 2 ; 3 4]
B
Out[8]:
3×3 Array{Array{T,2} where T,2}:
    [1 2; 3 4]  #undef  #undef
 #undef         #undef  #undef
 #undef         #undef  #undef

工作(在Julia 0.6上)。将元素设置为元组会停止子矩阵的融合,然后首先
会解除它们的耦合。

我不知道为什么Julia有这样一个属性(从我的POV strange来看):

julia> [1 2 [3 4]]
1×4 Array{Int64,2}:
 1  2  3  4
但我们可以用它来做这个把戏:

julia> A=[[[1 2 3;3 4 1;2 3 6]] [[1 4 5;4 8 7;2 0 1]];
          [[1 5 8;6 4 7;2 0 0]] [[2 1 5;4 7 7;2 4 6]]]
另一种奇怪的可能性是(请注意,它在视觉上被转换了!):

或者(这也需要进行视觉转换!)

编辑: 补充您的问题-您可以创建所需长度的数组,然后使用重塑:

U = reshape(Matrix{Float64}[zeros(8, 5) for i in 1:20*20], (20,20));

您可以首先通过以下方式创建上述尺寸的空矩阵:

X = zeros(Int64, (3, 3,4))
您可以相应地进一步分配每个矩阵:

X[:,:,1] = [1 2 3;3 4 1;2 3 6]
X[:,:,2] = [1 4 5;4 8 7;2 0 1]
X[:,:,3] = [1 5 8;6 4 7;2 0 0]
X[:,:,4] = [2 1 5;4 7 7;2 4 6]
矩阵X是:

julia > X
julia > 3×3×4 Array{Int64,3}:
[:, :, 1] =
1  2  3
3  4  1
2  3  6

[:, :, 2] =
1  4  5
4  8  7
2  0  1

[:, :, 3] =
1  5  8
6  4  7
2  0  0

[:, :, 4] =
2  1  5
4  7  7
2  4  6
一个简单的方法是通过向量读取每个元素的原样,并对其进行重塑

x = [1,2,3,3,4,1,2,3,6,1,4,5,4,8,7,2,0,1,1,5,8,6,4,7,2,0,0,2,1,5,4,7,7,2,4,6]
x = reshape(x, (3, 3, 4))
这将产生4个需要转置的矩阵,因此,您可以使用排列的ims作为以下命令来更改第一维度和第二维度(每个矩阵)的顺序:


嗨,我看你是个新手。你找到问题的答案了吗?如果有任何答案解决了你的问题,你可以通过点击旁边的复选标记来考虑。这有助于将注意力集中在仍然没有答案的问题上。在这方面,您可能还需要检查其他两个问题。
X[:,:,1] = [1 2 3;3 4 1;2 3 6]
X[:,:,2] = [1 4 5;4 8 7;2 0 1]
X[:,:,3] = [1 5 8;6 4 7;2 0 0]
X[:,:,4] = [2 1 5;4 7 7;2 4 6]
julia > X
julia > 3×3×4 Array{Int64,3}:
[:, :, 1] =
1  2  3
3  4  1
2  3  6

[:, :, 2] =
1  4  5
4  8  7
2  0  1

[:, :, 3] =
1  5  8
6  4  7
2  0  0

[:, :, 4] =
2  1  5
4  7  7
2  4  6
x = [1,2,3,3,4,1,2,3,6,1,4,5,4,8,7,2,0,1,1,5,8,6,4,7,2,0,0,2,1,5,4,7,7,2,4,6]
x = reshape(x, (3, 3, 4))
 permutedims(x,(2,1,3))