C语言实验报告-正弦信号模拟采样及特征参数分析软件设计x

南昌航空大学实验报告

2012年12月13日

课程名称: C语言实验 实验名称:正弦信号模拟采样及特征参数分析软件设计

班级: xxxxx班 xx号 姓名: XXX 地点:

指导教J —签名

一、 实验目的

了解正弦信号采样的基本原理;

了解正弦信号采样的离散处理方法;

进一步掌握C语言输入输出语句的使用和编程方法;

进一步掌握C语言顺序结构、选择结构和循环结构程序的编写;

进一步掌握C语言函数的定义和调用,数组、结构体及文件的使用及编程方法;

进一步培养把实际问题转化为 C语言模型和模块化程序设计的能力。

二、 实验要求

生成模拟信号 Y(n)=Acos(2 n ft+ " )+B;其中A (幅度值)、f (频率)、“(初相角)、 B (直流分量)由键盘输入;

对该信号在一个周期内分别等间隔采样 32、64点,并把采样的值分别存放在不同

的数组中;

注:第n点的采样值为 Y(n)=Acos(2 n n/N + " )+B

分别计算信号的有效值、峰峰值、平均值,并在频幕上显示;

峰峰值计算公式为: 丫峰-峰=Yn max-Y n min

平均值计算公式为: Y平=刀Y(n) / N

完成对信号的幅度值、频率、初相角、有效值、峰峰值、平均值的显示并以文件形 式储存(选做部分)

三、 实验内容

该试验要求对一输入正弦信号进行离散处理并对该信号的基本特征进行定量分析。 采用

不同的抽样频率分别求出该信号的有效值、峰峰值、平均值。

四、 程序流程图

分别等间隔采样32点、64点

五、实验源程序及注释

#in clude<stdio.h>

#in clude<math.h>

void mai n()

{

float a,b,c,f,Upp,Up;

double Y32[32],Y64[64], n1,m1, n2,m2,U1,Up1,U2,U,Upp1,Upp2,Up2,max,mi n;

int i;

printf("Y(n)=Acos(2 n ft+ 0 )+B \n");

printf(" 请分别输入 A,f, 0 ,B的值\n");

printf("幅度值 A=");

scan f("%f",&a);

for(;f<=0;)

{

printf("频率 f=");

scan f("%f", &f);

if(f<=0) pri ntf("data is error!\n");

}

printf("初相角0 =");

scan f("%f",&b);

printf("直流分量 B=");

scan f("%f",&c);

printf("\n 等间隔32点采样\n");

for(i=0,n 1=0,m1=0,max=c-a, min=a+c;i<32;i++)

printf("%-5d",i+1);

Y32[i]=a*cos(6.28*i/32+b)+c; printf("%lf\n",Y32[i]);

n1=Y32[i]*Y32[i]+n1;

m1=Y32[i]+m1;

if(Y32[i]>=max) max=Y32[i]; if(Y32[i]<=min) min=Y32[i];

}

U1=sqrt(n1/32);

Upp1=max-min;

Up1=m1/32;

printf(" 有效值 U1=%lf\n",U1); printf(" 峰峰值 Upp1=%lf\n",Upp1); printf(" 平均值 Up1=%lf\n",Up1); printf("\n 等间隔 64 点采样 \n");

for(i=0,n2=0,m2=0,max=c-a,min=a+c;i<64;i++) {

printf("%-5d",i+1);

Y64[i]=a*cos(6.28*i/64+b)+c;

printf("%lf\n",Y64[i]);

n2=Y64[i]*Y64[i]+n2;

m2=Y64[i]+m2;

if(Y64[i]>=max) max=Y64[i];

if(Y64[i]<=min) min=Y64[i];

}

U2=sqrt(n2/64);

Upp2=max-min;

Up2=m2/64;

printf(" 有效值 U2=%lf\n",U2); printf(" 峰峰值 Upp2=%lf\n",Upp2); printf(" 平均值 Up2=%lf\n",Up2); U=sqrt(a*a/2+c*c);

Upp=2*a;

Up=c;

printf("\n 各项参数理论值为 :\n");

printf(” 幅度值 A=%f\n频率f=%f\n 初相角? =%f\n直流分量 B=%f\n有效值

U=%lf\n 峰峰值 Upp=%f\n 平均值 Up=%f\n",a,f,b,c,U,Upp,Up);

六、结果分析

七、实验小结