#include<stdio.h> #include<string.h> #include<stdlib.h> #define N 100 int iNumOfStu=0; struct score { float math; float english; float computer; }; struct student { int number; char name[20]; struct score sco; float average; }; struct student stu[N]; void print_menu(void);//输出菜单 void choosemenu(void);//菜单选择 void input_student1(int);//输入学生信息 void input_student2(void);//输入总函数 void input_student3(int &,int);//判断学号是否重复 void input_student4(int,int);//覆盖原信息 void sort_student3(student s[],int);//按照英语成绩排序 void sort_student4(student s[],int);//按照计算机成绩排序 void sort_student2(student s[],int);//按照数学成绩排序 void sort_student5(student s[],int);//按照平均成绩排序 float input_score2(int);//计算学生平均成绩 void print_student2(void);//显示表头 void print_student3(int);//显示学生信息 void print_student1(int);//显示全部学生资料 void sort_student1(void);//排序总函数 void menu(void);//菜单调度总函数 int search_student2(int);//按学号查询学生信息并输出 void search_student3(int);//按平均分最高查询并输出 void search_student1(void);//查询总函数 void delete_student2(int,int);//删除学生信息 void delete_student1(void);//删除总函数 void change_student2(int);//修改学生资料 void change_student1(void);//修改总函数 void input_score3(int);//统计成绩 void input_score1(void);//统计成绩总函数 void print_help(void);//输出帮助信息 void exit_student(void);//退出系统 void save_student(student *,int);//保存学生信息 void main() { menu(); } void save_student(student *s,int a)//保存学生信息 { FILE *fp; if((fp=fopen("d:\\学生信息.txt","wb"))==NULL) { printf("不能打开文件!\n"); } else { printf("保存信息到D盘\n"); fprintf(fp,"本班所有学生具体信息如下:\r\n"); fprintf(fp," 学号 姓名 数学成绩 英语成绩 计算机成绩 平均成绩\r\n"); for(int i=0;i<a;i++) { fprintf(fp,"%8d%12s%14.2f%14.2f%14.2f%14.2f\n",stu[i].number,stu[i].name,stu[i].sco.math,stu[i].sco.english,stu[i].sco.computer,stu[i].average); fprintf(fp,"\r\n"); } fclose(fp); printf("信息保存成功!\n"); } } void exit_student(void)//退出系统 { exit(1); } void print_help(void)//输出帮助信息 { printf("本系统所能容纳的最大学生数为%d人\n学生信息保存在D盘根目录下,保存文件为“学生信息.txt”。\n感谢使用!\n",N); } void input_score1(void)//统计成绩总函数 { int c; c=search_student2(iNumOfStu); printf("学号:%d\n",stu[c].number); printf("姓名:%s\n",stu[c].name); input_score3(c); printf("新成绩录入成功!\n"); stu[c].average=input_score2(c); } void input_score3(int a)//统计成绩 { printf("数学新成绩:"); scanf("%f",&stu[a].sco.math); printf("英语新成绩:"); scanf("%f",&stu[a].sco.english); printf("计算机新成绩:"); scanf("%f",&stu[a].sco.computer); } void change_student2(int a)//修改学生资料 { printf("学号:%d----修改为:",stu[a].number); scanf("%d",&stu[a].number); getchar(); printf("姓名:%s----修改为:",stu[a].name); gets(stu[a].name); printf("数学成绩:%.2f----修改为:",stu[a].sco.math); scanf("%f",&stu[a].sco.math); printf("英语成绩:%.2f----修改为:",stu[a].sco.english); scanf("%f",&stu[a].sco.english); printf("计算机成绩:%.2f----修改为:",stu[a].sco.computer); scanf("%f",&stu[a].sco.computer); } void change_student1(void)//修改总函数 { int c; c=search_student2(iNumOfStu); getchar(); printf("是否要修改此学生信息?(“y”代表是)"); char d; scanf("%c",&d); if(d=='y'||d=='Y') { change_student2(c); stu[c].average=input_score2(c); printf("信息修改成功!\n"); } } void delete_student1(void)//删除总函数 { int c; c=search_student2(iNumOfStu); getchar(); printf("是否删除此条记录?(“y”代表是)"); char d; scanf("%c",&d); if(d=='y'||d=='Y') { delete_student2(c,iNumOfStu); printf("记录已删除!\n"); } } void delete_student2(int a,int b)//删除学生信息 { for(int i=a;i<b-1;i++) { stu[i]=stu[i+1]; } --iNumOfStu; } void search_student1(void)//查询总函数 { printf("1、按学号查询\n2、按平均分最高查询\n请选择:"); int c; scanf("%d",&c); switch(c) { case 1: { search_student2(iNumOfStu); break; } case 2: { search_student3(iNumOfStu); break; } default: break; } } void menu(void)//菜单调度总函数 { print_menu(); choosemenu(); } void sort_student1(void)//排序总函数 { printf("1、按数学成绩排序\n2、按英语成绩排序\n3、按计算机成绩排序\n4、按平均成绩排序\n请选择:"); int c; scanf("%d",&c); switch(c) { case 1: { sort_student2(stu,iNumOfStu); break; } case 2: { sort_student3(stu,iNumOfStu); break; } case 3: { sort_student4(stu,iNumOfStu); break; } case 4: { sort_student5(stu,iNumOfStu); break; } default: break; } } void print_student1(int a)//显示全部学生资料 { printf("本班所有学生具体信息如下\n"); print_student2(); for(int i=0;i<a;i++) { print_student3(i); } } void print_student3(int a)//显示学生信息 { printf("%8d%12s%14.2f%14.2f%14.2f%14.2f\n",stu[a].number,stu[a].name,stu[a].sco.math,stu[a].sco.english,stu[a].sco.computer,stu[a].average); } void print_student2(void)//显示表头 { printf(" 学号 姓名 数学成绩 英语成绩 计算机成绩 平均成绩\n"); } void input_student4(int a,int b)//覆盖原信息 { stu[a]=stu[b-1]; --iNumOfStu; } void input_student3(int &a,int b)//判断学号是否重复 { if(a!=0) { int i=0; do { if(stu[a].number==stu[i].number) { printf("此学号代表的学生已录入\n1、覆盖原信息\n2、重新输入\n请选择:"); int c; scanf("%d",&c); switch(c) { case 1: { input_student4(i,iNumOfStu); a=iNumOfStu-1; printf("信息已替换!\n"); break; } case 2: { printf("请重新输入学生信息:\n"); input_student1(iNumOfStu-1); break; } default: break; } break; } ++i; } while(i<b-1); } } void print_menu(void)//输出菜单 { printf("======欢迎来到学生信息管理系统======\n"); printf(" 1、输入学生资料\n"); printf(" 2、删除学生资料\n"); printf(" 3、查询学生资料\n"); printf(" 4、修改学生资料\n"); printf(" 5、显示学生资料\n"); printf(" 6、统计学生成绩\n"); printf(" 7、排序学生成绩\n"); printf(" 8、保存学生资料\n"); printf(" 9、获取帮助信息\n"); printf(" 10、退出系统\n"); printf("====================================\n"); printf("请选择:"); } void input_student2(void)//输入总函数 { char end; printf("请输入学生信息(在最后一个学生信息录入完成后以“/”结束录入):\n"); for(int i=0;(end=getchar())!='/';i++) { input_student1(i); ++iNumOfStu; input_student3(i,iNumOfStu); } for(int j=0;j<iNumOfStu;j++) { stu[j].average=input_score2(j); } } void input_student1(int a)//输入学生信息 { printf("学号:"); scanf("%d",&stu[a].number); getchar(); printf("姓名:"); gets(stu[a].name); printf("数学成绩:"); scanf("%f",&stu[a].sco.math); printf("英语成绩:"); scanf("%f",&stu[a].sco.english); printf("计算机成绩:"); scanf("%f",&stu[a].sco.computer); } float input_score2(int a)//计算学生平均成绩 { return (stu[a].sco.math+stu[a].sco.english+stu[a].sco.computer)/3; } void search_student3(int a)//按平均分最高查询并输出 { int max=0; for(int i=0;i<a;i++) { if(stu[max].average<stu[i].average) { max=i; } } print_student2(); print_student3(max); } void sort_student2(student s[],int a)//按照数学成绩排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].sco.math>stu[max].sco.math) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } void sort_student3(student s[],int a)//按照英语成绩排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].sco.english>stu[max].sco.english) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } void sort_student4(student s[],int a)//按照计算机成绩排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].sco.computer>stu[max].sco.computer) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } void sort_student5(student s[],int a)//按照平均成绩排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].average>stu[max].average) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } int search_student2(int a)//按照学号查找学生并输出 { int num; int c; printf("请输入要查询的学号:"); scanf("%d",&num); for(int i=0;i<a;i++) { if(num==stu[i].number) { c=i; } } printf("此学生的信息是:\n"); print_student2(); print_student3(c); return c; } void choosemenu(void)//菜单选择 { int i; scanf("%d",&i); switch(i) { case 1: { input_student2(); printf("按回车键返回主菜单"); getchar(); getchar(); menu(); break; } case 2: { delete_student1(); printf("按回车键返回主菜单"); getchar(); getchar(); menu(); break; } case 3: { search_student1(); printf("按回车键返回主菜单"); getchar(); getchar(); menu(); break; } case 4: { change_student1(); printf("按回车键返回主菜单"); getchar(); getchar(); menu(); break; } case 5: { print_student1(iNumOfStu); printf("按回车键返回主菜单"); getchar(); getchar(); menu(); break; } case 6: { input_score1(); printf("按回车键返回主菜单"); getchar(); getchar(); menu(); break; } case 7: { sort_student1(); printf("按回车键返回主菜单"); getchar(); getchar(); menu(); break; } case 8: { save_student(stu,iNumOfStu); printf("按回车键返回主菜单"); getchar(); getchar(); menu(); break; } case 9: { print_help(); printf("按回车键返回主菜单"); getchar(); getchar(); menu(); break; } case 10: { exit_student(); } default: break; } } 运行结果: 源文件下载地址: http://115.com/file/clnq138g#一个简单的学生成绩管理系统.rar (请将此地址复制到浏览器地址栏中访问下载页面) #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 100 int iNumOfStu=0; struct score { float math; float english; float computer; }; struct student { int number; char name[20]; struct score sco; float average; }; struct student stu[N]; void print_menu(void);//输出菜单 void choosemenu(void);//菜单选择 void input_student1(int);//输入学生信息 void input_student2(void);//输入总函数 void input_student3(int &,int);//判断学号是否重复 void input_student4(int,int);//覆盖原信息 void sort_student3(student s[],int);//按照英语成绩排序 void sort_student4(student s[],int);//按照计算机成绩排序 void sort_student2(student s[],int);//按照数学成绩排序 void sort_student5(student s[],int);//按照平均成绩排序 float input_score2(int);//计算学生平均成绩 void print_student2(void);//显示表头 void print_student3(int);//显示学生信息 void print_student1(int);//显示全部学生资料 void sort_student1(void);//排序总函数 void menu(void);//菜单调度总函数 int search_student2(int);//按学号查询学生信息并输出 void search_student3(int);//按平均分最高查询并输出 void search_student1(void);//查询总函数 void delete_student2(int,int);//删除学生信息 void delete_student1(void);//删除总函数 void change_student2(int);//修改学生资料 void change_student1(void);//修改总函数 void input_score3(int);//统计成绩 void input_score1(void);//统计成绩总函数 void print_help(void);//输出帮助信息 void exit_student(void);//退出系统 void save_student(student *,int);//保存学生信息 void main() { menu(); } void save_student(student *s,int a)//保存学生信息 { FILE *fp; if((fp=fopen("d:\\学生信息.txt","wb"))==NULL) { printf("不能打开文件!\n"); } else { printf("保存信息到D盘\n"); fprintf(fp,"本班所有学生具体信息如下:\r\n"); fprintf(fp," 学号 姓名 数学成绩 英语成绩 计算机成绩 平均成绩\r\n"); for(int i=0;i<a;i++) { fprintf(fp,"%8d%12s%14.2f%14.2f%14.2f%14.2f\n",stu[i].number,stu[i].name,stu[i].sco.math,stu[i].sco.english,stu[i].sco.computer,stu[i].average); fprintf(fp,"\r\n"); } fclose(fp); printf("信息保存成功!\n"); } } void exit_student(void)//退出系统 { exit(1); } void print_help(void)//输出帮助信息 { printf("本系统所能容纳的最大学生数为%d人\n学生信息保存在D盘根目录下,保存文件为“学生信息.txt”。\n感谢使用!\n",N); } void input_score1(void)//统计成绩总函数 { int c; c=search_student2(iNumOfStu); printf("学号:%d\n",stu[c].number); printf("姓名:%s\n",stu[c].name); input_score3(c); printf("新成绩录入成功!
标签: c语言
上传时间: 2019-06-09
上传用户:啊的撒旦
# include<stdio.h> # include<math.h> # define N 3 main(){ float NF2(float *x,float *y); float A[N][N]={{10,-1,-2},{-1,10,-2},{-1,-1,5}}; float b[N]={7.2,8.3,4.2},sum=0; float x[N]= {0,0,0},y[N]={0},x0[N]={}; int i,j,n=0; for(i=0;i<N;i++) { x[i]=x0[i]; } for(n=0;;n++){ //计算下一个值 for(i=0;i<N;i++){ sum=0; for(j=0;j<N;j++){ if(j!=i){ sum=sum+A[i][j]*x[j]; } } y[i]=(1/A[i][i])*(b[i]-sum); //sum=0; } //判断误差大小 if(NF2(x,y)>0.01){ for(i=0;i<N;i++){ x[i]=y[i]; } } else break; } printf("经过%d次雅可比迭代解出方程组的解:\n",n+1); for(i=0;i<N;i++){ printf("%f ",y[i]); } } //求两个向量差的二范数函数 float NF2(float *x,float *y){ int i; float z,sum1=0; for(i=0;i<N;i++){ sum1=sum1+pow(y[i]-x[i],2); } z=sqrt(sum1); return z; }
上传时间: 2019-10-13
上传用户:大萌萌撒
function [R,k,b] = msc(A) % 多元散射校正 % 输入待处理矩阵,通过多元散射校正,求得校正后的矩阵 %% 获得矩阵行列数 [m,n] = size(A); %% 求平均光谱 M = mean(A,2); %% 利用最小二乘法求每一列的斜率k和截距b for i = 1:n a = polyfit(M,A(:,i),1); if i == 1 k = a(1); b = a(2); else k = [k,a(1)]; b = [b,a(2)]; end end %% 求得结果 for i = 1:n Ai = (A(:,i)-b(i))/k(i); if i == 1 R = Ai; else R = [R,Ai]; end end
上传时间: 2020-03-12
上传用户:15275387185
基本误差 在相关国标、规程规定的参比条件下,输出电流为50mA~120A装置的最大允许误差(含标准表)小于0.01%,输出电流为1mA~50mA装置的最大允许误差(含标准表)小于0.015%。 可实现三只三相电能表的三相四线及三相三线的误差测量;可测试无功电能基本误差。 1.2.3.2 测量重复性 装置的测量重复性用实验标准差表征,在进行不少于10次的重复测量,其测量结果的标准偏差估计值s不超过0.001%。 1.2.3.3 输出电量 1.2.3.3.1 电压电流量程 输出电压范围:3×(57.7V~380V); 每档电压输出瞬间及相位切换时不允许有尖峰。每档电压输出上限达120%Un。 输出电流范围:3×(0.001A~100A); 输出电流范围上限要求达到120A。每档电流输出瞬间及相位切换时不允许有尖峰。每档电流输出上限达120%In。 1.2.3.3.2 输出负载容量 三表位:电压输出:每相≥150VA 电流输出: 每相≥300VA 1.2.3.3.3 输出电量调节 (1) 电压、电流调节: 调节范围:0%~120% 调节细度:优于0.005%。 (2) 相位调节: 调节范围:0°~360° 调节细度:优于0.01°。 (3) 频率调节: 调节范围:45Hz~65Hz 调节细度:优于0.001Hz。 1.2.3.3.4 输出功率稳定度:<0.005% / 3min . 稳定度按JJG597的5.2.3.13方法计算。 1.2.3.3.5 输出电压电流失真度 装置输出电压电流失真度范围:小于0.1%。 1.2.3.3.6起动电流:装置具有起动电流调整、测量功能,能输出0.5mA的起动电流。 起动电流的测量误差≤ 5%,起动功率的测量误差 ≤ 10%。 1.2.3.3.7三相电量对称性 任一相(或线)电压和相(或线)电压平均值之差不大于±0.1%;各相电流与其平均值之差不大于±0.2%;任一相电压与对应相电流间的相位角之差不大于0.5°;任一相电压(电流)与另一相电压(电流)间相位角与120°之差不大于0.5°。 1.2.3.4 多路隔离输出的装置各路输出负载影响应符合JJG597—2005中 3.8条的规定。 1.2.3.5 确定同名端钮间电位差应符合JJG597—2005中3.9条的规定。 1.2.3.6 多路输出的一致性应符合JJG597—2005中3.7条的规定。 1.2.3.7 监视示值的误差 监视仪表应有足够的测量范围,电压示值误差限为±0.2%,电流、功率示值误差限为±0.2%,相位示值误差限为±0.3°,频率示值误差限为±0.1%,启动电流和启动功率的监视示值误差不超过5%(启动电流为1mA时的监视示值误差也不应超过5%)。各监视示值的分辨力应不超过其对应误差限的1/5。 1.2.3.8 具有消除自激的功能。可自动消除开机或关机时产生的尖脉冲。 1.2.3.9 装置的磁场 由装置产生的在被检表位置的磁感应强度不大于下列数值: I≤10A时,B≤0.0025mT; I=200A时,B≤0.05mT;10A到200A之间的磁感应强度极限值可按内插法求得。 1.2.3.10 电磁兼容性 (1)电磁骚扰的抗扰度 装置的设计能保证在传导和辐射的电磁骚扰以及静电放电的影响下不损坏或不受实质性影响(如元器件损毁、控制系统死机、精度出现变化等影响正常检定工作的现象),骚扰量为静电放电、射频电磁场。 (2)无线电干扰抑制 装置不发生能干扰其他设备的传导和辐射噪声。 1.2.3.11 稳定性变差 (1)短期稳定性变差 装置基本误差合格的同时,在15min内的基本误差最大变化值(连续测量7h),不大于装置对应最大允许误差的20%。 (2)检定周期内变差 检定周期内装置基本误差合格的同时,其最大变化值,不大于0.01%。 1.2.3.12 安全 装置的绝缘强度试验要求和与安全有关的结构要求符合GB 4793.1的规定。 1.2.3.13 脉冲输出 同时检测三路被检脉冲:显示当前误差平均误差和标准偏差;同时检测的被检脉冲的常数、工作方式和脉冲个数,可完全不同;误差测量所需要的输入参数的位数,应能覆盖目前各种标准表和的检测需要。对每一表位应有高频、低频脉冲信号的BNC接收端口,能接收≤600kHz的有/无源脉冲(5-30V脉冲幅值)。 1.2.3.14供电电源 供电电源在3×220V/380V10,50Hz2Hz装置正常工作。
上传时间: 2021-06-15
上传用户:li091122
走线状态,+tab,改变线宽;2d 线状态,+shift+tab ,切换倒角方式;crtl+左键 :高亮选中网络;左下角双击,层管理,显示或隐藏某一层;旋转:Space;X 轴镜像:X;Y 轴镜像:Y;板层管理:L;栅格设置:G;单位进制切换:Q;对齐-水平:A,D;对齐-垂直:A,I,I,Enter;对齐-顶部:A,T;对齐-底部:A,B;对齐-左侧:A,L;对齐-右侧:A,R;设计-类设置:D,C;设计-板层管理:D,K;
标签: Altium Designer
上传时间: 2022-04-17
上传用户:trh505
1.2 源代码表示不考虑主题,列举 15 000行源代码本身就是一件难事。下面是所有源代码都使用的文本格式:1.2.1 将拥塞窗口设置为13 8 7 - 3 8 8 这是文件t c p _ s u b r . c中的函数t c p _ q u e n c h。这些源文件名引用4 . 4 B S D - L i t e发布的文件。4 . 4 B S D在1 . 1 3节中讨论。每个非空白行都有编号。正文所描述的代码的起始和结束位置的行号记于行开始处,如本段所示。有时在段前有一个简短的描述性题头,对所描述的代码提供一个概述。这些源代码同4 . 4 B S D - L i t e发行版一样,偶尔也包含一些错误,在遇到时我们会提出来并加以讨论,偶尔还包括一些原作者的编者评论。这些代码已通过了 G N U缩进程序的运行,使它们从版面上看起来具有一致性。制表符的位置被设置成 4个栏的界线使得这些行在一个页面中显示得很合适。在定义常量时,有些 # i f d e f语句和它们的对应语句 # e n d i f被删去(如:G A T E W A Y和M R O U T I N G,因为我们假设系统被作为一个路由器或多播路由器 )。所有r e g i s t e r说明符被删去。有些地方加了一些注释,并且一些注释中的印刷错误被修改了,但代码的其他部分被保留下来。这些函数大小不一,从几行 (如前面的t c p _ q u e n c h)到最大11 0 0行(t c p _ i n p u t)。超过大约4 0行的函数一般被分成段,一段一段地显示。虽然尽量使代码和相应的描述文字放在同一页或对开的两页上,但为了节约版面,不可能完全做到。本书中有很多对其他函数的交叉引用。为了避免给每个引用都添加一个图号和页码,书封底内页中有一个本书中描述的所有函数和宏的字母交叉引用表和描述的起始页码。因为本书的源代码来自公开的 4 . 4 B S D _ L i t e版,因此很容易获得它的一个拷贝:附录 B详细说明了各种方法。当你阅读文章时,有时它会帮助你搜索一个在线拷贝 [例如U n i x程序grep ( 1 )]。描述一个源代码模块的各章通常以所讨论的源文件的列表开始,接着是全局变量、代码维护的相关统计以及一个实际系统的一些例子统计,最后是与所描述协议相关的 S N M P变量。全局变量的定义通常跨越各种源文件和头文件,因此我们将它们集中到的一个表中以便于参考。这样显示所有的统计,简化了后面当统计更新时对代码的讨论。卷 1的第2 5章提供了S N M P的所有细节。我们在本文中关心的是由内核中的 T C P / I P例程维护的、支持在系统上运行的S N M P代理的信息。TCP IP详解 卷1协议 :http://dl.21ic.com/download/tcpip-288223.html TCP IP详解 卷2实现 :http://dl.21ic.com/download/tcpip-288224.html TCPIP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议 :http://dl.21ic.com/download/tcpip-288225.html
上传时间: 2022-07-27
上传用户:
随着电力电子装置越加广泛的投入使用,电能得到了更加充分的应用,但是伴随而来的是越来越多的非线性、冲击性负载的投入使用,电网中谐波污染日益严重,在针对此类谐波抑制和无功补偿装置的研究中,电力有源滤波器APF得到了广泛应用. 与传统无源滤波器比较,有源电力滤波器具有动态响应特性好,滤波特性不受系统阻抗的影响等优势.而APF所采用的谐波电流检测方法,直接决定了谐波的检测精度和跟踪速度,是决定谐波补偿特性的关键.本论文重点研究了谐波电流检测方法. 在众多有源滤波器的谐波及无功电流检测算法中,基于三相瞬时无功功率理论的应用最为广泛.应用此理论的i<,p>-i<,q>岛检测方法计算简单,具有较好实时性,适合电流快速检测的优点;但同时也存在很多局限性. 本文首先通过分析、比较总结出各类APF的优缺点和适用性,系统地研究了有源电力滤波器的两个关键技术:谐波电流检测和PWM信号发生器的控制策略;在此基础上,针对在负载电流有较大突变时补偿电路会产生较大畸变影响补偿效果的问题,以及三相电压畸变时i<,p>-i<,q>检测法存在的误差等问题,从基于DSP控制的三相四线制并联型有源电力滤波器的结构出发进行优化设计,提出了一种改进的i<,p>-i<,q>检测法,在该检测法中增加了平衡.APF直流侧电容总电压和上下电容电压的闭环控制,以消除负载电流突变时产生的畸变;并采用一种新颖的基于低通滤波的A相正序电压提取单元来代替原始的i<,p>-i<,q>检测法的PLL锁相环,在三相电压畸变情况下仍可以正确提取A相正序电压,以精确检测出谐波和无功电流. 最后通过MATLAB6.5对系统进行了仿真验证,仿真结果表明该算法能有效保证检测效果的实时性和精确性,证明了该算法的可行性.
上传时间: 2013-04-24
上传用户:jackgao
ASIC对产品成本和灵活性有一定的要求.基于MCU方式的ASIC具有较高的灵活性和较低的成本,然而抗干扰性和可靠性相对较低,运算速度也受到限制.常规ASIC的硬件具有速度优势和较高的可靠性及抗干扰能力,然而不是灵活性较差,就是成本较高.与传统硬件(CHW)相比,具有一定可配置特性的场可编程门阵列(FPGA)的出现,使建立在可再配置硬件基础上的进化硬件(EHW)成为智能硬件电路设计的一种新方法.作为进化算法和可编程器件技术相结合的产物,可重构FPGA的研究属于EHW的研究范畴,是研究EHW的一种具体的实现方法.论文认为面向分类的专用类可重构FPGA(ASR-FPGA)的研究,可使可重构电路粒度划分的针对性更强、设计更易实现.论文研究的可重构FPGA的BCH通讯纠错码进化电路是一类ASR-FPGA电路的具体方法,具有一定的实用价值.论文所做的工作主要包括:(1)BCH编译码电路的设计——求取实验用BCH码的生成多项式和校验多项式及其相应的矩阵并构造实验用BCH码;(2)建立基于可重构FPGA的基核——构造具有可重构特性的硬件功能单元,以此作为可重构BCH码电路的设计基础;(3)构造实现可重构BCH纠错码电路的方法——建立可重构纠错码硬件电路算法并进行实验验证;(4)在可重构纠错码电路基础上,构造进化硬件控制功能块的结构,完成各进化RLA控制模块的验证和实现.课题是将可重构BCH码的编译码电路的实现作为一类ASR-FPGA的研究目标,主要成果是根据可编程逻辑电路的特点,选择一种可编程树的电路模型,并将它作为可重构FPGA电路的基核T;通过对循环BCH纠错码的构造原理和电路结构的研究,将基核模型扩展为能满足纠错码电路需要的纠错码基本功能单元T;以T作为再划分的基本单元,对FPGA进行"格式化",使T规则排列在FPGA上,通过对T的控制端的不同配置来实现纠错码的各个功能单元;在可重构基核的基础上提出了纠错码重构电路的嵌套式GA理论模型,将嵌套式GA的染色体串作为进化硬件描述语言,通过转换为相应的VHDL语言描述以实现硬件电路;采用RLA模型的有限状态机FSM方式实现了可重构纠错码电路的EHW的各个控制功能块.在实验方面,利用Xilinx FPGA开发系统中的VHDL语言和电路图相结合的设计方法建立了循环纠错码基核单元的可重构模型,进行循环纠错BCH码的电路和功能仿真,在Xilinx公司的Virtex600E芯片进行了FPGA实现.课题在研究模型上选取的是比较基本的BCH纠错码电路,立足于解决基于可重构FPGA核的设计的基本问题.课题的研究成果及其总结的一套ASR-FPGA进化硬件电路的设计方法对实际的进化硬件设计具有一定的实际指导意义,提出的基于专用类基核FPGA电路结构的研究方法为新型进化硬件的器件结构的设计也可提供一种借鉴.
上传时间: 2013-07-01
上传用户:myworkpost
·详细说明:H264完整的C语言代码和DCT的代码以及一个可修改的Test框架 文件列表: mm ..\dct ..\...\dct-old.i ..\...\dct1c.i ..\...\dct1c.sim ..\...\dct2d-old.i ..\...\dct8c.i .
上传时间: 2013-06-14
上传用户:cy_ewhat
·摘要: 介绍了通过Clarke和Park变换,可将静止坐标系中三相交流电流ia、ib和ic变换成静止坐标系中的二相交流电流iα、iβ,再将iα、iβ变换成与转子磁链同步旋转的坐标系中的二相直流电流isb、isq,给出Clarke和Park变换的数学表达式,在数据信号处理器(DSP)TMS320C240上实现了该种变换.
上传时间: 2013-06-15
上传用户:liuwei6419