资源描述:
《如何用matlab程序实现声卡的数据采集.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、如何用matlab实现声卡的数据采集functionxinhaoAI=analoginput('winsound');%2.Addchannels-AddonechanneltoAI.chan=addchannel(AI,1);%3.Configurepropertyvalues-Assignvaluestothebasicsetupproperties,and%createthevariablesblocksizeandFs,whichareusedforsubsequentanalysis.%Theactua
2、lsamplingrateisretrievedsinceitmaybesetbytheenginetoa%valuethatdiffersfromthespecifiedvalue.set(AI,'SampleRate',8000) %设置采样速率为8000HzActualRate=get(AI,'SampleRate'); %从AI中获取实际采样速率set(AI,'TriggerChannel',chan) %设置触
3、发通道set(AI,'TriggerType','software'); %设置触发类型set(AI,'Triggercondition','rising'); %设置为电压上升至某值后触发set(AI,'TriggerConditionValue',0.013); %设置触发电压值set(AI,'TriggerDelay',-1); %设置触发时延set(AI,'TriggerDelayUnits','secon
4、ds'); %设置触发时延的单位set(AI,'timeout',2) %定义超时值Fs=ActualRate; %设置采样速率cleardata1;start(AI) %开始采样try [data1,time]=getdata(AI); %将采样得到的数据保存到data1,采样时间保存到timecatchtim
5、e=0;data1=0; disp('Atimeoutoccurred.');endsubplot(2,1,1) %绘制2行1列的第1张子图plot(time,data1) %以时间为横轴,数据为纵轴作图xlabel('Time(sec.)') %标注横坐标ylabel('SignalLevel(Volts)') %标注纵坐标gridon
6、 %添加网格%对采集数据作滤波处理blocksize=length(data1); %计算窗函数长度window=hanning(blocksize); %计算汉明窗函数(此函数为MATLAB自带)data2=window.*data1; %对数据先作加窗处理[b,a]=ellip(4,0.1,20,3000*2/Fs);
7、 %构造椭圆滤波器data=filter(b,a,data2); %求加窗处理后的数据经过滤波器的响应%当不需要AI时,将它从工作空间和内存中删除delete(AI) clearAI%对滤波处理后的数据作FFT频谱分析,并将结果在第二张子图上作图表示,加上横纵坐标和标题[f,mag]=daqdocfft(data1,Fs,blocksize); %此函数为MATLAB自带 subplot(2,1
8、,2)plot(f,mag)gridonylabel('Magnitude(dB)')xlabel('Frequency(Hz)')title('FrequencyComponentsofIncomingSignal')%找到频谱幅度最大值,并在屏幕上显示xlim([01500])[ymax,maxindex]=max(mag);disp(['Maximumoccurre