什么是eig的倍数(X,'不平衡')

时间:2010-11-13 17:45:22

标签: matlab octave markov-chains

我试图找到马尔可夫链的平衡分布,这意味着找到表示它的转移矩阵的特征值,然而,eig函数自动归一化它返回的特征向量,在MatLab中有一个你可以通过的标志到停止这种行为的功能

  

eig(X,'不平衡')

其中X是矩阵。见http://www.mathworks.com/help/techdoc/ref/eig.html。但是,当我在八度音阶中尝试这个时,我只是得到一个错误:

  

错误:eig:错误的类型参数`sq_string'

我应该调用一些其他功能吗?

干杯

1 个答案:

答案 0 :(得分:1)

如果您的目标是计算马尔可夫链的均衡分布,请查看mcStatDist中的PMTK3 toolbox函数实现。它显示了计算结果的四种不同方法。例如:

TR = rand(3,3);                          %# random transition matrix
TR = bsxfun(@rdivide, TR, sum(TR,2));    %# normalize so that rows sum to one

[V,D] = eig(TR');                        %'# eigen-decomposition
EQ = V(:,1) ./ sum(V(:,1));              %# state equilibrium distribution

如链接代码的注释中所述,对于某些情况,此方法在数值上可能不稳定,因此您可能需要考虑其他选项之一......