C语言实习论文-陈俊宏
课程设计总结论文
课程名称:高级语言编程课程设计
专业:电子信息工程
班级:132
学号姓名:陈俊宏
指导教师:李泽光
2014年7月9号
目录
(一)1、数字滤波器的设计与应用
2 、数字滤波器的设计与应用流程图及程序
(二)1 、离散傅立叶变换的应用
2、离散傅立叶变换的应用相应流程图及程序
(三 )本次实训,所获心得体会,以及自身不足
(一)数字滤波器的设计与应用
1.1 设计题目:基于正交双通道算法的正弦信号相位差的计算。
1.2 设计目的:通过该题的训练,使学生掌握连续信号的离散化处理、数字滤波器的设计与应用、卷积运算及其应用等许多数字信号处理技术,为工程实践打好基础。
1.3 设计目标:编写程序计算出结果并与预先所设的值比较,要求做到误差最小。
1.4 设计原理:两路被测同频正弦信号u(t)和i(t)各自经过两个乘法器,两个乘法器的另外两个输入端分别是互为正交的正弦本振信号SI(t)和SQ(t)。4个乘法器的输出信号经过低通滤波器处理后得到4个低频或直流信号HI1(t)、HQ1(t)、HI2(t)、HQ2(t)。通过计算,可以得到有功功率:
P=2[HI1(t)*HI2(t)+HQ1(t)*HQ2(t)]=(UmImcosθ)/2
无功功率:
Q=2[HQ1(t)*HI2(t)-HI1(t)*HQ2(t)]=(UmImsinθ)/2
视在功率:
S==UmIm/2
功率因子:
cosθ=P/S
相位差:
Θ=arccos(P/S)
2.1 流程图:
2.2 程序:
#include
#include
#define PI 3#define N 1025
#define fc 1000
void main()
{
int n;
float a,b,c,d,x,y,f0,f1,fs,HI1,HQ1,HI2,HQ2,U,I,P,Q,S;
float u[N],i[N],SI[N],SQ[N],UI[N],UQ[N],II[N],IQ[N],hd[N],h[N],w[N];
HI1=HQ1=HI2=HQ2=0;
printf("请输入被测信号的频率:\n");
scanf("%f",&f0);
printf("请输入本振信号的频率:\n");
scanf("%f",&f1);
printf("请输入采样频率:\n");
scanf("%f",&fs);
printf("请输入电压最大值:\n");
scanf("%f",&U);
printf("请输入电流最大值:\n");
scanf("%f",&I);
printf("请输入相位差:\n");
scanf("%f",&x);
x=x*PI/180;
for(n=0;n
{
a=2*PI*f0*n/fs;
b=2*PI*f1*n/fs;
u[n]=U*cos(a);
i[n]=I*cos(a+x);
SI[n]=cos(b);
SQ[n]=sin(b);
}
for(n=0;n
{
UI[n]=u[n]*SI[n];
UQ[n]=u[n]*SQ[n];
II[n]=i[n]*SI[n];
IQ[n]=i[n]*SQ[n];
}
for(n=0;n
{
if(n!=(N-1)/2)
{
c=2*PI*fc*(n-(N-1)/2)/fs;
hd[n]=2*fc*sin(c)/(fs*c);
}
else hd[n]=2*fc/fs;
w[n]=0.54-0.46*cos(2*PI*n/(N-1));
}
for(n=0;n
{
h[n]=hd[n]*w[n];
}
for(n=0;n
{
HI1=HI1+UI[n]*h[n];
HQ1=HQ1+UQ[n]*h[n];
HI2=HI2+II[n]*h[n];
HQ2=HQ2+IQ[n]*h[n];
}
P=2*(HI1*HI2+HQ1*HQ2);
Q=2*(HQ1*HI2-HI1*HQ2);
S=U*I/2;
y=P/S;
printf("有功功率为:%.6f\n",P);
printf("无功功率为:%.6f\n",Q);
printf("视在功率为:%.6f\