让我们说我有一个可变的结构:
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}
,后者是问题。
答案 0 :(得分:2)
有几种方法可以做到:
vcat(b, reshape(c, 1, 2))
或
vcat(b, permutedims(c))
或
vcat(b, [v for _ in 1:1, v in c])
特别是permutedims
与transpose
类似,但它不是递归的(与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)