function_handler matrix

2 views (last 30 days)
Hyeyun Yang
Hyeyun Yang on 25 Jan 2017
Answered: Andrei Bobrov on 25 Jan 2017
for i = 1:1:3
px(i) = @(x) x(i);
py(i) = @(x) x(i+3);
end
Then the error occurs:
Error using horzcat
Nonscalar arrays of function handles are not allowed; use
cell arrays instead.
So when I change the code:
for i = 1:1:3
px{i} = @(x) x(i); % cell array
py{i} = @(x) x(i+3);
end
But, in this case, I can not calculate with the cell entries:
fun = @(x)((px{1}-px{2}).^2+(py{1}-py{2}).^2).^.5;
fminsearch(fun, [0,0,0,0]);
Then error occurs:
Undefined operator '-' for input arguments of type
'function_handle'.
Error in kequal_4sub2>@(x)((px{1}-px{2}).^2+(py{1}-py{2}).^2).^.5
Error in fminsearch (line 189)
fv(:,1) = funfcn(x,varargin{:});
Error in kequal_4sub2 (line 7)
fminsearch(myfun, [0,0,0,0])
How can I make it possible to calculate with the cell entries?

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 25 Jan 2017
fun = @(x)((px{1}(x)-px{2}(x)).^2+(py{1}(x)-py{2}(x)).^2).^.5;

More Answers (0)

Categories

Find more on Data Types in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!