矩阵(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
示例,每个示例的维度为 d
和 N<d
,那么您的 d x d
协方差矩阵将不是满秩的,并且行列式为零。
在这种情况下,不存在矩阵逆(精度矩阵)。但是,尝试计算逆的行列式(通过采用1/|X'*X|=1/0 -> \infty
)将产生无穷大的值。
解决此问题的一种方法是将协方差设置为X'*X+eps*eye(d)
,其中eps
是一个小值。这种技术对应于对X
的元素进行弱先验分布。
【讨论】:
以上是关于矩阵(256*256)的行列式可能是无限的的主要内容,如果未能解决你的问题,请参考以下文章