解释这段代码function y=mysound(s) %定义原信号加噪声的DTMF信号产生函数 global SNR; %定义全局变量SNR,即添加噪声的分贝数 n=length(s); %s为输入信号数列,n为一维数列的长度 N=4000; %定义4000个抽样点信息,因为信号要持续半秒 t=0:N-1; fs=8000; %抽样频率为8000Hz y=0; %设置变量初始值为0 for i=1:n; switch s(i) %对应不同按键的高频和低频分量,产生其对应的DTMF信号。 case '1' y=[y (sin(2*pi*697/fs*t)+ sin(2*pi*1209/fs*t)) zeros(1,N+1)]; end; end; axes(findobj(gcf,'Tag','axes1')); %在GUIaxes1中画出混入噪声前信号的时域波形。 plot(y); axis([0 4000 -4 4]); title('混入噪声前时域波形'); axes(findobj(gcf,'Tag','axes2')); %在GUIaxes1中画出混入噪声前信号的时域波形。 yy=awgn(y,SNR); %添加高斯白噪声,其输入在GUI中定义。 plot(yy); axis([0 4000 -4 4]); title('混入噪声后时域波形'); sound(y,fs); %发声 y=yy; %输出信号为添加高斯白噪声后的信号 end
时间: 2023-06-14 07:04:15 浏览: 152
flash 代码大全
这是一个Matlab函数,主要功能是生成DTMF信号并添加高斯白噪声。具体解释如下:
- 函数名为“mysound”,输入参数为一维数列s,表示按键序列。
- 在函数中定义了一个全局变量SNR,表示添加的高斯白噪声的分贝数。
- 通过计算产生每个按键对应的高频和低频分量,生成DTMF信号。
- 在GUI界面的axes1中绘制出混入噪声前的信号时域波形,axes2中绘制出混入噪声后的信号时域波形。
- 使用Matlab内置函数“awgn”添加高斯白噪声。
- 最后使用Matlab内置函数“sound”发出混入噪声前的信号,并将添加噪声后的信号作为输出。
需要注意的是,此函数中使用的“awgn”函数是Matlab中的一个内置函数,用于向信号添加高斯白噪声,其中输入参数yy表示添加噪声后的信号。
阅读全文