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

采纳的回答

Steven Lord
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
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
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 个评论
Felipe neut
Felipe neut 2016-11-6
编辑:Felipe neut 2016-11-6
Oo sorry.. the problem is for l from 0 to 7, M=19, N=7. I have no more datas in the problem, and should achieve to this graph. Thanks again really :)

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Mathematics 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by