主要内容

获取连续音频数据

这个例子展示了如何使用麦克风设置一个连续的音频采集。

创建数据采集

创建一个数据采集声音处理软件作为供应商,并添加一个音频输入通道到它使用addinput

Dq = daq(“声音处理软件”);addinput (dq,“Audio0”, 1“音频”);

建立FFT图

Hf =图;HP = plot(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.)ScansAvailableFcnCount,“OutputFormat”“矩阵”);Fs = daqHandle.Rate;longthofdata = length(data);下一个最接近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结束