Saya mencoba untuk mengkalibrasi speaker ultrasonik dengan tujuan memancarkan sinyal yang dapat diprediksi, tetapi sayangnya saya terus mengalami masalah, mungkin karena kurangnya DSP-fu.
Sedikit latar belakang
Saya ingin dapat memutar suara sedekat mungkin dengan rekaman yang saya kalibrasi. Sejauh yang saya mengerti teori, saya perlu menemukan fungsi transfer speaker dan mendekonvolusi sinyal yang ingin saya pancarkan dengannya. Sesuatu seperti ini (dalam domain frekuensi):
X -> H -> XH
Di mana X
adalah sinyal yang dipancarkan H
adalah fungsi transfer speaker dan XH
merupakan X
kali H
. Divisi ( ./
) sekarang harus memberi saya H
.
Sekarang, untuk memancarkan sinyal terkalibrasi, itu harus dibagi dengan H
:
X/H -> H -> X
Apa yang telah dilakukan
- Speaker ditempatkan dan mikrofon yang dikalibrasi terpisah 1 m pada tripod.
- Tercatat 30+ linear menyapu 150KHz-20KHz, panjang 20ms, dan direkam @ 500 KS / s.
- Sinyal selaras dan rata-rata dengan skrip Matlab / Oktaf di bawah ini, di bawah skrip sinyal yang dihasilkan dapat dilihat.
files = dir('Mandag*');
rng = [1.5e6, 1.52e6];
[X, fs] = wavread(files(1).name, rng);
X = X(:,1);
for i=2:length(files)
[Y, fs] = wavread(files(i).name, rng);
sig = Y(:,1);
[x, off] = max(xcorr(X', sig'));
off = length(X) - off;
if(off < 0)
sig = [zeros(1, -off), sig(1:end+off)'];
elseif (off > 0)
sig = [sig(off:end)', zeros(1, off-1)];
end
X = X + sig';
end
X = X/length(files);
Fourier mengubah
X
danXH
dan melakukan perhitungan yang disebutkan di atas, hasilnya terlihat masuk akal. Di bawah ini adalah plot dinormalisasiH
(ungu) danX/H
(hijau).
Plot telah dipotong ke frekuensi yang relevan.
Tolong beri tahu saya jika saya salah tentang hal ini.
Pertanyaan saya
Setelah menghitung X/H
saya perlu mengubahnya kembali ke domain waktu, saya berasumsi ini akan menjadi sederhana ifft(X./H)
dan wavwrite
, tetapi semua upaya saya sejauh ini gagal mendapatkan jawaban yang masuk akal. Sebuah vektor frekuensi Hf
, H
dan X
dapat ditemukan di sini dalam format mat7-biner.
Mungkin saya lelah dan ada solusi sederhana di sini, tetapi saat ini saya tidak bisa melihatnya. Bantuan / saran sangat dihargai.