FFTのピーク周波数以外の周波数のレベルを下げることはできますか?
Show older comments
100kHz正弦波を周波数1MHzでサンプリングした信号を2048点でFFTした場合に、振幅1、10^-5、10^-10の正弦波いずれも、ピーク高-30~40dBあたりに下辺のレベルが形成されて同じような形状の波形が形成されます。 これを、共通した最小のレベルが形成されて、そこから振幅に比例した高さのピークが立つような波形にすることは可能でしょうか。 使用したコードは以下です。
Fs = 1e+6; % サンプリング周波数
Ts = 1/Fs; % サンプリング周期
Ls = 2048; % サンプル数
t = (0:Ls-1)*Ts; % 時刻ベクトル
Fi = Fs * 0.1; % 入力正弦波周波数
x1 = (1e-0)*sin(2*pi*Fi*t); % 振幅1
x2 = (1e-5)*sin(2*pi*Fi*t); % 振幅10^-5
x3 = (1e-10)*sin(2*pi*Fi*t); % 振幅10^-10
if 0
for i=1:Ls
%%ハン窓
x1(i) = x1(i) * (0.5-0.5*cos(2*pi*(i-1)/(Ls-1)));
x2(i) = x2(i) * (0.5-0.5*cos(2*pi*(i-1)/(Ls-1)));
x3(i) = x3(i) * (0.5-0.5*cos(2*pi*(i-1)/(Ls-1)));
%%ブラックマン・ハリス窓
x1(i) = x1(i) * (0.35875-0.48829*cos(2*pi*(i-1)/(Ls-1))+0.14128*cos(4*pi*(i-1)/(Ls-1))-0.01168*cos(6*pi*(i-1)/(Ls-1)));
x2(i) = x2(i) * (0.35875-0.48829*cos(2*pi*(i-1)/(Ls-1))+0.14128*cos(4*pi*(i-1)/(Ls-1))-0.01168*cos(6*pi*(i-1)/(Ls-1)));
x3(i) = x3(i) * (0.35875-0.48829*cos(2*pi*(i-1)/(Ls-1))+0.14128*cos(4*pi*(i-1)/(Ls-1))-0.01168*cos(6*pi*(i-1)/(Ls-1)));
end
end
y1 = fft(x1);
P21 = 10*log10(abs(y1/Ls));
P11 = P21(1:Ls/2+1);
y2 = fft(x2);
P22 = 10*log10(abs(y2/Ls));
P12 = P22(1:Ls/2+1);
y3 = fft(x3);
P23 = 10*log10(abs(y3/Ls));
P13 = P23(1:Ls/2+1);
f = Fs*(0:(Ls/2))/Ls;
hold off;
plot(f,P11);
hold on;
plot(f,P12);
hold on;
plot(f,P13);
xlabel('f (Hz)')
ylabel('|P| (dB)')
途中の窓関数を掛けても全体の症状は変わりません。宜しくお願い致します。
Accepted Answer
More Answers (0)
Categories
Find more on 変換 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!