南昌航空大学实验报告
课程名称:C语言程序设计实验名称:正弦信号模拟采样及特征参数分析软件设计 班级:姓名:同组人: 指导教师评定:签名:
一、实验目的
1、了解正弦信号采样的基本原理; 2、了解正弦信号采样的离散处理方法;
3、进一步掌握C语言输入输出语句的使用和编程方法;
4、进一步掌握C语言顺序结构、选择结构和循环结构程序的编写;
5、进一步掌握C语言函数的定义和调用,数组、结构体及文件的使用及编程方法; 6、进一步培养把实际问题转化为C语言模型和模块化程序设计的能力。 二、实验内容
该实验要求对一输入正弦信号进行离散处理并对该信号的基本特征进行定量分析。采用不同的抽样频率分别求出该信号的有效值、峰峰值、平均值。 三、实验要求
具体功能指标要求如下:
1、 生成模拟信号Y(n)?Acos(2?ft??0)+B; 其中A(幅度值)、f(频率)、、?0(初相角)B(直流分量)由键盘输入;
2、 对该信号在一个周期内分别等间隔采样32、64点,并把采样的值分别存放在不同的数
组中;
注:采样的计算方法如下:设信号的频率为f,采样N点,则周期为T=1/f; 每两个采样点的间隔为⊿t=T/N。
第n点的采样值为:Y(n)?Acos(2?n/N??0)
+B分别计算信号的有效值、峰峰值、平均值,并在屏幕上显示;
?Y其中有效值计算公式为:
n?0N2(n)
N平均值计算公式为:Y平Y(n)? ?N峰峰值计算公式为: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
struct shuju {
double average; double virt; double peak;
//平均值 //有效值 //峰峰值
//存储每个采样点的数据
//结构体数组存放数据
double data[64];
}str[2];
//两次采样的数据分开存放
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 = 0;i < n;i++) { }
aver = sum / n; sum = sum + fp[i];
//用于求各个采样点的平均值
printf(\平均值:%lf\\n\p[m].average = aver;
//用于求每次不同间隔采样后的峰峰值
for(min = max = fp[0],i = 0;i < n;i++) //遍历找出最大值最小值 {
if(min > fp[i]) {