Öngörülebilir sinyaller yaymak için bir ultrasonik hoparlörü kalibre etmeye çalışıyorum, ancak ne yazık ki muhtemelen DSP-fu eksikliğimden dolayı sorun yaşıyorum.
Biraz arka plan
Sahip olduğum kalibre bir kayda olabildiğince yakın sesler çalabilmek istiyorum. Teoriyi anladığım kadarıyla, hoparlör aktarım işlevini bulmam ve onunla yaymak istediğim sinyalleri çözmem gerekiyor. Bunun gibi bir şey (frekans alanında):
X -> H -> XH
Nerede X
yayılan sinyal H
hoparlörler transfer fonksiyonu ve XH
bir X
kere H
. ./
Şimdi bana bir bölünme ( ) vermeli H
.
Şimdi, kalibre edilmiş bir sinyal yaymak için, bölünmesi gerekir H
:
X/H -> H -> X
Ne yapıldı
- Tripodlara 1 m aralıklarla yerleştirilmiş hoparlör ve kalibre edilmiş mikrofon.
- Kaydedilmiş 30+ doğrusal tarama, 20ms uzunluğunda 150KHz-20KHz ve 500 KS / s'de kaydedilmiştir.
- Aşağıdaki Matlab / Octave betiği ile hizalanmış ve ortalaması alınmış sinyaller, betiğin altında ortaya çıkan sinyal görülebilir.
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 dönüştü
X
veXH
yukarıda belirtilen hesaplamaları yaptı, sonuç mantıklı görünüyor. AşağıdaH
(mor) veX/H
(yeşil) normalleştirilmiş bir çizim vardır .
Grafik ilgili frekanslara kesildi.
Lütfen bunu yanlış bir şekilde yapmamı söyleyin.
Benim sorum
Hesaplandıktan sonra X/H
ben zaman alanına geri dönüşümü için gereken, bu basit olacağını kabul ifft(X./H)
ve wavwrite
ama bütün girişimleri defa herhangi makul bir cevap almak için başarısız oldu. Bir frekans vektörü Hf
, H
ve X
bulunabilir burada mat7-ikili formatta.
Belki sadece yorgunum ve burada basit bir çözüm var, ama şu anda göremiyorum. Herhangi bir yardım / tavsiye çok takdir edilmektedir.