Hi! Can you guys help mi with this code? The error is "Undefined function 'plus' for input arguments of type 'function_handle'."
6 views (last 30 days)
Show older comments
clc; clear;
rect = @(n) rectangularPulse(-0.5,0.5,n);
sum = 0;
for i=0:7
a = @(n) (rect((n-19*i)/7));
sum = sum + a;
fplot(sum,[0,500]);
end
0 Comments
Accepted Answer
Steven Lord
on 6 Nov 2016
You cannot add a function handle and a number or two function handles.
You can add the value returned by evaluating a function handle and a number.
fh1 = @(x) x.^2;
y = 1 + fh1(2) % works
y = 1 + fh1 % does not work
If you need a function handle as the output:
fh2 = @(x) x+1;
fh3 = @(x) sqrt(x);
fh4 = @(x) fh2(x) .* fh3(x)
This last is equivalent to:
fh4a = @(x) (x+1) .* sqrt(x)
3 Comments
Walter Roberson
on 7 Nov 2016
Edited: Walter Roberson
on 7 Nov 2016
fplot() is to plot functions given their handle or symbolic expression. You are passing in a numeric scalar, c, instead.
for i=0:7
a = @(n) (rect((n-19*i)/7));
c(i+1) = a(i);
end
plot(0:7, cumsum(c));
More Answers (1)
Geoff Hayes
on 6 Nov 2016
Felipe - the error message is due to the line
sum = sum + a;
where you are trying to add a running total (named sum which is a poor choice of a local variable name since it conflicts with a MATLAB built-in function) with an anonymous function a
a = @(n) (rect((n-19*i)/7));
So the error message makes sense. How should you be evaluating a? What should n be?
3 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
