資源簡介
代碼很簡單,是使用fft、ifft與時域同頻域的關(guān)系進(jìn)行延時。網(wǎng)上各種延時都是使用的補(bǔ)零延時。但是在麥克風(fēng)陣列信號處理中,由于兩個麥克間的距離一般小于2cm,延時時間非常短,經(jīng)常不足1個采樣點(diǎn)。而且之前請教的方法都不對,但是這個是可以用的。

代碼片段和文件信息
clc
close?all
clear?all
t0?=?56000;?????????????%只取信號前56000個采樣點(diǎn)
[simul1fs]?=?audioread(‘fapb0_sa1.wav‘);????%提取干聲信號和其采樣率
t2?=?1/fs;??????????????%延時時間,先測試剛好移動一點(diǎn)的結(jié)果
signal1?=?zeros(t01);
signal1(1:t0)?=?simul1(1:t0)?;??%提取信號
signal2?=?fft(signal1);?????????%作fft
%反變換
frequency=?(linspace(0fst0))‘;%每點(diǎn)對應(yīng)的頻率,且要轉(zhuǎn)置矩陣,否則為行向量,有可能死機(jī)
w?=?2*pi*frequency;?????????????%模擬角頻率表達(dá)式
transfer?=?exp(-i*w.*t2);???????%時域延時對應(yīng)頻域的系數(shù)矩陣
Out_w1?=?signal2?.*?transfer;???%fft結(jié)果點(diǎn)乘系數(shù)(或者說傳遞函數(shù))
Out1?=?ifft(Out_w1);????????????%反變換輸出
figure;?????????%作圖,把兩個信號放在一張圖上,放大對比看延時情況??
plot?(signal1);
hold?on;
plot(real(Out1));
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????118214??2017-11-08?14:52??信號延時\fapb0_sa1.wav
?????文件????????755??2018-07-28?11:21??信號延時\sdelay_byfft.m
?????目錄??????????0??2018-07-28?11:21??信號延時
-----------?---------??----------?-----??----
???????????????118969????????????????????3
評論
共有 條評論