数字信号处理实验(MATLAB)

1.语音信号处理

利用windous下的录音机或其他软件录制一段自己的语音(规定:语音内容为自己的名字,以wav格式保存,如wql.wav),时间控制再2秒之内,利用MATLAB提供的函数wavread(Matlab7.0版本,高版本采用audioread函数读取音频文件)对语音信号进行采样,提供sound函数对语音信号进行回放。
[y,fs,nbits]=wavread(file),
采样值放在向量y中,fs表示采样频率,nbits表示采样位数。Wavread的更多用法请使用help命令自行查询。
2)语音信号的频谱分析
利用fft函数对信号进行频谱分析
3)受白噪声干扰的语音信号的产生与频谱分析
①白噪声的产生:
N1=sqrt(方差值)×randn(语音数据长度,2)(其中2表示2列,是由于双声道的原因)
然后根据语音信号的频谱范围让白噪声信号通过一个带通滤波器得到一个带限的白噪声信号N2;
带通滤波器的冲激响应为:
hB(n)= 其中ωc1为通带滤波器的下截止频率,ωc2为通带滤波器的上截止频率。其中下截止频率由每个人的语音信号的最高频率确定
滤波器的长度N由滤波器的过渡带确定,一般不宜太小(大于1000),α=(N-1)/2;
②信号y通过低通滤波器,得到信号为x1
低通滤波器的冲激响应为:
其中的ωc1与上面的带通滤波器的下截止频率一致,滤波器的长度N也于上面的带通滤波器一致,α=(N-1)/2
③将N1加上x1得到一个受到噪声污染的声音信号
4)用IIR滤波器(采用双线性法设计)对受污染语音信号进行滤波
5)比较滤波前后信号的波形与频谱
6)回放滤波后的语音信号

程序:

clc;clear;close;
audioread('GJQ.wav');
[d,fs]=audioread('GJQ.wav');
sound(d,fs); //播放原声音
plot(d)
y=audioread('GJQ.wav');
Yk=fft(y);
figure(1);plot(abs(Yk));title('原始信号频谱');
M=2001; //滤波器长度
n=1:M;L=(M-1)/2;
wh=0.9;wl=0.3; //带通信号上下限
h2=wh*sinc(wh*(n-L))-wl*sinc(wl*(n-L));
h=wl*sinc(wl*(n-L));
H2k=fft(h2);
Hk=fft(h);
figure(2);plot(abs(H2k));title('H2k');
figure(3);plot(abs(Hk));title('HK');
c=5.9;%噪声的均方值要比语音信号的值大
N1=177151;%也可以通过求取length(y)直接得到N1
V=2;
x=sqrt(c)*randn(N1,V);%N1的长度取决于y的长度,数据长度与语音长度一致,V是维度,双通道是2,单通道是1
Xk=fft(x);
figure(4),plot(abs(Xk));title('Xk');
s1=fftfilt(h,y);
Ns=fftfilt(h2,x);
Nk=fft(Ns);
figure(5);plot(abs(Nk));title('Nk'); //噪声频谱图
y1=s1+Ns;
sound(y1,fs); //含噪音,比原声音大
Y1k=fft(y1);
figure(6),plot(abs(Y1k));title('Y1k'); //加噪语音频谱图
s=fftfilt(h,y1);
Sk=fft(s);
figure(7),plot(abs(Sk)),title('Sk');
fp=4500;fss=6000;rp=2;rs=30;
wp1=2*pi*fp/fs;% 求出通带数字角频率wp1
wss1=2*pi*fss/fs;% 求出阻带数字角频率wss1
op1=2*fs*tan(wp1/2)  ;
os1=2*fs*tan(wss1/2)  ; %预畸变处理,求出模拟角频率op1和os1
[N,wc]=buttord(op1,os1,rp,rs,'s') % 求出最小阶数N和截止频率wc
[z,p,k]=buttap(N);
[ba,aa]=zp2tf(z,p,k);  % 求出归一化模拟滤波器的分子分母系数ba和aa
[b,a]=lp2lp(ba,aa,wc);  % 求出截止频率为wc的模拟滤波器的分子分母系数b和a
[bz,az]=bilinear(b,a,fs);
[H,f]=freqz(bz,az);
ma=20*log10(abs(H));mp=angle(H)*180/pi;
figure(8);
subplot(2,1,1);plot(f/pi,ma)
subplot(2,1,2);plot(f/pi,mp)
s2=filter(bz,az,y1);
S2k=fft(s2);
figure(9);plot(abs(S2k));title('S2k');
sound(s2,fs);//消噪后的

2.信号分析

研究采样频率fc和数据持续时间Tp与频率分辨率的关系,首先给出不同的采样频率对于信号频谱分析的影响,包括满足采样定理和不满足采样定理的情况下,信号频谱的变换情况(至少2种数值的情况);其次选择在满足采样定理的情况下,在一定的Tp情况下,f1和f2相差多少的时候可以分辨出来(至少3种数值情况);最后在f1和f2不变的情况下,选择不同的Tp,看Tp在什么情况下,不能分辨2个信号的频谱(至少3种数值的情况),以上都可以与理论值相比较以验证理论的正确。

fc=1000;Tp=1;
t=0:1/fc:Tp;
f1=100;f2=200;
x=sin(2*pi*f1*t)+cos(2*pi*f2*t);
XK=fft(x);
plot(abs(XK));title('tp=1')

改变各个参数
其次选择在满足采样定理的情况下,在一定的Tp情况下,f1和f2相差多少的时候可以分辨出来(至少3种数值情况);
最后在f1和f2不变的情况下,选择不同的Tp,看Tp在什么情况下,不能分辨2个信号的频谱(至少3种数值的情况),以上都可以与理论值相比较以验证理论的正确。

  • 8
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数字信号处理Matlab中可以使用内置函数或编写自定义函数来实现。以下是一些数字信号处理实验中常用的Matlab代码示例: 1. 时域离散信号绘图 ``` % 生成离散信号x[n] n = 0:9; x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; % 绘制x[n]时域图 stem(n, x); xlabel('n'); ylabel('x[n]'); title('Discrete-time Signal'); ``` 2. 离散时间傅里叶变换DTFT绘图 ``` % 生成离散信号x[n] n = 0:9; x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; % 计算DTFT并绘图 w = linspace(-pi, pi, 501); X = dtft(x, n, w); plot(w, abs(X)); xlabel('\omega'); ylabel('|X(e^{j\omega})|'); title('DTFT of Discrete-time Signal'); ``` 3. 离散傅里叶变换DFT计算与绘图 ``` % 生成离散信号x[n] N = 8; % 8点DFT n = 0:N-1; x = [1, 2, 3, 4, 5, 6, 7, 8]; % 计算8点DFT并绘图 X = fft(x, N); k = 0:N-1; stem(k, abs(X)); xlabel('k'); ylabel('|X[k]|'); title('8-point DFT of Discrete-time Signal'); ``` 4. 后补零操作对DFT结果的影响 ``` % 生成离散信号x[n] N = 8; % 8点DFT n = 0:N-1; x = [1, 2, 3, 4, 5, 6, 7, 8]; % 计算8点DFT和16点DFT并对比 X8 = fft(x, N); X16 = fft([x, zeros(1, N)], 2*N); k8 = 0:N-1; k16 = 0:2*N-1; subplot(2,1,1); stem(k8, abs(X8)); xlabel('k'); ylabel('|X8[k]|'); title('8-point DFT of Discrete-time Signal'); subplot(2,1,2); stem(k16, abs(X16)); xlabel('k'); ylabel('|X16[k]|'); title('16-point DFT of Discrete-time Signal with Zero Padding'); ``` 这些代码示例仅供参考,实际的数字信号处理实验中可能需要根据具体问题编写不同的代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值