南昌航空大学实验报告.docx

上传人:牧羊曲112 文档编号:3347608 上传时间:2023-03-12 格式:DOCX 页数:8 大小:38.85KB
返回 下载 相关 举报
南昌航空大学实验报告.docx_第1页
第1页 / 共8页
南昌航空大学实验报告.docx_第2页
第2页 / 共8页
南昌航空大学实验报告.docx_第3页
第3页 / 共8页
南昌航空大学实验报告.docx_第4页
第4页 / 共8页
南昌航空大学实验报告.docx_第5页
第5页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《南昌航空大学实验报告.docx》由会员分享,可在线阅读,更多相关《南昌航空大学实验报告.docx(8页珍藏版)》请在三一办公上搜索。

1、南昌航空大学实验报告南昌航空大学实验报告 课程名称:C语言程序设计实验名称:正弦信号模拟采样及特征参数分析软件设计 班级:姓名:同组人: 指导教师评定:签名: 一、实验目的 1、了解正弦信号采样的基本原理; 2、了解正弦信号采样的离散处理方法; 3、进一步掌握C语言输入输出语句的使用和编程方法; 4、进一步掌握C语言顺序结构、选择结构和循环结构程序的编写; 5、进一步掌握C语言函数的定义和调用,数组、结构体及文件的使用及编程方法; 6、进一步培养把实际问题转化为C语言模型和模块化程序设计的能力。 二、实验内容 该实验要求对一输入正弦信号进行离散处理并对该信号的基本特征进行定量分析。采用不同的抽

2、样频率分别求出该信号的有效值、峰峰值、平均值。 三、实验要求 具体功能指标要求如下: 1、 生成模拟信号Y(n)=Acos(2pft+y0)+B; 其中A、f、y0B(直流分量)由键盘输入; 2、 对该信号在一个周期内分别等间隔采样32、64点,并把采样的值分别存放在不同的数组中; 注:采样的计算方法如下:设信号的频率为f,采样N点,则周期为T=1/f; 每两个采样点的间隔为t=T/N。 第n点的采样值为:Y(n)=Acos(2pn/N+y0) +B分别计算信号的有效值、峰峰值、平均值,并在屏幕上显示; Y其中有效值计算公式为:n=0N2(n)N平均值计算公式为:Y平Y(n) =N峰峰值计算公

3、式为:Y峰-峰=Ynmax-Ynmin 3、 完成对信号的幅度值、频率、初相角、有效值、峰峰值、平均值的显示并以文件形式存储。 四、实验流程图 开始 输入A、f、x、B(直流分量) 各采样点数据:f(n) = A * cos(2 * PI * f * t + x) + B注:(t = n / (f * N) N分别取值为32、64 Y平Y(n)=N Y峰峰=Ymax - Ymin 输出有效值、平均值、峰峰值,并将各点的值存入结构体数组中,将结构体数组写入磁盘 结束 四实验源程序 、/*/ /*正弦信号模拟采样及特征参数分析软件设计*/ /*/ #include #include #includ

4、e #define PI 3.1415926 struct shuju double average; double virt; double peak; /平均值 /有效值 /峰峰值 /存储每个采样点的数据 /结构体数组存放数据 double data64; str2; /两次采样的数据分开存放 struct shuju *p = str; void value(double *fp,int n,int m) void fun(double *fp,int n,int m) int i; double min,max; int i; double sum = 0,aver; for(i =

5、0;i n;i+) aver = sum / n; sum = sum + fpi; /用于求各个采样点的平均值 printf(平均值:%lfn,aver); pm.average = aver; /用于求每次不同间隔采样后的峰峰值 for(min = max = fp0,i = 0;i fpi) min = fpi; if(max fpi) max = fpi; printf(峰峰值为:%lfn,max - min); pm.peak = (max - min); void fun1(double *fp,int n,int m) void write int i; FILE *fp; in

6、t i; double sum = 0,yx; for(i = 0;i n;i+) yx = sqrt(sum / n); sum = sum + fpi * fpi; /用于求每次采样的有效值 /sum用于寄存累加数据 yx存放有效值 printf(有效值为:%lfn,yx); pm.virt = yx; if(fp = fopen(G:b.txt,w) = NULL) /判断文件写入是否出错 else fprintf(fp,32点采样数据:n); for(i =1;i = 8 & i % 8 = 0) fprintf(fp,n); printf(写入文件出错!n); exit(1); fp

7、rintf(fp,%lf ,p0.peak); fprintf(fp,%lf ,p0.virt); fprintf(fp,n); fprintf(fp,n64点采样数据:n); for(i =1;i = 8 & i % 8 = 0) fprintf(fp,n); int main int i; double A,f,x,B,t; /A、f、x、B(直流分量) printf(请输入A、f、x、B(直流分量)n); scanf(%lf%lf%lf%lf,&A,&f,&x,&B); for(i = 0;i 32;i+) printf(32点采样的数据为:n); for(i = 1;i = 32;i+

8、) value(p0.data,32,0); fun(p0.data,32,0); fun1(p0.data,32,0); for(i = 0;i = 8 & (i % 8) = 0) printf(n); /控制每行输出的数据个数 t = (i + 1) / (f * 32); p0.datai = A * cos(2 * PI * f * t + x) + B; t = (i + 1) / (f * 64); p1.datai = A * cos(2 * PI * f * t + x) + B; printf(64点采样数据为:n); for(i = 1;i = 8 & (i % 8) =

9、 0) printf(n); /控制每行输出的数据个数 四、结果分析 程序通过输入A、f、x、B(直流分量),生成模拟信号数据,分别建立32、64个采样点进行数据采集,然后调用函数进行计算有效值、平均值、峰峰值,并将结果写入磁盘中。 五、实验小结 1、程序较长,在定义变量时注意是否与函数名重复,变量的定义尽量做到见名知意,在关键位置程序函数开头进行注释,方便程序阅读。 2、在编程过程中,参数的类型注意一致,参数的类型不一可能会影响到数据结果,根据题目的实际要求适当调整参数的形式。 3、对概念要清楚,在调用函数时明确该传递什么信息、参数,该返回什么内容,防止在函数调用过程中出错! 4、学会调试程序,在程序输出结果与预期不相符时,试着动手调试程序,修改程序。

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号