Я пытаюсь создать 100 пакетов (векторы строк каждого размера 8192) случайных битов (1, -1), фильтровать их с помощью butterworth фильтруют, а затем определяют их среднюю спектральную плотность мощности. Я должен сделать это с помощью MATLAB.My o/p должен быть отфильтрованным sinc с очень резким пиком. Когда я использую этот код для пакетов меньшего размера, скажем, что 100 работает. Но для 8192 это не так. Я хочу, чтобы кто-то просмотрел мой код для ошибок, пожалуйста.Мне нужно вычислить среднюю спектральную плотность мощности после прохождения пакетов через фильтр масляного фильтра с использованием MATLAB
%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'
@phyrox ... спасибо миллион! Наконец, я получаю o/p для такого большого i/p. – Samia
Но я все еще не получаю желаемого о/р, который должен быть пиком – Samia