对于一些计算,我需要一个特征值分解。现在我试着评估numpy的功能,并注意到有一个非常坏的行为!看看这个:
import numpy as np
N = 3
A = np.matrix(np.random.random([N,N]))
A = 0.5*(A.H + A) #Hermetian part
la, V = np.linalg.eig(A)
VI = np.matrix(np.linalg.inv(V))
V = np.matrix(V)
/edit:我现在选择了一个hermetian矩阵,所以这是正常的。
数学上说,我们应该有VI * VH = 1,VH *A*V= VI *A*
考虑最小二乘逆问题的正规方程的下列加权解:
m = inv(G'*W'*W*G)*G'*W'*W*d
我想设置加权矩阵W,它是一个在对角线上加权的方对角线矩阵。
由于d (10⁷)中有大量的数据点,我的系统矩阵⁷也很大,但仅在一维上(因为我的数据点比模型参数多得多)。当模型参数为6个时,G为10⁷×6。因此,W必须是大小(10⁷×10⁷)。然而,它是稀疏的,只有10个⁷非零项(权重)。
为了减少内存,我在W上使用稀疏。
若要分配权重,请执行以下操作
d = [d1;d2];
W = sparse(length(d),length(d))
w1 = len
我想用Python对矩阵进行对角化,下面是我的脚本:
import scipy.linalg as lg
vp = lg.eig(A) # eigen values and vectors
D = N.diag(vp[0]) # diagonalisation of A from its eigen values
P=vp[1] # such as A = P.D.P(-1)
Pm1=lg.inv(P)
但是我怀疑A不能对角化,但这并不能阻止Python计算D、P和P(-1),而不会有任何麻烦.更重要的是,D中的系数是复数,当A中的系数是实的时候,它
我有两个矩阵,我需要在矩阵A的每一列到矩阵B的对应列之间进行卷积,并将结果存储在矩阵y中。 例如,A是一个维数为10 x 5的复矩阵,矩阵b也是一个维数为7 x 5的复矩阵,所以我可以在matlab中这样做: A = randi(10,5) + 1j*randi(10,5);
B = randi(7,5) + 1j*randi(7,5);
for i = 1 : 5
y(:,i) = conv(A(:,i),B(:,i));
end 因此,当我在python中构建该步骤时,如下所示: for i in range(5):
y[:,i]= np.convolve(A[:,
在Octave中有没有一种方法可以只计算和存储矩阵乘积的对角线?
基本上喜欢做的事情:vector = diag(A*B);
我不关心A*B的任何值,除了对角线上的值。矩阵的大小大约是80k x 12和12 x 80k,所以即使我不关心速度/额外的内存,它也不适合内存。
奇怪的是,由于Octave是一个巨大的数据集和对角线非常重要的软件包,所以它应该是可能的。
我试图使用潜在的语义索引来根据一个大型语料库产生的主题来生成两句句子之间的余弦相似度,但我很难找到任何完全符合我所寻找的内容的教程--我发现的最接近的是,但我并不想找到与查询最相似的句子,我特别想使用LSI模型来降低两句句子的维数,然后测量这两句话的余弦相似度。有人能帮忙吗?
从引用的文章中,我想我可能看了下面的代码,然后进行余弦相似度计算?但我被困住了。
import gensim
from gensim import corpora, models, similarities
from gensim.models import LsiModel
# texts = list of lis
我正在编写一个对矩阵进行操作的脚本,我遇到了一个问题,就是需要将前一个矩阵的对角线之和添加到新矩阵的对角线元素中。到目前为止,我为这个特定函数编写的代码(详见下文)如下:
t = 1;
for k = (m-1):-1:-(m-1)
C = bsxfun(@plus, diag(B, k), d);
g(t) = sum(diag(B, k));
t = t + 1;
end
其中d是1x3数组,C应该是3x3数组;但是,C作为1x3数组的输出方式使第一个对角线被求和并添加到d中,然后主对角线被求和并添加到d中,最后的对角线被求和并添加到d中。
是否有一种方法可以使C的
对于我的问题,我只对稀疏实对称矩阵A的几个特征状态(具有最小特征值)感兴趣。据我所知,arpack使用不同的方法,并且应该比LinearAlgebra包的完全对角化快得多。为什么在我的示例中它要慢得多? using LinearAlgebra, SparseArrays, Arpack
A = sprand(5000,4995,0.01) # Matrix with 5-dimensional nullspace
H = sparse(Hermitian(A*A'))
@time E, v = eigen(Matrix(H))
@time E, v = eigs(H, n