我想为某些代码创建随机测试实例,该实例依赖于稀疏正半定矩阵。
Matlab 具有函数 sprandsym(n,密度,rc),该函数创建具有特征值 rc 的随机稀疏对称矩阵,因此非负向量 rc 会生成 PSD 矩阵。
有没有办法在 python 中重新创建这个函数?
我找到了各种解决方案来创建随机稀疏矩阵或随机 PSD 矩阵。我还找到了将两者组合的解决方案,方法是创建一个随机稀疏矩阵,如果不是 PSD,则添加单位矩阵直到它是 PSD(即最小特征值时间的绝对值)。但这个解决方案创建了对角占优矩阵,不幸的是这不足以满足我所需的测试实例。
您可以使用this answer提供的功能它依赖于 scipy 和 numpy ,应该可以满足您的需求:
def sprandsym(n, density):
rvs = stats.norm().rvs
X = sparse.random(n, n, density=density, data_rvs=rvs)
upper_X = sparse.triu(X)
result = upper_X + upper_X.T - sparse.diags(X.diagonal())
return result
我是一名优秀的程序员,十分优秀!