Necesito calcular la densidad espectral de potencia promedio después de pasar los paquetes a través de un filtro Butterworth usando MATLAB

2

Estoy tratando de generar 100 paquetes (vectores de fila cada uno de tamaño 8192) de bits aleatorios (1, -1), filtrarlos usando un filtro Butterworth y luego trazar su densidad espectral de potencia promedio. Tengo que hacer esto usando MATLAB. Mi o / p debe ser un sinc filtrado con un pico muy agudo con lóbulos laterales pequeños. No puedo obtener la salida deseada. Quiero que alguien revise mi código para modificaciones por favor. También he adjuntado la imagen de mi salida (lo cual es incorrecto).

%generates a random square matrix of 8192x8192
n=rand(8192);
%initiates a row vector of 64 zeros
B=zeros(1,64);
%makes a butterworth(lowpass) filter
[num,den]=butter(20,.6); 
%two for loops to generate 100 row vectors(packets) each of size 8192 that
%give 1 for any value greater than 0.5 and vice versa
for c=1:100
for k=1:8192
if n(c,k)>=0.5
n(c,k)=1;
else
n(c,k)=-1;
end
%filter the generated vectors and calculate average power spectral density
x=filter(num,den,n(c,:));
A=fftshift(fft(x,64));
psd=A.*conj(A);
B=B+psd;
end
end
plot(B./100)
xlabel 'Frequency', ylabel 'Average Power Spectral Density'
    
pregunta Samia

0 respuestas

Lea otras preguntas en las etiquetas