矩阵(256*256)的行列式可能是无限的

Posted

技术标签:

【中文标题】矩阵(256*256)的行列式可能是无限的【英文标题】:it is possible determinant of matrix(256*256) be infinite 【发布时间】:2014-02-19 21:46:46 【问题描述】:

我有 (256*1) 个特征向量来自 (16*16) 个灰度图像。向量数量为 550 当我计算这个向量的样本协方差并计算协方差矩阵行列式时 答案是inf

有限范围 (0:255) 值的有限矩阵的行列式可能是无限的,或者我在哪里弄错了?

事实上,我想要使用贝叶斯估计进行分类,我的分布是高斯分布,当 我计算行列式为 inf ,最终答案(可能性)为零。

我的部分代码:

Mean =  mean(dataSet,2);
MeanMatrix = Mean*ones(1,NoC);
Xc = double(dataSet)-MeanMatrix; % transform data to the origine
Sigma = (1/NoC) *Xc*Xc'; % calculate sample covariance matrix 
Parameters(i).M = Mean';
Parameters(i).C = Sigma;

likelihoods(i) = (1/(2*pi*sqrt(det(params(i).C)))) * (exp(-0.5 * (double(X)-params(i).M)' * inv(params(i).C) * (double(X)-params(i).M)));

变量 i 显示我的课程; 变量 X 显示我的特征向量;

【问题讨论】:

也许你超出了浮点范围? 256**256 是一个相当大的数字,其中有 256! 【参考方案1】:

这种矩阵的行列式可以是无限的吗?不,它不能。

它可以评估为无限吗?当然是。

这是一个矩阵的示例,其中包含有限数量的元素,这些元素不是太大,但行列式很少会评估为有限数:

det(rand(255)*255)

【讨论】:

这是另一个:det(5*eye(500)) 也许是matlab因为值大而用inf估计大的不是? @alikiani 实际上,太大的值将被评估为Inf。您应该将您的预期结果(以及任何中间结果)与realmax 进行比较,看看它们是否太大。【参考方案2】:

不,这是不可能的。它可能是单数的,但取值较大的元素将具有决定性的价值。

【讨论】:

【参考方案3】:

在您的情况下,可能发生的情况是您的数据点太少而无法生成全秩协方差矩阵。

例如,如果您有 N 示例,每个示例的维度为 dN<d,那么您的 d x d 协方差矩阵将不是满秩的,并且行列式为零。

在这种情况下,不存在矩阵逆(精度矩阵)。但是,尝试计算逆的行列式(通过采用1/|X'*X|=1/0 -> \infty)将产生无穷大的值。

解决此问题的一种方法是将协方差设置为X'*X+eps*eye(d),其中eps 是一个小值。这种技术对应于对X 的元素进行弱先验分布。

【讨论】:

以上是关于矩阵(256*256)的行列式可能是无限的的主要内容,如果未能解决你的问题,请参考以下文章

非常大矩阵的行列式值

((C ++)函数来计算动态矩阵的行列式]

导出数据超出EXCEL行列本身限制时如何解决!!!

线性代数——矩阵与矩阵乘法

矩阵树定理

矩阵的行列式怎么求?