利用MATLAB仿真多普勒效应Word格式文档下载.doc
《利用MATLAB仿真多普勒效应Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《利用MATLAB仿真多普勒效应Word格式文档下载.doc(7页珍藏版)》请在冰点文库上搜索。
![利用MATLAB仿真多普勒效应Word格式文档下载.doc](https://file1.bingdoc.com/fileroot1/2023-5/11/f0189872-0df4-486f-8a05-303c0f2fbd5e/f0189872-0df4-486f-8a05-303c0f2fbd5e1.gif)
MATLA具有强大的数值计算和仿真功能以及图形技术。
本文试图从MATLAB编程的角度出发,应用MATLAB的Simulink仿真试验方法,建立仿真的试验环境,对声源和听者不在同一直线上运动的情况下产生的多普勒效应特性进行分析,产生极好的模拟,实现多普勒效应的验证,绘制出听者接收到的信号的频率变化曲线以及用信号处理工具箱函数spectrogram绘制的时间频率图,并生成相应的声音。
1基本原理
以下公式描述了多普勒效应现象的各个物理量之间的定量关系:
(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-1FromMultimediaFile(波形文件)的主要参数
█模块名称FromMultimediaFile
█位置DSPSystemtoolbox/SignalProcessingSources
参数名称
参数值
Filename(文件名)
Dopp.wav
Samplesperoutputframe(输出每帧中的样值数)
1024
表3-2ToAudioDevice(扬声器)的主要参数
█模块名称ToAudioDevice
█位置DSPSystemtoolbox/SignalProcessingSinks
参数值
Device
Default
Queueduration(seconds)(队列延迟时间)
1
AutomaticallydetermineBuffersize(自动确定缓冲区长度)
选中
图3-1显示声音信号(多普勒效应)的仿真系统模型
█程序1-1
%多普勒效应程序
x0=150;
%m
v=50;
%车速m/s
y0=30;
%m
c=330;
%声音在空气中的速度m/s
f0=2000;
%声音的频率Hz
fs=8000;
%采样频率
t=0:
1/fs:
6;
%规定t的范围和步进
x_t=-x0+v.*t;
%火车与观察者的水平距离
y=y0;
%火车与观察者的垂直距离
r=sqrt(x_t.^2+y.^2);
%火车与观察者间距离
costheta=x_t./r;
%声速矢量与火车和听者间连线夹角的余弦
f=f0./(1+v.*costheta./c);
%听者接收到的频率
fmin=min(f);
fmax=max(f);
voltage=(f-fmin)./(fmax-fmin)*2-1;
%归一化调频电压在-1~+1之间[1]
signal=0.5*vco(voltage,[fminfmax],fs);
%压控震荡器,由输入电压控制输出信号频率
u=sin(2*pi*f0*t);
%声源发出的信号
sound(u,fs);
%播放声源发出的信号[2]
pause(5);
%暂停[3]
sound(signal,fs);
%播放听者接收到的信号[4]
wavwrite(signal,fs,'
dopp.wav'
);
%音频数据存盘[5]
figure
(1);
plot(t,f);
xlabel('
Time/s'
ylabel('
Freq/Hz'
%做出听者接收到的信号的频率变化曲线
figure
(2);
spectrogram(signal,kaiser(256,5),220,512,fs,'
yaxis'
%做出时间频率图[6]
axis([06,1000,spectro3000])
█程序难点分析
[1]在计算机中所能存储的数字序列,也即模拟信号必须通过取样和量化后,变成相应的数字信号,才能被计算机存储和处理。
对音频信号来说,实现模拟音频信号与数字音频信号之间的转化模块就是声卡,MATLAB可以方便地对声卡进行诸如采样频率等输入/输出参数的配置。
[2]播放火车静止时的汽笛声。
使用命令“sound”将数字序列以设定的采样速率输出到声卡,通过声卡转化为模拟音频信号。
“sound”用法是:
sound(y,Fs);
其中:
y为取值范围必须在[-1,,1]区间的n行1列的数字序列(单声道输出)。
Fs为设定的采用速率,一般声卡支持5000Hz到441000Hz。
[3]此处暂停必不可少,且时间要足够,以便再打开声音系统,这个量与计算机硬件有关。
[4]播放静止的听者听到运动的火车的汽笛声。
[5]MATLAB可以记录的音频信号直接保存为“*.wav”格式。
利用命令“wavwrite(y,Fs,’Filename’);
”就可以将向量y存储为取样频率为Fs的wav音频文件。
[6]另一个函数发生器是压控振荡器(VCO),它由输入向量来决定某个震荡频率的信号。
此处,绘制生成信号的光谱图。
█频域测量仪器(频谱仪SpectrumScope)
计算机仿真中的频谱仪应用的是数字信号处理中的快速傅里叶变换(FFT)技术,它能完成数据流从时域到频域的变换。
将时域的数据流取出一段,即FFTsize(快速傅里叶变换的长度)确定为N,通常要求N是2的幂次方。
同时需要设置相应长度的BufferSize(缓存器)。
N的大小(即时窗的长短)决定了频谱仪的分辨率,N越大,频率的分辨率就越高,但相应的计算时间也愈长。
希望所研究的谱线内容出现在频谱仪显示窗的中间部分,能看到在频率轴上谱线的低端和高端的情况,以便于观察和分析。
要做到这一点,将输入信号的采样频率取为期望的频率显示窗最大值的两倍即可。
注意,频谱仪的采样频率与被测信号的采样频率要一致。
4仿真结果及分析
(1)仿真结果
图4-1所示:
M文件程序运行结束时绘出的听者接收到信号的频率变化曲线。
图4-2所示:
用信号处理工具箱函数spectrogram绘制的时间频率图。
图4-3所示:
某个时刻仿真系统中的频谱仪上显示的功率谱。
图4-1听者接收到的信号的频率变化曲线
图4-2时间频率图(Swept-FrequencyWaveforms)
[T=0s]
[T=3s]
[T=6s]
图4-3频谱仪显示
█结果分析
傅里叶变换是把各种形式的信号用正弦信号表示,因此非正弦信号进行傅里叶变换,会得到与原信号频率不同的成分——都是原信号频率的整数倍。
这些高频信号是用来修饰频率与原信号相同的正弦信号,使之趋近于原信号的。
所以说,频谱上频率最低的一个峰(往往是幅度上最高的),就是原信号频率。
由上可知,听者接收到的信号的频率先高于原来的汽笛声,后低于原来的汽笛声。
5结束语
在MATLAB/Simulink下,从数学模型到计算机仿真模型的转换非常容易。
本文利用Simulink结合M文件编程的方法,使其同时具备图形界面的直观性和字符界面的强大功能。
事实上,所有Simulink的模块以及系统构建、仿真参数等均可通过编程语句实现。
针对声源和听者不在同一直线上运动情况,利用MATLAB/Simulink软件对其进行了仿真试验,结果同样产生了多普勒效应。
因此,仿真试验表明不管声源和听者是否在同一直线上运动,都会发生收听频率和声源频率不一致的现象,即产生多普勒效应。
参考文献
[1]徐明远.MATLAB仿真在通信与电子工程中的应用.西安电子科技大学出版社.2010
[2]张德丰.MATLAB通信工程仿真.机械工业出版社.2010
[3]邵玉斌.Matlab/Simulink通信系统建模与仿真实例分析.2008
-7-