Why do I get "Array indices must be positive integers or logical values"

2 views (last 30 days)
Very new at matlab, i'm trying to fit linear function to a set of values. I keep getting "Array indices must be positive integers or logical values"
Please advise.
x = [62857 63320 63202 64754 64109 64298]'; % Population
y = [16366669 16864938 17087795 17224537 17301839 17095073]'; % Ridership
n = numel(y); % number of points being fitted
plot(x,y, '+')
A = [ones(6,1), x]; % design matrix
m = size(A,2); % parameters that we want fitted
b = A \ y;
f(x) = b(1) + b(2) *x;
xi = linspace(0,100);
fxi = f(xi);
plot(x, y, '+', xi, fxi)

Accepted Answer

Mauro Fusco
Mauro Fusco on 25 Apr 2019
Arrays in Matlab are indexed starting from 1. Just replace xi = linspace(0,100); with
xi = linspace(1,100);
and it will not give error.

More Answers (1)

Walter Roberson
Walter Roberson on 25 Apr 2019
Edited: Walter Roberson on 25 Apr 2019
Also, your x range is about 60000, but the range over which you plot the projected line is 0 to 100.
plot(x, y, '+', x, polyval(flipud(b), x))

Community Treasure Hunt

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

Start Hunting!