获取连续音频数据
这个例子展示了如何使用麦克风设置一个连续的音频采集。
创建一个DataAcquisition
创建数据采集声音处理软件
作为供应商,并添加一个音频输入通道给它使用addinput
.
dq =采集(“声音处理软件”);addinput (dq,“Audio0”, 1“音频”);
建立FFT图
高频=图;惠普=情节(0 (1000 1));T =标题(“离散FFT的阴谋”);包含(的频率(赫兹)) ylabel (“Y (f) | |”网格)在;
设置ScansAvailableFcn
通过设置动态输入信号的FFT更新图ScansAvailableFcn
.
dq。ScansAvailableFcn = @(src, evt) continuousFFT(src, hp);
开始收购
当使用麦克风时,图会更新,持续10秒。
开始(dq,“持续时间”秒(10));图(高频);
函数continuousFFT (daqHandle plotHandle)计算FFT(数据)并用它更新绘图。data = read(daqHandle, daqHandle. data)ScansAvailableFcnCount,“OutputFormat”,“矩阵”);Fs = daqHandle.Rate;lengthOfData =长度(数据);长度的2次幂的%nextPowerOfTwo = 2 ^ nextpow2(lengthOfData);plotScaleFactor = 4;% plot是关于n/2对称的plotRange = nextPowerOfTwo / 2;plotRange = floor(plotRange / plotScaleFactor);yDFT = fft(data, nextPowerOfTwo);h = yDFT (1: plotRange);abs_h = abs (h);%频率范围freqRange = (0: nextpowerof2 -1) * (Fs / nextPowerOfTwo);%仅绘图到n/2(因为另一半是镜像)gfreq = freqRange (1: plotRange);%更新剧情集(plotHandle,“ydata”abs_h,“xdata”, gfreq);drawnow结束