收藏 分享(赏)

数字信号处理实验99792new.doc

上传人:dreamzhangning 文档编号:2305989 上传时间:2018-09-10 格式:DOC 页数:10 大小:315.50KB
下载 相关 举报
数字信号处理实验99792new.doc_第1页
第1页 / 共10页
数字信号处理实验99792new.doc_第2页
第2页 / 共10页
数字信号处理实验99792new.doc_第3页
第3页 / 共10页
数字信号处理实验99792new.doc_第4页
第4页 / 共10页
数字信号处理实验99792new.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、数字信号处理实验报告姓 名: 学 号: 专业班级: 2011 年 11 月3.1Matlab 数组索引现在写一条语句,xx用(b)中定义的方法,把xx的偶数索引的元素 (即xx(2),xx(4) 等)的值替换为常数 。使用向量替换,不要用循环。xx(2:2:12)=pixx = zeros(1,3), linspace(0,1,5), ones(1,4) yy = xx; yy(2:2:12) = pipi 3.2Matlab 脚本文件解释为什么需要写yy(k+6)。如果用yy(k)会发生什么?系统提示要使用正值,指令无法执行。因为 k 初值为负值,如果作下标会导致程序向 yy 变量所占内存之

2、前的内存中写入数据,这可能导致错误。K 从-5 开始 使用+6 保证括号内为正数使用 YY(k)则提示 index must be a positive integer or logical.解释为什么real(zz) 的图形是一个正弦曲线。它的相位和幅度是多少?由所绘图形的时移量计算相位。取zz 的实部可得到一个正弦函数,Z 取实部为 cos(/2+5 *tt )*1.4 为一正弦函数 相位 /2+5*tt 幅度为 1.4图有 T=0.4 则 W=5 tt=0 时 值为 0 初相位 /2 故相位为 /2+5*tt即复指数的实部是一个余弦函数,但是由于乘以了复数因子 exp(j*pi/2),因

3、此导致相位增加了 90 度,所以是一个正弦函数。4.用 Matlab 处理正弦信号(b)生成以下两个4000Hz的正弦序列:x1(t) = A1 cos(2(4000)(t tm1) x2(t) = A2 cos(2(4000)(t tm2) 其中A1是你的年龄, A2=1.2A1,tm1 = (37.2/M)T ,tm2 = (41.3/D)T ,这里M和D分别是你生日的月和日,T是周期绘制以上两个信号在-TtT的图形。为了输出下面( d)的要求,使用subplot(3,1,1)和subplot(3,1,2)来使图在一个图形窗口内,详见 helpwin subplot一般用法是:subplo

4、t(2,1,2);plot(xx);(c)创建第 3个正弦信号为 x3(t) = x1(t) + x2(t). 在Matlab 中,这表示把两个正弦向量中的值对应相加。绘制 x3(t) 在-TtT的图形,使用subplot(3,1,3) 绘图。(d)对每个图都添加一个图名,图名都要包含你的姓名,用title函数详见 helpwin title, helpwin subplottt=-0.00025:0.00001:0.000025A1=19M=5D=20 T=0.00025A2=1.2*A1 tm1 = (37.2/M)*T tm2 = -(41.3/D)*Tx1 = A1* cos(2*pi

5、*(4000)*(tt - tm1) x2 = A2* cos(2*pi*(4000)*(tt - tm2) subplot(3,1,1)plot(tt,x1)title(刘非凡 ) xlabel(TIME (sec)subplot(3,1,2) plot(tt,x2)title(刘非凡 ) xlabel(TIME (sec) x3=x1+x2subplot(3,1,3)plot(tt,x3)title(刘非凡 ) xlabel(TIME (sec) 5.3 向量化Ma 用这种向量化的方法编写23 行代码完成以下Matlab代码,不使用循环。(注:当 xx是向量时,xx*xx和xx.*xx是不

6、同的)N = 200; rk(1:200) = sqrt( (1:N).*(1:N)/2500 + 2.25 );sig(1:200) = exp(j*2*pi*rk(1:200); plot( xk, real(sig), mo- )%- make a plot of a weird signal N = 200; for k=1:N xk(k) = k/50; rk(k) = sqrt( xk(k)*xk(k) + 2.25 ); sig(k) = exp(j*2*pi*rk(k); end plot( xk, real(sig), mo- ) 向量化改写的代码如下:N=200;yy=sq

7、rt(1/50:1/50:N/50).*(1/50:1/50:N/50)+2.25);zz=exp(2*j*pi*yy);plot(1:N,yy,b-,1:N,real(zz),r-)6.复指数6.1 生成正弦信号的 M-文件写一个可以生成单一正弦信号x(t) = Acos(t+)的函数,使用4个输入参量:幅度A,频率,相位和时长 dur。函数应当返回两个输出参量:正弦信号的值x 和对应的时间t。确保函数生成的正弦信号在每个周期有20个值,函数名为one_cos()。提示:可借鉴上面的goodcos()函数。function xx,tt = one_cos(a,w,th,dur) tt = 0

8、:pi/(10*w):dur; %- gives 100 samples per period xx = a*cos(2*w*tt+th)绘制你们的one_cos()函数,参数选为:A=95,=200弧度秒,=/5弧度,时长为0.025秒。推导所绘图形的周期和相位是否正确。如果周期以毫秒为单位是多少?10ms7 线性调频脉冲 chirp再合成一个chirp信号,使用如下参数:1.总时长为3秒,采样率为fs=11025Hz2.频率起始于3000Hz,终止于 -2000Hz(负频率)听一听信号。频率是怎么变化的?显示这个chirp信号的声谱图。使用频谱理论(正频率成分和负频率成分)解释你听到的声音

9、和看到的声谱图。Chirp信号生成代码:function xx,tt = mychirp( f1, f2, dur, fsamp ) uu=(f2-f1)/(2*dur);dt = 1/fsamp; tt=0:dt:dur;ff=2*pi*uu*tt.*tt+2*pi*f1*tt;xx=cos(ff);end(二) 、设计数字滤波器滤除语音信号中的干扰1、使用 Matlab 的 fft 函数对语音信号进行频谱分析,找出干扰信号的频谱;2、设计数字滤波器滤除语音信号中的干扰分量,并进行播放对比。要求:对后半段有明显正弦干扰的声音文件进行滤波。functionfft_data,faudio_dat

10、a,ffft_data=filter1(audio_data)%fft_data %ffft_data %faudio_data %对 FFT 进行一次快速离散傅里叶变换fft_data=fft(audio_data); N=length(fft_data); %N 为离散傅里叶变换的点数%利用1,A,1滤波器进行滤波%根据对称性,总共设计四个滤波器,分别滤掉 4 个频率上的正弦波干扰%使用 filter 函数进行卷积,故先设置一个参数序列A=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0%第一次滤波temp,k = max(fft_data);A1=-2*cos(

11、2*pi*k/N);h1=1,A1,1;faudio_data=filter(h1,A,audio_data);ffft_data=fft(faudio_data);subplot(3,2,1)plot(abs(ffft_data)title(第一次滤波之后 )%第二次滤波temp,k = max(ffft_data);A2=-2*cos(2*pi*k/N);h2=1,A2,1;faudio_data=filter(h2,A,faudio_data);ffft_data=fft(faudio_data);subplot(3,2,2)plot(abs(ffft_data)title(第二次滤波之

12、后 )%第三次滤波temp,k = max(ffft_data);A3=-2*cos(2*pi*k/N);h3=1,A3,1;faudio_data=filter(h3,A,faudio_data);ffft_data=fft(faudio_data);subplot(3,2,3)plot(abs(ffft_data)title(第三次滤波之后 )%第四次滤波temp,k = max(ffft_data);A4=-2*cos(2*pi*k/N);h4=1,A4,1;faudio_data=filter(h4,A,faudio_data);ffft_data=fft(faudio_data);s

13、ubplot(3,2,4)plot(abs(ffft_data)title(第四次滤波之后 )subplot(3,2,5);plot(audio_data);title(滤波之前的时域图)subplot(3,2,6);plot(faudio_data);title(滤波之后的时域图)原理解释:经过计算可知,|H(w)|=|A+2cos(w)| 。而由于是在离散频域内进行滤波,所以令 w=(2k*pi/N)即可。首先对声音文件进行 FFT 得到 fft_data。然后用 length 求出其长度 N。之后,用 max 函数找出 fft_data 最大值所对应的横坐标 k,代入 w 的表达式,算出 A。随后,用原声音信号 audio_data 与 h(n)进行线性卷积。将这里得到的信号用上述步骤再进行三次滤波即可。每次滤波之后画出频谱图,并且将最后的声音信号作为输出返回,在 matlab 命令行中利用soundsc 听滤波之后的声音。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报