신호의 파워 스펙트럼을 찾으려고합니다. 신호의 길이는 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