Index in position 1 exceeds array bounds (must not exceed 26)

조회 수: 1 (최근 30일)
Addisu Anteneh Dilnessa
Addisu Anteneh Dilnessa 2020년 6월 26일
답변: Walter Roberson 2020년 6월 26일
hello guys, i am trying to run the following code but it says "Index in position 1 exceeds array bounds (must not exceed 26)."
theta_post_2=[beta_post_prod1,sigma2_post_prod1];
sigma2_start = 1;
lblx = {'CONSTANT';'Head_Sex'; 'Edu';'HHsize'; 'Offfarm';'Distance_output';'Distance_Input';'Asset_Value';'Plot_Size' ;'Plot_Distance';'Seed_Value' ; 'Remit';'Confid';'Credit';'highfer';'mediumfer';'flatslop';'Slightslop';'Sever_err' ;'Mild_err';'Tenur';'Pulses';'Cereals';'Femalehr';'Malehr';'Improved_Var'};
disp('');
disp(' GIBBS SAMPLER RESULTS ');
disp('=============================================================================');
disp(' Beta sd Prctile 2.5 Prctile 97.5 ');
for i=1:size(theta_post_2,2)
fprintf('%-10s %11.4f %11.4f %11.4f %11.4f\n', ...
lblx{i,1}, [mean(theta_post_2(:,i)), std(theta_post_2(:,i)), prctile(theta_post_2(:,i), 2.5), prctile(theta_post_2(:,i), 97.5)]);
end
disp('-----------------------------------------------------------------------------');
disp(['Number of obs: ' num2str(N)]);
disp(['Number of replications: ' num2str(reps)]);
disp(['Burn-in length: ' num2str(burn)]);
disp(['Starting value: ' num2str(sigma2_start)]);
disp('=============================================================================');

답변 (2개)

the cyclist
the cyclist 2020년 6월 26일
You haven't provided enough info to run your code, which would make debugging much easier. You also didn't tell us which line gives that error.
But, I notice that your varialbe lblx is length 26.
So, I am going to guess that the error comes from this expression:
lblx{i,1}
and that the variable i in the for loop gets to be larger than 26, because theta_post_2 is larger than length 26.

Walter Roberson
Walter Roberson 2020년 6월 26일
lblx = {'CONSTANT';'Head_Sex'; 'Edu';'HHsize'; 'Offfarm';'Distance_output';'Distance_Input';'Asset_Value';'Plot_Size' ;'Plot_Distance';'Seed_Value' ; 'Remit';'Confid';'Credit';'highfer';'mediumfer';'flatslop';'Slightslop';'Sever_err' ;'Mild_err';'Tenur';'Pulses';'Cereals';'Femalehr';'Malehr';'Improved_Var'};
That is 26 entries in lblx.
for i=1:size(theta_post_2,2)
fprintf('%-10s %11.4f %11.4f %11.4f %11.4f\n', ...
lblx{i,1}, [mean(theta_post_2(:,i)), std(theta_post_2(:,i)), prctile(theta_post_2(:,i), 2.5), prctile(theta_post_2(:,i), 97.5)]);
end
lblx{i,1} is used up to lblx(size(theta_post_2,2), 1). But as outside observers, we have no reason to know that size(theta_post_,2) is at most 26.
theta_post_2=[beta_post_prod1,sigma2_post_prod1];
I wonder if that should be
theta_post_2 = [beta_post_prod1; sigma2_post_prod1];

카테고리

Help CenterFile Exchange에서 Time Series에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by