I have an inline object defined in the following manner (Part of code):
for o= 1 : 6
f = inline('min(x.+d(o,5),-x.+d(o,3))');
%%where d is a matix
.
.
for k= 1 : 3
.
.
val (k)=f(Pbest (k,1));
end
end
Error using inline/subsref (line 13) Not enough inputs to inline function.
No products are associated with this question.
The way you have defined you inline function, it is going to contain the variable o, rather than replacing it with the loop's value of o.
I think what you want instead is this:
f = inline(['min(x.+d(',num2str(o),',5),-x.+d(',num2str(o),',3))'])
Also, o is a terrible name for a variable. ;-)
I see several issues:
Below is a working example:
f = inline('min(x+d(o,3),-x+d(o,3))','x','o','d')
f(1,2,magic(5))
First, you only need to define your 'inline' function once, ideally near the beginning of your code. Put it before your loop.
Second, it needs to know what you want it to do, so you have to specify your arguments to it:
f = inline('min(x+d(o,5), -x+d(o,3))', 'x', 'd', 'o');I have no idea what you want to do with your 'val(k) = ...' assignment, since it doesn't seem to match what you want 'f' to do.
Third, in my experience, it's not necessary to use the '.' operator with '+' and '-' since they operate element-wise anyway. It's only necessary to use it with '*', '/', and '^'.
1 Comment
Direct link to this comment:
http://mathworks.com/matlabcentral/answers/42849#comment_88094
I recommend you use anonymous functions instead of inline.