Hello
I am reproducing the Bayesian Change Detection code by Adams and MacKay. The following is a code for a time series data tem of size T.
T = 3600; lambda = 200; window_size=100; hazard_func = @(r) constant_hazard(r, lambda); % a separate function
R = zeros([T+1]); R(1,1) = 1; muT = mean(tem(window_size:end)); stdT=std(tem(window_size:end)); alphaT = 1; mins = zeros([T+1]); for t=1:T predprobs = studentpdf(tem(t), muT, stdT, 2 * alphaT); % studentpdf is a separate function
H = hazard_func([1:t]'); R(2:t+1,t+1) = R(1:t,t) .* predprobs .* (1-H); R(1,t+1) = sum( R(1:t,t) .* predprobs .* H ); R(:,t+1) = R(:,t+1) ./ sum(R(:,t+1)); muT=[muT; mean(tem(1:t))] stdT=[stdT; std(tem(1:t))]; alphaT = [alphaT; alphaT + 0.5]; mins(t) = find(R(:,t)==min(R(:,t))); end
I keep getting the error
In an assignment A(:) = B, the number of elements in A and B must be the same. Error in bayesian_change (line 84) mins(t) = find(R(:,t)==min(R(:,t)));
I've checked multiple times and the dimensions of both mins and R are the same. I know it is tough to understand the code without prior knowledge, but can anyone help me figure out why I keep getting this error even though the dimensions are the same?
Thanks!
Best Answer