Hi! Can you guys help mi with this code? The error is "Undefined function 'plus' for input arguments of type 'function_handle'."

6 visualizaciones (últimos 30 días)
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

Respuesta aceptada

Steven Lord
Steven Lord el 6 de Nov. de 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 comentarios
Walter Roberson
Walter Roberson el 7 de Nov. de 2016
Editada: Walter Roberson el 7 de Nov. de 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));

Iniciar sesión para comentar.

Más respuestas (1)

Geoff Hayes
Geoff Hayes el 6 de Nov. de 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 comentarios
Felipe neut
Felipe neut el 6 de Nov. de 2016
Editada: Felipe neut el 6 de Nov. de 2016
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 :)

Iniciar sesión para comentar.

Categorías

Más información sobre Mathematics en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by