Я создал этот код с нуля.Я хочу составить график и / или гистограмму из моих "Наблюдаемых" и "Состояние" (это 2 матрицы).Некоторая проблема возникает на 200-й итерации, когда моя матрица состояний просто становится равной 0, данные не вводятся в матрицу состояний.Кто-нибудь может устранить неисправность кода?Мои возможные состояния: {1,2,3}.
ОБНОВЛЕНИЕ: Когда я настраиваю свое значение n, оно регулирует, сколько длины T он заполнит.Итак, n = 5, работает только для 1/5 от T и n = 1, для всей длины T. Мне нужна матрица nxT в конце (5X1000).Проблема заключается в том, как я настраиваю свои циклы for.Я все еще не могу решить ошибку, хотя.
%Initialize A,pi,T
N = 3; # of states
%A is transition prob matrix
A = [.99,.005,.005;.005,.990,.005;.005,.005,.990];
%pi is initial state vector
pi = [1/3,1/3,1/3];
%T is # of observations per simulation
T = 1000;
%n is # of simulations
n = 5;
%Allocate space for the state matrix
State = zeros(n,T);
Observe = zeros(n,T);
%Create dummy emission matrix, must be row stochastic
B = ones(n,T)./T;
%loop over # of simulations
for i=1:1:n
x = rand(1);
if x <= (1/3)
State(i,1) = 1;
elseif x > (1/3) && x <= (2/3)
State(i,1) = 2;
else
State(i,1) = 3;
end
if State(i,1) == 1
b = -1;
elseif State(i,1) == 2
b = 0;
else
b = 1;
end
Observe(i,1)= normrnd(b,1);
for k=2:1:T
%Possible state 1,2,3
State(k) = randsample(N, 1, true, A(State(k-1),:));
if State == 1
c = -1;
elseif State == 2
c = 0;
else
c = 1;
end
Observe(i,k)= normrnd(c,1);
end
end