实时测量待测频率频谱幅值

针对声学测量关于声干涉现象的测量实验 为方便同学们测量实验

利于matlab dsp工具箱 实现了一个实时测量待测频率频谱幅值的功能

都是默认设备 一般是接上麦克风直接用

clc;
clear all;
%% 设置
mic=dsp.AudioRecorder;
% Mic=audioDeviceReader;
Spectrum=dsp.SpectrumAnalyzer;
mic.SamplesPerFrame=44100;
mic.BufferSizeSource='Property';
mic.BufferSize=44100;
mic.SampleRate=44100;
mic.QueueDuration=0;
% mic.DeviceName=;
mic.NumChannels=2;
Speaker=dsp.AudioPlayer;
% Speaker=audioDeviceWriter;
%latency=(QueueDuration×SampleRate+2×BufferSize)/SampleRateX

f0=1000;%待测频率

%% 循环

while(1)  

audio=step(mic);
x=audio(:,1);%取左声道

m=fft(x);
P2 = abs(m/mic.SamplesPerFrame);
P1 = P2(1:mic.SamplesPerFrame/2+1);
% P1(2:end-1) = 2*P1(2:end-1);
f = mic.SampleRate*(0:(mic.SamplesPerFrame/2))/mic.SamplesPerFrame;
figure(1)

stem(f,P1);
title('原始信号')
xlabel('f (Hz)')
ylabel('|P1(f)|')

P=P2(f0+1)*1000 %(mic.SampleRate*(1001)/mic.SamplesPerFrame);
%因为一秒 采样点数与采样率相同所以 频谱间隔是1 就不计算了 要是需要修改用后面公式
%*1000 为了好看 最后取dB无影响
%fprintf('频谱密度:%f',P);
%fprintf('功率谱密度:%f',P^2);
end

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值