电信专业《数字信号处理课程设计》任务书
(一)
clc;clear;
Y_vect=[1 -0.5 0.25]; %num
X_vect=[1 2 0 1]; %den
figure(1)
zplane(Y_vect, X_vect); %zplane()函数画出零点极点图
figure(2)
impz(Y_vect, X_vect); %impz()函数得出系统的脉冲响应
legend('h(n)')
n=0:100;
Input=5+3*cos(0.2*pi*n)+4*sin(0.6*pi*n); %输入
Output=filter(Y_vect, X_vect,Input); %输出
figure(3) %x(n)
subplot(2,1,1);
stem(Input,'filled');
legend('x(n)')
subplot(2,1,2);
stem(Output,'filled');
legend('y(n)')
(二)
(1)
clear all;clc;
n=(0:1:9);
y=cos(0.48*pi*n)+cos(0.52*pi*n);
n1=(0:1:9);x=y(1:1:10);
subplot(3,1,1);
stem(n1,x); %画出x(n)曲线
title('x(n)(o<=n<=9)');
xlabel('n');ylabel('x(n)');
axis([0,10,-2.5,2.5]);
w=[0:500]*2*pi/500;
xw=x*exp(-j*n'*w);
magx=abs(xw); %对xw取绝对值
subplot(3,1,2);
plot(w,magx); %画出x(jw)曲线
title('DTFT');
xlabel('w');ylabel('x(jw)');
axis([0,2*pi,0,10]);
subplot(3,1,3);
x1=fft(x); %对x进行傅里叶变换
magx1=abs(x1); %对x1取绝对值
stem(n1,abs(magx1)); %画出x(k)曲线
title('DFT');
xlabel('k');ylabel('x(k)');
axis([0,10,0,10]);
(2)
clear all;clc;
n=(0:1:9);
y=cos(0.48*pi*n)+cos(0.52*pi*n);n1=(0:1:99);
x=[y(1:1:10),zeros(1,90)]; %第10位到100位的数据都为0
subplot(3,1,1);
stem(n1,x); %画出x(n)曲线
title('x(n)(O<=n<=9+90zeros)');
xlabel('n');ylabel('x(n)');
axis([0,100,-2.5,2.5]);
w=linspace(0,2*pi,length(x)); %0-2*pi区域分为100点
xw=x*exp(-j*[1:length(x)]'*w);
magx=abs(xw); %对xw取绝对值
subplot(3,1,2);
plot(w, magx); %画出x(jw)曲线
title('DTFT');
xlabel('w');ylabel('x(jw)');
axis([0,2*pi, 0,10]);
subplot(3,1,3);
x1=fft(x); %进行傅里叶变换
magx1=abs(x1); %对x1取绝对值
stem(n1,abs(magx1)); %画出x(k)曲线
title('DFT');
xlabel('k');ylabel('x(k)');
axis([0,100,0,10]);
(3)
clear all;clc;
n=(0:1:99);
y=cos(0.48*pi*n)+cos(0.52*pi*n);n1=(0:1:99);x=y(1:1:100);
subplot(3,1,1);
stem(n1,x); %画出x(n)曲线
title('x(n)(O<=n<=99)');
xlabel('n');ylabel('x(n)');
axis([0,100,-2.5,2.5]);
w=linspace(0,2+pi,length(x)); %0-2*pi区域分为100点
xw=x*exp(-j*[1:length(x)]'*w);
magx=abs(xw); %对xw取绝对值
subplot(3,1,2);
plot(w,magx); %画出x(jw)曲线
title('DTFT');
xlabel('w');ylabel('x(jw)');
axis([0,2*pi,0,54]);
subplot(3,1,3);
x1=fft(x); %进行傅里叶变换
magx1=abs(x1); %对x1取绝对值
stem(n1,abs(magx1)); %画出x(k)曲线
title('DFT');
xlabel('k');ylabel('x(k)');
axis([0,100,0,54]);
(4)
clear all;clc;
n=(0:1:127);
y=cos(0.48*pi*n)+cos(0.52*pi*n);n1=(0:1:127);x=y(1:1:128) ;
subplot(3,1,1);
stem(n1,x); %画出x(n)曲线
title('x(n)(O<=n<=127)');
xlabel('n');ylabel('x(n)') ;
axis([0,128,-2.5,2.5]);
w=linspace(0,2*pi,length(x)); %0-2*pi区域分为128点
xw=x*exp(-j*[1:length(x)]'*w);
magx=abs(xw); %对xw取绝对值
subplot(3,1,2);
plot(w,magx); %画出x(jw)曲线
title( 'DTFT');
xlabel('w');ylabel('x(jw)');
axis([0,2*pi,0,65]);
subplot(3,1,3);
x1=fft(x); %进行傅里叶变换
magx1=abs(x1); %对x1取绝对值
stem(n1,abs(magx1)); %画出x(k)曲线
title('DFT');
xlabel('k');ylabel('x(k)');
axis([0,128,0,65]);
(5)
clear all;clc;
n=(0:1:49);
y=cos(0.48*pi*n)+cos(0.52*pi*n);n1=(0:1:49);x=y(1:1:50);
subplot(3,1,1);stem(n1,x); %画出x(n)曲线
title('x(n)(O<=n<=49)');
xlabel('n');ylabel('x(n)');
axis([0,50,-2.5,2.5]);
w=linspace(0,2+pi,length(x)); %0-2*pi区域分为50点
xw=x*exp(-j*[1:length(x)]'*w);
magx=abs(xw); %对xw取绝对值
subplot(3,1,2);plot(w,magx); %画出x(jw)曲线
title('DTFT');
xlabel('w');ylabel('x(jw)');
axis([0,2*pi,0,30]);
subplot(3,1,3);
x1=fft(x); %进行傅里叶变换
magx1=abs(x1); %对x1取绝对值
stem(n1,abs(magx1)); %画出x(k)曲线
title('DFT');
xlabel('k');ylabel('x(k)');
axis([0,50,0,30]);
(三)
(1)导入
[x1,fs]=audioread('D:\PPT\数字信号处理\课设\语音.m4a');
sound(x1,fs); %声音回放
y1=fft(x1,32768); %对信号取1024个点的fft变换
figure(1)
subplot(2,1,1)
plot(x1)
title('原始音频时域图')
subplot(2,1,2)
plot(abs(y1)) %幅度
title('原始音频频谱图')
(2)噪声
[x1,fs]=audioread('D:\PPT\数字信号处理\课设\语音.m4a');
y1=fft(x1,32768);
x2=awgn(x1,10); %将高斯白噪声(信噪比为10dB)添加到信号中
%sound(x2,fs)
y2=fft(x2,32768); %对加噪声后的信号取1024个点的fft变换
f=0:fs/32768:fs/32768*32767;
figure(2)
subplot(3,2,1)
plot(x2)
xlabel('频率(Hz)');
ylabel('幅度(dB)');
title('加高斯白噪声的音频时域图')
subplot(3,2,2)
plot(f,abs(y1)); %幅值
xlabel('频率(Hz)');
ylabel('幅度(dB)');
title('加高斯白噪声的音频频谱图')
N=length(x1)-1;
t=0:1/fs:N/fs;
d=[0.09*sin(2*pi*5000*t)]'; %将单频噪声添加到信号中
x3=x1+d;
%sound(x3,fs);
f=0:fs/32768:fs/32768*32767;
subplot(3,2,3)
plot(x3)
xlabel('频率(Hz)');
ylabel('幅度(dB)');
title('加单频噪声的音频时域图')
y3=fft(x3,32768); %对加噪声后的信号取1024个点的fft变换
subplot(3,2,4)
plot(f,abs(y3)); %幅值
xlabel('频率(Hz)');
ylabel('幅度(dB)');
title('加单频噪声的音频频谱图')
N=length(x1)-1;t=0:1/fs:N/fs;
a=[0.09*sin(2*pi*2000*t)]';
b=[0.09*sin(2*pi*3000*t)]';
c=[0.09*sin(2*pi*3500*t)]';
x4=x1+a+b+c; %将多频噪声添加到信号中
%sound(x4,fs)
y4=fft(x4,32768); %对加噪音后的信号取1024个点的fft变换
subplot(3,2,5);
plot(x4)
xlabel('频率(Hz)');
ylabel('幅度(dB)');
title('加多频噪声的音频时域图')
ylabel('幅值');
subplot(3,2,6);
plot(f,abs(y4)); %幅值
xlabel('频率(Hz)');
ylabel('幅度(dB)');
title('加多频噪声的音频频谱图')
(3)低通
fp=1000;Fs=1800;As=40;Ap=0.25;
%As=40;Ap=0.25;Fs=20000
wp=2*pi*fp/fs;ws=2*pi*Fs/fs;
%wp=2*pi*[1500,3500]/Fs;ws=2*pi*[1800,3800]/Fs;
Bt=ws-wp; %计算过渡带宽度
alph=0.5842*(As-21)^0.4+0.07886*(As-21); %根据公式计算Kaiser窗的控制参数
%alph=0.112*(As-8.7);
%alph=O;
M=ceil((As-8)/2.285/Bt); %根据公式计算Kaiser窗所需阶数M
wc=(wp+ws)/2/pi; %计算理想带通滤波器通带截至频率
hn=fir1(M,wc,kaiser(M+1,alph)); %调用firl计算高通FIRDF的h(n)
hk=fft(hn);
hk=freqz(hn,1,Fs); %滤波器频率响应
xn3=fftfilt(hn,x4); %重叠相加滤波器实现
sound(xn3,fs); %声音回放
yn3=fft(xn3);
figure(3);
subplot(2,1,1);
plot(xn3);
title('多正弦干扰滤波后信号波形');
subplot(2,1,2);
plot(abs(yn3)); %幅值
title('多正弦干扰滤波后信号频谱');
figure(4);
subplot(2,1,1);
stem(hn); %以空心的方式画出茎秆
title('凯塞窗h(n)波形');
subplot(2,1,2);
plot(abs(hk)); %幅值
title('凯塞窗h(n)信号频谱');
(4)带通
fp=1400;Fs=1800;As=40;Ap=0.25;
%As=40;Ap=0.25;Fs=20000
wp=2*pi*fp/fs;ws=2*pi*Fs/fs;
%wp=2*pi*[1500,3500]/Fs;ws=2*pi*[1800,3800]/Fs;
Bt=ws-wp; %计算过渡带宽度
alph=0.5842*(As-21)^0.4+0.07886*(As-21); %根据公式计算Kaiser窗的控制参数
%alph=0.112*(As-8.7);
%alph=0;
M=ceil((As-8)/2.285/Bt); %根据公式计算Kaiser窗所需阶数M
wc=(wp+ws)/2/pi; %计算理想带通滤波器通带截至频率
ww=[wp,ws];
hn=firl(M,ww,kaiser(M+1,alph)); %调用firl计算高通FIRDF的h(n)
hk=fft(hn);
hk=freqz(hn,1,Fs); %滤波器频率响应
xn3=fftfilt(hn,x4); %重叠相加滤波器实现
sound(xn3,fs); %声音回放
yn3=fft(xn3);
figure(3);
subplot(2,1,1);
plot(xn3);
title('多正弦干扰滤波后信号波形');
subplot(2,1,2);
plot(abs(yn3)); %幅值
title('多正弦干扰滤波后信号频谱');
figure(4);
subplot(2,1,1);
stem(hn); %以空心的方式画出茎秆
title('凯塞窗h(n)波形');
subplot(2,1,2);
plot(abs(hk)); %幅值
title('凯塞窗h(n)信号频谱');
(5)高通
fp=2800;Fs=3500;As=40;Ap=0.25;
%As=40;Ap=0.25;Fs=20000
wp=2*pi*fp/fs ;ws=2*pi*Fs/fs;
%wp=2*pi*[1500,3500]/Fs ;ws=2*pi*[1800,3800]/Fs;
Bt=ws-wp; %计算过渡带宽度
alph=0.5842*(As-21)^0.4+0.07886*(As-21); %根据公式计算Kaiser窗的控制参数
%alph=0.112*(As-8.7);
%alph=0;
M=ceil((As-8)/2.285/Bt); %根据公式计算Kaiser窗所需阶数M
ww=[wp,ws];
hn=fir1(M,ww,kaiser(M+1,alph)); %调用firl计算高通FIRDF的h(n)
hk=fft(hn);
hk=freqz(hn,1,Fs); %滤波器频率响应
xn3=fftfilt(hn,x4); %重叠相加滤波器实现
sound(xn3,fs); %声音回放
yn3=fft(xn3);
figure(3);
subplot(2,1,1);
plot(xn3);
title('多正弦干扰滤波后信号波形');
subplot(2,1,2);
plot(abs(yn3)); %幅值
title('多正弦干扰滤波后信号频谱');
figure(4);
subplot(2,1,1);
stem(hn); %以空心的方式画出茎秆
title('凯塞窗h(n)波形');
subplot(2,1,2);
plot(abs(hk)); %赋值
title('凯塞窗h(n)信号频谱');