pues es que si puedes calcularla con esa funcion pero de todos modos tienes muestrear y despues sacar su transformada de fourier a esa señal
el detalle es que tienes que muestrear una señal continua, por ejemplo el caso tipico de un coseno donde y=cos( 2* pi * f * t )
entonces al muestrearlo, la variable del tiempo sera t=nTs que en terminos de matlab quedaria por ejemplo:
t= - 1: Ts: 1;
y=cos( 2* pi * f * t );
donde obtendras valores en este caso de la señal de -1 a 1 segundo en pasos de Ts segundos. La frecuencia de muestreo es fm= 1/Ts quedando en matlab:
fm=1000;
t= - 1: 1/fm : 1;
y=cos( 2* pi * f * t );
tu frecuencia de muestreo debe ser mayor por lo menos 2 veces la frecuencia maxima que su señal tenga fm > 2f , si tu coseno tiene una frecuencia de 100 hertz minimo tu frecuencia de muestreo debe ser de 200 hertz.
ya que hayas cumplido esa condicion tienes que sacar su tranformada de fourier con la funcion fft, luego la densidad espectral la calculas multiplicando tu resultado por su conjugado:
Y=fft(y);
PDS=Y.*conj(Y);
y de esa manera tienes la densidad de potencia espectral
finalmente para definir tu eje de frecuencias, por cada muestra que tengas el incremento en frecuencia debe de ser fm/muestras inicando desde 0 hasta fm-fm/muestras
F= 0: fm/muestras : fm-fm/muestras;
donde muestras es tu longitud de tu vector y o Y
y finalmente graficalo
stem(F,PDS)
como ejemplo:
clc;
clear;
fm=1000;
f=100;
t=-1:1/fm:1;
y=cos(2*pi*f*t);
muestras=length(y);
Y=fft(y);
PDS=Y.*conj(Y);
F=0:fm/muestras:fm-fm/muestras;
stem(F,PDS)
en fin es un buen rollo pero espero que te sirva ñ_ñ