Я пытаюсь найти спектр мощности сигнала. Длина сигнала 100000
, частота выборки 1000Hz
, а количество баллов - 100000
. Я нашел спектр мощности, используя два подхода. Первый состоит в том, чтобы взять всю длину как одну часть и найти спектр мощности для нее, а второй подход - делить сигнал на 100*1000
и найти спектр для каждой строки, затем получить среднее значение для всех строк. Моя проблема в том, что я должен получить тот же ответ в обоих подходах, но у меня есть разные ответы. Я не знаю, в чем ошибка в моем коде.Поиск спектра мощности сигнала с использованием двух подходов
N=100000;
SF=1000;
a=0.1;
b=0.3;
amplitude1=1;
amplitude2=0.5;
t=0:1/SF:100;
f1=SF*a;
f2=SF*b;
A=amplitude1*sin(2*pi*f1*t)+amplitude2*sin(2*pi*f2*t);
Y=2*randn(1,length(A))+A;
bin=[0 :N/2];
fax_Hz=(bin*SF)/N;
FFT=fft(Y);
spectra=2/(SF*length(Y))*(FFT.*conj(FFT));
plot(fax_Hz,spectra(1,1:50001));
D=reshape(Y(1,1:100000),[100,1000]);
M=length(D(1,:));
for i=1:100
FFT_1(i,:)=fft(D(i,:));
S(i,:)=(2/(SF*M))*(FFT_1(i,:).*conj(FFT_1(i,:)));
end
S_f=mean(S);
figure
plot (S_f);
Я просто обновляю код. Я не знаю, но когда я добавил шум, чтобы сигнализировать, что два сюжета выглядят смещенными.
Благодарим за помощь. Пожалуйста, я не знаю, но когда я добавил шум к сигналу, оба сюжета выглядят смещенными. Я просто обновляю код, чтобы увидеть это. – user6052232
Я не могу воспроизвести эту проблему. Из вашего кода удалите все из «bin» ниже и замените его кодом, который я разместил. (очевидно, переименовать 'A' в' Y') – mpaskov