⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hmm_generate.m

📁 数据挖掘经典算法matlab实现
💻 M
字号:
function out = HMM_generate(a,b,initial,seq_len)

% Generate a Markov sequence
%
% Inputs:
%	a			- Transition probability matrix
%	b			- Output generator matrix
%	initial	- Initial state
%	seq_len	- Required sequence length
%
% Output:
%	out		- A Markov sequence

%Check if the data is valid
if ((sum(abs(sum(a') - 1) > 1e-10) ~= 0) | (sum(abs(sum(b') - 1) > 1e-10) ~= 0)),
   error('Input matrices are incorrect')
end

%Make the sequence
out		  = zeros(1,seq_len);
curr_state = initial;

for i = 1:seq_len,
   out(i)	  = draw(b(curr_state,:));
   next_state = draw(a(curr_state,:));
end


function index = draw(probabilities)

%Select a class based on a probability vector
N 	= 1000;
P	= cumsum(probabilities);
P	= round([0 P]*N);
I	= zeros(1,N);

for i = 1:length(probabilities),
   I(P(i)+1:P(i+1)) = i;
end

%Mix the vector
I	= I(randperm(N));

index = I(1);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -