Я написал следующий фрагмент подкода (с комментариями параметров) для алгоритма итерации политики Эйлера. Когда я пытаюсь запустить тело функции (все, что ниже глобального), например, a1 = 1, оно работает и возвращает скаляр. Однако, когда я вызываю функцию как euler_diff_test(1), я получаю сообщение об ошибке. (Вставлено ниже)
function diff = euler_diff_test(a1)
%the following comments are example parameters. They are in the global line originally.
% r = 0.2, a = 0.5, y = 1.1, a_grid = linspace(0.5,7,100)
%policy_guess = zeros(2,N);
%policy_guess(1,:) = 0.3*a_grid;
%policy_guess(2,:) = 0.3*a_grid;
% M = zeros(2,2); %M for markov transition kernel
% M(1,1) = p;
% M(2,2) = p;
% M(2,1) = 1-p;
% M(1,2) = 1-p;
% j = 1
global r a y a_grid policy_guess M j;
c = (1+r)*a + y - a1; %consumption formula
if c<=1e-02 %don't care about consumption being negative
diff = 888888888888888888888;
else
policy_func = interp1(a_grid', policy_guess', a1, 'linear');
diff = 1/c - beta*(1+r)*(1 ./ policy_func)*M(j,:)';
end
end
a_grid
, который вы не показываете, этот первый вызовinterp1
будет иметь свой первый ввод,x
не являющийся вектором. О чем говорит ошибка. вам нужен минимальный воспроизводимый пример, чтобы мы могли помочь в отладке - person Ander Biguri   schedule 28.07.2020% call you mum
, но если это комментарий, он ничего не делает... Вы хотите сказать, что определяете эти строки вне функции? Их недостаточно, чтобы быть минимально воспроизводимым примером, поскольку, например, N и p не определены. - person Ander Biguri   schedule 28.07.2020