haihongyuan.com
海量文库 文档专家
全站搜索:
您现在的位置:首页 > 小学教育 > 小学其它学科小学其它学科

北邮-DSP软件实验报告

发布时间:2014-01-31 09:44:50  

1、

【实验代码】:

>> N=5000;

n=1:1:N;

x=0.001*cos(0.45*pi*n)+sin(0.3*pi*n)-cos(0.302*pi*n-pi/4); y=fft(x,N);

magy=abs(y(1:1:N/2+1));

k=0:1:N/2;w=2*pi/N*k;

stem(w/pi,magy);

title('离散信号频谱分析');

axis([0.25,0.5,0,50])

【实验波形】:

2、

clear

close all

column=[1209,1336,1477,1633];

line=[697,770,852,941];

fs=8000;

N=1024;

ts=1/fs;

n=0:N-1;

f=0:fs/N:fs/N*(N-1);

key=zeros(16,N); //全零矩阵

key(1,:)=cos(2*pi*column(1)*ts*n)+cos(2*pi*line(1)*ts*n);

key(2,:)=cos(2*pi*column(2)*ts*n)+cos(2*pi*line(1)*ts*n);

key(3,:)=cos(2*pi*column(3)*ts*n)+cos(2*pi*line(1)*ts*n);

key(4,:)=cos(2*pi*column(1)*ts*n)+cos(2*pi*line(2)*ts*n);

key(5,:)=cos(2*pi*column(2)*ts*n)+cos(2*pi*line(2)*ts*n);

key(6,:)=cos(2*pi*column(3)*ts*n)+cos(2*pi*line(2)*ts*n);

key(7,:)=cos(2*pi*column(1)*ts*n)+cos(2*pi*line(3)*ts*n);

key(8,:)=cos(2*pi*column(2)*ts*n)+cos(2*pi*line(3)*ts*n);

key(9,:)=cos(2*pi*column(3)*ts*n)+cos(2*pi*line(3)*ts*n);

key(10,:)=cos(2*pi*column(2)*ts*n)+cos(2*pi*line(4)*ts*n);

figure;

for i=1:10

subplot(4,4,i)

plot(f,abs(fft(key(i,:)))); // key(i,:)第i行的所有元素

grid; //图上加坐标网格

end

2、

【实验代码】:

date=input('请键入电话号码: ','s'); % 输入电话号码

sum=length(date);

total_x=[];

all_f=[];

for a=1:sum %循环sum次

% 求输入的ASCII码

tm=[49,50,51,65;52,53,54,66;55,56,57,67;42,48,35,68]; %键盘对应的 16个ASCII码 for p=1:4;

for q=1:4;

if tm(p,q)==abs(date(a)); break,end % 检测码相符的列号q end

if tm(p,q)==abs(date(a)); break,end % 检测码相符的行号p end

f1=[697,770,852,941]; % 行频率向量

f2=[1209,1336,1477,1633]; % 列频率向量 % 为了发声,加长序列

n=1:400;%n是400个

fs=8000;

x=sin(2*pi*n*f1(p)/fs) + sin(2*pi*n*f2(q)/fs); % 构成 双频信号 fs=8000。x是400个。

x=[x,zeros(1,400)];%x为1行400列x+400个0的数组(800个数字,抽样频率8000HZ,每个号码100ms)

total_x=[total_x x]; %将所编码连接起来

end

wavwrite(total_x,'sunjialu')

sound(total_x); % 发出声音

subplot(2,1,1);

plot(total_x);

title('手机号DTMF信号时域波形')

xk=fft(x); %对x信号做fft变换得到频域X(k)

mxk=abs(xk); %求频域幅度

subplot(2,1,2);

k=(1:800)*sum*fs/800;

plot(k,mxk); %幅度频谱

xlabel('频率');

title('手机号DTMF信号频谱');

%

disp('双频信号已生成并发出') %dis显示

% 接收检测端的程序

k = [18 20 22 24 31 34 38 42]; % 要求的DFT样本序号k=N*f(k)/f(s)

N=205; %假设DFT长度N为205(书)

disp(['接收端解码得到的号码为'])

decision_result=-1*ones(1,11);

for a=1:sum

m=800*(a-1); %每800个取一个电话号码

X=goertzel(total_x(m+1:m+N),k+1); % 用Goertzel算法计算八 点DFT样本 arr = abs(X) % 列出八点DFT向量

mark=zeros(1,8);

max_limit = 80; %将大于80的X选出来

for r=1:4;

if arr(r) > max_limit, mark(r)=1; break, end % 查找行号

end

for s=5:8;

if arr(s) > max_limit, mark(s)=1; break, end % 查找列号

end

%进行DTMF解码判决

if(mark(4)*mark(6)==1) decision_result(a)=0;end;

if(mark(1)*mark(5)==1) decision_result(a)=1;end;

if(mark(1)*mark(6)==1) decision_result(a)=2;end;

if(mark(1)*mark(7)==1) decision_result(a)=3;end;

if(mark(2)*mark(5)==1) decision_result(a)=4;end;

if(mark(2)*mark(6)==1) decision_result(a)=5;end;

if(mark(2)*mark(7)==1) decision_result(a)=6;end;

if(mark(3)*mark(5)==1) decision_result(a)=7;end;

if(mark(3)*mark(6)==1) decision_result(a)=8;end;

if(mark(3)*mark(7)==1) decision_result(a)=9;end;

subplot(3,4,a);

all_f=[f1,f2];

stem(all_f,abs(X));

disp([setstr(tm(r,s-4))]) % 显示接收到的字符

end

decision_result % 显示电话号码

【实验波形】

3、实验结果:

【实验代码】:

[x,fs,bits]=wavread('C:\Users\Administrator\Desktop\大三实验\DSP软件\hw12.wav');% [x,fs,bits]=[信号,采样频率,采样精度]

snr=20; %信噪比为20dB

x2=awgn(x,snr,'measured');%在信号x中加入高斯白噪声

wavwrite(x2,32000,16,'hw12_1.wav ');

t=0:1/fs:(size(x2)-1)/fs;

wp=8000*pi/32000;

ws=9000*pi/32000; wdelta=ws-wp;%过度带宽

N=ceil(11*pi/wdelta);%取整,算出窗的宽度N

wn=(ws+wp)/2; %窗函数截止频率

b=fir1(N,wn/pi,blackman(N+1)); %选择窗函数布莱克曼窗,并归一化截止频率

%(返回6dB截止频率为wc的N阶(单位脉冲响应h(n)长度N=M+1)FIR低通(wc为标量)滤波器系数向量hn,默认选用哈明窗。)

figure(1)

freqz(b,1,512) %得到数字滤波器的频响,b,a是差分的系数,n为点数,fs是采样频率,n不设置时,默认为512

f2=filter(b,1,x2);%f2是x2信号经过滤波器:布莱克曼窗函数后的信号 figure(2)

subplot(2,1,1)

plot(t,x2)

title('滤波前时域波形'); %x2

subplot(2,1,2)

plot(t,f2); %f2

title('滤波后时域波形');

F0=fft(f2,1024);%对于加入噪声的信号的频率响应f2进行FFT变换 f=fs*(0:511)/1024;

figure(3)

y2=fft(x2,1024); %对于加入噪声的信号x2进行FFT变换

subplot(2,1,1);

plot(f,abs(y2(1:512)));

title('滤波前频谱')

xlabel('Hz');

ylabel('幅度');

subplot(2,1,2)

F2=plot(f,abs(F0(1:512)));

title('滤波后频谱')

xlabel('Hz');

ylabel('幅度');

wavwrite(f2,32000,16,'hw12.wav _2');

播放原声音:

sound(x, fs);

播放加了噪声的声音:

[f2,fs,bits]=wavread('hw12.wav _2');

sound(f2, fs);

播放消除噪声的声音:

[x2,fs,bits]=wavread('hw12_1.wav');

sound(x2, fs);

【实验波形】:

滤波器,幅频,相频频谱图:

上一篇:科学期中复习提纲
下一篇:数学成绩
网站首页网站地图 站长统计
All rights reserved Powered by 海文库
copyright ©right 2010-2011。
文档资料库内容来自网络,如有侵犯请联系客服。zhit326@126.com