# Calculating energy and power of a signal

771 views (last 30 days)
I tried this code to calculate energy and power of the input function f(x). but I get error. how can I fix it?
syms x y z energy pow t;
f=input('enter function: ','s');
f = symfun(eval(f), x);
f=f*conj(f);
f = str2func(['@(x)' vectorize(f)]);
z(t)=integral(y,-t,t);
energy=limit(z(t),t=infinity);
pow=limit(z/t,t=infinity)

Walter Roberson on 18 Mar 2018
I suggest that instead of using
f = str2func(['@(x)' vectorize(f)]);
that you use
f = matlabFunction(f);
However, you could just comment out all of your handling of f, as you never use f after you make it into a function handle.
You have
z(t)=integral(y,-t,t);
At this point your y is a symbolic variable. integral() cannot be applied to symbolic variables: you would need to use int(y, -t, t) -- which is a value you can easily predict will be 0, since the integral of y with respect to y over y = a to y = b is 1/2 b^2 - 1/2 a^2 and with a = -t and b = -t that is going to be 1/2 t^2 - 1/2 (-t)^2 which is going to be 0.

geometry geometry on 19 Mar 2018
Thanks helping me. I tried this code and it works well.
syms x y z energy pow;
f=input('enter function: ','s');
f = symfun(eval(f), x);
f=f*conj(f);
f = matlabFunction(f);
y(t)=int(f,-t,t);
energy=limit(y(t),t,inf);
z(t)=y(t)/(2*t);
pow=limit(z(t),t,inf);
geometry geometry on 19 Mar 2018
Now I'm trying to the same works for discrete time signals and I have tried this code:
syms n f z N;
f=input('enter function: ','s');
f = symfun(eval(f), n);
f=f*conj(f);
f = matlabFunction(f);
y(N)=symsum(f, -N , N);
energy=limit(y(N),N,inf);
z(N)=y(N)/(2*N+1);
pow=limit(z(N),N,inf);
but I have several problems. first how can I write the symbols n and N are integers and the second is that symsum doesn't work well. Could you help me?

Mellamputi Sai geetha on 14 Oct 2020
Generate and plot the continuous time signal where a is the 3rd digit of your vtu number. Compute the sketch with the graph obtained from MATLAB and web tool. Determine the energy of the signal x(t).