串联可变结构的数组

时间:2018-10-30 14:56:46

标签: matrix julia

让我们说我有一个可变的结构:

mutable struct a
    x :: Float64
end

无论出于何种原因,我都想连接a的矩阵和向量:

b = Matrix{a}(undef, (0, 2))
c = [a(2.), a(3.)]
vcat(b, c)    # ERROR: ArgumentError: number of columns of each array 
# must match (got (2, 1))

如何将向量c添加为b底部的新行?

注意:我意识到c应该是行向量,但是运算符'(即c')不能应用于Vector{a},后者是问题。

2 个答案:

答案 0 :(得分:2)

有几种方法可以做到:

vcat(b, reshape(c, 1, 2))

vcat(b, permutedims(c))

vcat(b, [v for _ in 1:1, v in c])

特别是permutedimstranspose类似,但它不是递归的(与transpose相对)。

您还可以首先创建c作为矩阵:

c = [a(2.) a(3.)]

在这种情况下,vcat(b, c)可以正常工作。

答案 1 :(得分:1)

您的c不是行向量,而是列向量。以下作品:

b = Matrix{a}(undef, (0, 2))
c = [a(2.) a(3.)] # left out the comma here to generate a size (1,2) object
vcat(b, c)