Hi! Can you guys help mi with this code? The error is "Undefined function 'plus' for input arguments of type 'function_handle'."
6 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Steven Lord
2016-11-6
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 个评论
Walter Roberson
2016-11-7
编辑:Walter Roberson
2016-11-7
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));
更多回答(1 个)
Geoff Hayes
2016-11-6
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 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

