《利用MATLAB仿真多普勒效应
利用MATLAB仿真多普勒效应
某某某
摘 要:分析多普勒效应特性,建立数学模型,利用MATLAB软件对其进行仿真试验,进行定量分析,根据仿真试验结果绘制出听者接收到的信号的频率变化曲线以及用信号处理工具箱函数spectrogram绘制的时间频率图,并生成相应的声音。
关键词:Doppler effect MATLAB/ Simulink
0 研究背景
多普勒效应是由生在德国的奥地利物理学家多普勒(Joh1802一1853)发现的年,荷兰气象学家巴依斯·巴洛(h.d.Buys Ballot)测得了声音的多普勒效应一辆汽车在我们身旁急驰而过车上喇叭的音调有一个从高到低的突然变化站在铁路旁边听车的汽笛声也能够发现,车迅速迎面而来时音调较静止时为高,而车迅速离去时则音调较静止时为低称为多普勒效应对于多普勒效应的讨论,一般仅限于声源和听者在同一直线上运动的情况当声源和听者不在同一直线上运动时,接收频率变化比较复杂,听者接收到的信号波形方程也难以用解析式表示MATLA具有强大的数值计算和功能以及图形技术本文试图从MATLAB编程的角度出发,对声源和听者不在同一直线上运动的情况下产生的多普勒效应特性进行分析,产生极好的模拟,实现多普勒效应的验证, (1-1)
其中, f0是声源发出的声音的频率;
v是听者与声源的相对运动速度;
θ为速度矢量与声源和听者的连线夹角;
vs为声音在空气中传播的速度,f是听者听到的声音频率。
2 理论模型
多普勒效应---设声源距离听者的水平距离为,以v的速度沿水平方向向听者直线驶
来,其轨迹与听者的最小距离为垂直距离y ,
声源的频率为f0,试求听者接受到的信号的
频率变化曲线以及用信号处理工具箱函数sp
ectrogram绘制的时间频率图,并生成相应的
声音。
3 仿真试验
下面是一段用MATLAB的M文件依据公式(1-1)原理编写的程序(1-1)。它会产生一个名为dopp.wav的表现多普勒效应的声音文件,描述火车向一个距离铁路30米(垂直距离)、距火车150(水平距离)的听者开来时他听到的声音。将u1送入图3-1所示的Simulink仿真系统,再一次听到该声音,并且看到用频谱仪表现的声音频率随时间的变化的情况。表3-1和表3-2给出了仿真系统中两个模块的主要参数设置。
表3-1 From Multimedia File(波形文件)的主要参数
█ 模块名称 From Multimedia File
█ 位置 DSP System toolbox / Signal Processing Sources
参 数 名 称参 数 值File name(文件名)Dopp.wavSamples per output frame(输出每帧中的样值数)1024
表3-2 To Audio Device(扬声器)的主要参数
█ 模块名称 To Audio Device
█ 位置DSP System toolbox / Signal Processing Sinks
参 数 名 称参 数 值 DeviceDefaultQueue duration(seconds)(队列延迟时间)1Automatically determine Buffer size(自动确定缓冲区长度)选中
图3-1 显示声音信号(多普勒效应)的仿真系统模型
█ 程序1-1
% 多普勒效应程序
█ 程序难点分析
[1] 在计算机中所能存储的数字序列,也即模拟信号必须通过取样和量化后,变成相应的数字信号,才能被计算机存储和处理。对音频信号来说,实现模拟音频信号与数字音频信号之间的转化模块就是声卡,MATLAB可以方便地对声卡进行诸如采样频率等输入/输出参数的配置。
[2] 播放火车静止时的汽笛声。使用命令“sound”将数字序列以设定的采样速率输出到声卡,通过声卡转化为模拟音频信号。“sound”用法是:
sound(y,Fs);
其中:y为取值范围必须在[-1,,1]区间的n行1列的数字序列(单声道输出)。Fs为设定的采用速率,一般声卡支持5000Hz到441000Hz。
[3] 此处暂停必不可少,且时间要足够,以便再打开声音系统,这个量与计算机硬件有关。
[4] 播放静止的听者听到运动的火车的汽笛声。
[5] MATLAB可以记录的音频信号直接保存为“*.wav”格式。利用命令“wavwrite(y,Fs,’Filen