第一范文网 - 专业文章范例文档资料分享平台

北京工业大学信号处理工程应用训练

来源:用户分享 时间:2025/7/26 20:45:51 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

E、画出单频信号抽样后的频谱图 F、标出频谱图上的单频信号位置

Fs=110Hz未发生能量泄漏 Fs=200Hz未发生能量泄漏 F=50Hz对应k=120 F=50Hz对应k=66

fs=230Hz发生能量泄漏 fs=250Hz发生能量泄漏

F=50Hz 无法对应整数k F=50Hz 无法对应整数k

对X(k)信号进行反变换,再次得到x(n),与原始信号相对比,发现无论这五种抽样频率下,均能恢复原始信号。说明采样频率fs大于信号最高频率fc时,能不失真地恢复原信号,符合帕塞瓦尔定理。

源程序:

// 12yy.cpp : Defines the entry point for the console application. //

#include \

#include\#include\

COMPLEX

x[264],Y[264],X50,X[264],x1[264];//{{1,0},{2,0},{3,0},{4,0},{5,0},{6,0},{7,},{8,0}},X[]做完DFT之后的,Y[]是取模之后的DFT,x1[]为反DFT

void plotgri2(COLORREF gridcolor,COLORREF linecolor,COMPLEX p[],int N)

{ int i;

HPEN pen1=CreatePen(PS_SOLID,1,gridcolor),oldpen=(HPEN)SelectObject(win3.hdc,pen1); HPEN pen2=CreatePen(PS_SOLID,1,linecolor); //for(i=0;i

SelectObject(win3.hdc,pen2);

for(i=0;i

SelectObject(win2.hdc,oldpen); DeleteObject(pen1); DeleteObject(pen2); }

void chouyang(int N,double fs,int fc) //对正弦信号进行抽样 { int i; double t=0,dt; dt=1.0/fs; for(i=0;i

void main(void) { int N=264;//数据长度 int i,fc=50,fs=110,down,up;//fs可变fs=100hz;fs=110hz;fs=200hz;fs=230hz;fs=250hz double sumT,sumF,dt,aa,bb,bb1,EX50; for(i=0;i

window2(\函数图形显示\

//抽样出来的x[n]显示

window2(\函数图形显示\xy2(GREEN);//画xy轴。

plotgri2(BLUE,RED,x,264);//宏函数工具方式,注意x是形式上的宏参数,它指明后面函数的自变量。 getch(); frame2();

//对做完DFT的X[n]取模之后显示 for(i=0;i<264;i++) Y[i]=abs(X[i]);

window2(\函数图形显示\xy2(GREEN);//画xy轴。

plotgri2(BLUE,BLUE,Y,264);//宏函数工具方式,注意x是形式上的宏参数,它指明后面函数的自变量。 getch(); frame2();

for(sumT=0,sumF=0,i=0;i<264;i++) { sumT=sumT+x[i].r*x[i].r; sumF=sumF+X[i].r*X[i].r+X[i].i*X[i].i; }

printf(\时域能量和=%f,频域能量和=%f\\n\//求是否有频谱泄露

aa=50*N/fs; //aa:50HZ处对应的点; down=floor(aa);//向下取整 X50=Y[down]; EX50=pow(abs(X50),2)*2/N; printf(\运算%f\\n\getchar();

//求反DFT看是否可以恢复出原函数:

dft(x1,X,264,-1);

window2(\函数图形显示\xy2(GREEN );//画xy轴。

plotgri2(BLUE,RED,x1,264);//宏函数工具方式,注意x是形式上的宏参数,它指明后面函数的自变量。 getch(); frame2();

//验证DFT及其频谱泄露情况 N=250; fs=250;

for(i=0;i

chouyang(N,fs,fc);//对信号进行抽样,抽样频率为250hz,抽样点数为250点 window2(\函数图形显示\xy2(RED);//画xy轴。

plotgri2(BLUE,BLUE,x,250);//宏函数工具方式,注意x是形式上的宏参数,它指明后面函数的自变量。 getch(); frame2();

dft(X,x,250,1);//做250点DFT for(i=0;i<250;i++) Y[i]=abs(X[i]);

window2(\函数图形显示\xy2(RED);//画xy轴。

plotgri2(BLUE,BLUE,Y,250);//宏函数工具方式,注意x是形式上的宏参数,它指明后面函数的自变量。 getch(); frame2();

for(sumT=0,sumF=0,i=0;i<250;i++) { sumT=sumT+x[i].r*x[i].r; sumF=sumF+X[i].r*X[i].r+X[i].i*X[i].i; }

printf(\时域能量和=%f,频域能量和=%f\\n\//看是否有泄漏

aa=50*N/fs; //aa:50HZ处对应的点; down=floor(aa);//向下取整 X50=Y[down]; EX50=pow(abs(X50),2)*2/N; printf(\ printf(\运算%f\\n\getchar();

//验证反DFT可不可以恢复原信号 dft(x,X,250,-1);

window2(\函数图形显示\xy2(RED);//画xy轴。

plotgri2(BLUE,BLUE,x,250);//宏函数工具方式,注意x是形式上的宏参数,它指明后面函数的自变量。 getch();

搜索更多关于: 北京工业大学信号处理工程应用训练 的文档
北京工业大学信号处理工程应用训练.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c55xsu7y2cu3gzjv6v8mx_5.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top