私は自分のPCに接続したマイクから、matlabを使って周波数応答曲線を得ようとしています。マイクの周波数応答を得る
私は最終的なコードを手に入れるのはかなり終わったと思いますが、私は何か不足していると思います。
close all, clear all, clc
x = 5; % seconds recording
Fs = 44100; % Sampling frequency
T = 1/Fs; % Sample time
L= x*1000; % Length of signal
t = (0:L-1)*T; % Time vector
% Record your voice for 'x' seconds.
recObj = audiorecorder(Fs, 24, 1);
disp('Start of Recording.');
recordblocking(recObj, x);
disp('End of Recording.');
% Store data in double-precision array.
myRecording = getaudiodata(recObj);
NFFT = 2^nextpow2(L); % Next power of 2 from length of y
fourier = fft(myRecording);
Y = fft(myRecording,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);
X = 2*abs(Y(1:NFFT/2+1));
samples = get(recObj,'TotalSamples');
plot(f,X)
title('Single-Sided Amplitude Spectrum)
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')
コードのこの部分は、私が思う正しいです:
は、これは私が今持っているものです。私は5kHzのの音を再生するとき は例えば、私はこのプロットを得る:
今、私はピンクノイズを再生し、デシベルに変換するコードのこの小さな部分を追加しますので、私は周波数応答曲線を得ることができます。
dbX = db(X);
plot(f,dbX)
私は期待して(または私の目標です。)周波数応答曲線(あなたがたとえばGoogle画像検索で見つけることができるように、私は2つの以上のリンクのための十分な評判を持っていないので、申し訳ありません、私は」なかったのトンここに画像リンク)を使用しますが、私の代わりにこれを得た:
明らかに私が何か間違ったことをやっているが、私はあなたが思うよりも近いものを...
こんにちは、私はこれについてあまりよく分かりませんが、なぜピンクノイズの周波数プロットが間違っていますか?あなたは何を期待していますか? –
私の目標は、このようなものを得ることです:http://www.acoustics.salford.ac.uk/acoustics_info/microphones/microphones_files/image013.jpg 鉱山は0dB付近でさえも、フラットラインでもない.. –
それは信号のスケーリングの問題に過ぎません。プロットには「相対的な応答」と書いてあることにも注意してください。 – mpaskov