2016-03-03 195 views
1

我想通过乘以一个向量来反演矩阵或数字,但它给了我一个错误。逆矩阵误差

v=[1,2,3]   
inv(v'*v) 

`inv` has no method matching inv(::Array{Int64,1}) 
while loading In[45], in expression starting on line 2 

我想在最后获得一个数字或方阵。 我不想使用pinv函数,因为我需要做进一步的操作,我需要一个数字或方阵。 如何解决这个问题?由于事先

回答

4

v是3元向量与v'*v是1元向量:

julia> v = [1,2,3] 
3-element Array{Int64,1}: 
1 
2 
3 

julia> v'*v 
1-element Array{Int64,1}: 
14 

不能反转的载体。如果你想计算的v与自身的标量积,可以使用dot功能,然后使用inv反其道而行:

julia> dot(v,v) 
14 

julia> inv(dot(v,v)) 
0.07142857142857142 
+0

如果我有代替[1,2,3] * [1 2 3] ,所以列*行我应该有矩阵...我怎么能面对这个? –

+2

将列向量与行向量相乘得到的矩阵是秩-1,因此是奇异的并且没有反向。在那种情况下,你想要做什么颠倒? – mschauer

+0

我想找到inv(G'* G),其中G是一个m x p向量。在大多数情况下,但不是全部,案例p = 1,所以我也得到这个错误。朱莉娅不能处理1x1向量的反转是件令人烦恼的事情。 – user2765924