Error Attempted to access x(2,1); index out of bounds because size(x)=[1,4]
1 次查看(过去 30 天)
显示 更早的评论
I am using Genetic Algorithm Toolbox(GUI). My fitness function is;
function y=regressionfcn(x)
for j=1:30
y= -0.0249 - 0.2075* x(j,1) - 0.3313* x(j,2) - 0.0731* x(j,3) - 0.0738* x(j,4);
end
end
But there occurs error as
Error Attempted to access x(2,1); index out of bounds because size(x)=[1,4]
0 个评论
回答(2 个)
Sean de Wolski
2012-5-25
Apparently the regression function is fed a row vector rather than a column vector. To fix this, use:
J(1,2) or to be even safer just use j(2).
Walter Roberson
2012-5-25
The fitness function for ga is expected to take a row vector as input.
Are you really trying to fit 120 parameters?? Is there any reason you are not using a simple linear regression instead of ga() ?
4 个评论
Walter Roberson
2012-5-25
function y=regressionfcn(x)
y= -0.0249 - 0.2075 * x(:,1) - 0.3313 * x(:,2) - 0.0731 * x(:,3) - 0.0738 * x(:,4);
end
This should be more efficient. Also note that your previous code overwrote "y" in each loop iteration.
The body could, I think, be made even more efficient as just
y = [ones(size(x,1),1) x] * [-0.0249 -0.0275 -0.3313 -0.0731 -0.0738];
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Genetic Algorithm 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!