অনুমানযোগ্য সংকেত নির্গমনের লক্ষ্যে আমি একটি অতিস্বনক স্পিকারকে ক্যালিব্রেট করার চেষ্টা করছি, তবে হায় আমি ডিএসপি-ফু এর অভাবে সম্ভবত সমস্যায় পড়ে যাচ্ছি।
একটু ব্যাকগ্রাউন্ড
আমার কাছে থাকা ক্যালিব্রেটেড রেকর্ডিংয়ের সাথে আমি যতটা সম্ভব প্লেব্যাক শোনার পক্ষে সক্ষম হতে চাই। আমি যতক্ষণ তত্ত্বটি বুঝতে পারি, আমার স্পিকার স্থানান্তর ফাংশনটি খুঁজে বের করতে হবে এবং আমি যে সংকেতগুলি দিয়ে এটি প্রকাশ করতে চাই তা ডিকনভলভ করতে হবে। এরকম কিছু (ফ্রিকোয়েন্সি ডোমেনে):
X -> H -> XH
কোথায় X
নির্গত সংকেত H
ভাষাভাষী স্থানান্তর ফাংশন হয় এবং XH
হয় X
বার H
। একটি বিভাগ ( ./
) এখন আমাকে দেওয়া উচিত H
।
এখন, একটি ক্রমাঙ্কিত সংকেত নির্গত করতে, এটি দ্বারা ভাগ করা উচিত H
:
X/H -> H -> X
কি হয়েছে
- ট্রিপডগুলিতে স্পিকার এবং ক্যালিব্রেটেড মাইক্রোফোন 1 মিটার বাদে।
- রেকর্ড করা 30+ রৈখিক 150KHz-20KHz, 20 মাইল দীর্ঘ, এবং 500 কেএস / সেকেন্ড রেকর্ড করেছে।
- নীচে মতলব / অকটাভ স্ক্রিপ্টের সাথে সারিবদ্ধ এবং গড় সংকেত, স্ক্রিপ্টের নীচে ফলাফল সংকেত দেখা যায়।
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);
ফুরিয়ার রূপান্তরিত হয়েছে
X
এবংXH
এবং উপরে উল্লিখিত গণনাগুলি করেছে, ফলটি প্রশংসনীয় বলে মনে হচ্ছে। নীচেH
(বেগুনি) এবংX/H
(সবুজ) এর একটি সাধারণ প্লট দেওয়া আছে ।
প্লটটি সম্পর্কিত ফ্রিকোয়েন্সিগুলিতে কাটা হয়েছে।
আমি যদি এইভাবে ভুল পথে চলি তবে দয়া করে আমাকে জানান।
আমার প্রশ্ন
গণনা করার পরে X/H
আমার এটি পুনরায় সময়ের ডোমেনে রূপান্তরিত করা দরকার, আমি ধরে নিয়েছিলাম এটি একটি সহজ ifft(X./H)
এবং wavwrite
তবে আমার এখন পর্যন্ত সমস্ত প্রচেষ্টা কোনও প্রশংসনীয় উত্তর পেতে ব্যর্থ হয়েছে। একটি ফ্রিকোয়েন্সি ভেক্টর Hf
, H
এবং এখানে mat7- বাইনারি ফর্ম্যাটে X
পাওয়া যাবে ।
সম্ভবত আমি কেবল ক্লান্ত এবং এখানে একটি সহজ সমাধান রয়েছে, তবে এই মুহূর্তে আমি এটি দেখতে পাচ্ছি না। কোনও সহায়তা / পরামর্শ অনেক প্রশংসা করা হয়।