您的位置:首页 > 其它

李航 统计学习方法第十章 HMM 答案

2018-02-08 10:29 573 查看
10.1题function  HMMA = [0.5,0.2,0.3;0.3,0.5,0.2;0.2,0.3,0.5];B = [0.5,0.5;0.4,0.6;0.7,0.3];pi0 = [0.2,0.4,0.4]';O = [1,2,1,2];sizes = length(O);beita = zeros(3,sizes);alpha = zeros(3,sizes);beita(:,sizes) = 1;alpha(:,1) = pi0.*B(:,O(1));for i=sizes-1:-1:1beita(:,i) = A*(beita(:,i+1).*B(:,O(i+1)));endfor i = 2:sizesalpha(:,i) = (alpha(:,i-1)'*A)'.*B(O(i));endP = pi0'*(beita(:,1).*B(:,O(1)));结果:10.2题MATLAB 代码下function  HMMA = [0.5,0.2,0.3;0.3,0.5,0.2;0.2,0.3,0.5];B = [0.5,0.5;0.4,0.6;0.7,0.3];pi0 = [0.2,0.4,0.4]';O = [1,2,1,1,2,1,2,2];sizes = length(O);beita = zeros(3,sizes);alpha = zeros(3,sizes);beita(:,sizes) = 1;alpha(:,1) = pi0.*B(:,O(1));for i=sizes-1:-1:1beita(:,i) = A*(beita(:,i+1).*B(:,O(i+1)));endfor i = 2:sizesalpha(:,i) = (alpha(:,i-1)'*A)'.*B(O(i));endP = alpha(3,4)*beita(3,4)/(alpha(:,4)'*beita(:,4));end结果:10.3题(先算10.2的情况)function  HMMA = [0.5,0.2,0.3;0.3,0.5,0.2;0.2,0.3,0.5];B = [0.5,0.5;0.4,0.6;0.7,0.3];pi0 = [0.2,0.4,0.4]';O = [1,2,1,1,2,1,2,2];sizes = length(O);I = zeros(1,sizes);delta = zeros(3,sizes);fai = zeros(3,sizes-1);delta(:,1) = pi0.*B(:,O(1));fai(:,1) = 0;for i = 2 :sizesdelta(:,i) = (max(repmat(delta(:,i-1),1,3).*A,[],1))'.*B(:,O(i));[ MMMMM, fai(:,i)] = max(repmat(delta(:,i-1),1,3).*A,[],1);endP = max(delta(:,sizes));[MMMMM,I(sizes)] = max(delta(:,sizes),[],1);I(1:sizes-1) = fai(I(sizes),2:end);end隐状态的序列如上简单 修改代码为O=[1,2,1,2]就可以得到10.1的隐藏序列答案自己写代码算的  供参考,如果有错谢谢大家指正,我也是搜不到答案才这样的
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: