Array indices must be positive integers or logical values.

3 views (last 30 days)
Hello everyone! I am having a hard time making the following function work, as I keep getting the message "Array indices must be positive integers or logical values". What could be the problem??
function[p]=map_funct(alpha, beta, lambda, gamma, Num, gf, gc, w, F, r, D, N, p0)
alpha=2.1;
beta=15;
D=1;
F=3;
r=0.01;
Num=100;
gf=0.5;
gc=0.3;
lambda=1;
gamma=0.35;
w=0.5;
N=1200;
p0=2.95;
p=zeros(N,1);
p(1)=p0;
for k=1:N-2
p(k+1)=p(k)+gamma*Num*((w*gf*(F-p(k))+(1-w)*gc*(p(k)-F))./(1+exp(-lambda*(alpha*((D/F)-r)+beta*((p(k-1)-p(k-2))./p(k-1))))));
%
% line([p(k),p(k)],[p(k),p(k+1)]);
% line([p(k),p(k+1)],[p(k+1),p(k+1)]);
%
%
end
  2 Comments
KSSV
KSSV on 9 Apr 2020
You have used p(k-1), p(k-2) in your formula.....when your indices start with 2...p(k-2) ,will be zero and you will get error.

Sign in to comment.

Accepted Answer

madhan ravi
madhan ravi on 9 Apr 2020
1-1=0, 1-2=-1, MATLAB likes only positive numbers greater than zero :)

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!