资源简介
这是一个变压器故障诊断改良三比值法德VC++ 源代码, 而且程序中实现了读写txt文件。文件中的数据是实际运行变压器的现场数据。程序简单易懂。
代码片段和文件信息
#include “iostream“
#include “ctype.h“
#include “fstream“
#include “math.h“
#include “stdlib.h“
#include “stdio.h“
using namespace std;
const int ML_THERMAL=1;
const int H_THERMAL=2;
const int L_DISCHARGE=3;
const int H_DISCHARGE=4;
const int THER_DISCH=5;
const int CODELESS=10;
const double defInfMin=0.00001;
struct {
double INPUT[7];
double TEACH[1];
}Study_Data[1000][1];
int readyangben()
{ //读样本的资料
ifstream infile;
infile.open (“newori.txt“);
if(!infile)
cout<<“error“< double num; //定义文件中的数据类型
char p; //定义一个字符读取文件中的空格和/或回车符
int M=1; //这里首先定义为1是因为最后一行的结束符是EOF所以用‘\n‘来判断行的话
int NN=0;
while(!infile.eof()) //每次读入之前都要判断是否到了文件末
{
do{
infile.get (p);
if(p==‘\n‘)
{
M++; //统计行数;
NN=0; //一个新行开始时,列数置为0
// cout< }
}
while(isspace((int)p) && !infile.eof ());//结束条件是读入的是空格或已到达文件末
NN++; //统计列数
infile.putback (p); // 如果前面读入的不是空格或回车符,则要把刚才读入的字符返回到文件流中!
infile>>num; // 读入一个数
if (NN==8)
Study_Data[M-1]->TEACH[0]=num;
else
Study_Data[M-1]->INPUT[NN-1]=num;
// cout< }
infile.close (); // 关闭文件
return 0;
}
//改良三比值算法
int CDGA_IMP(double dH2double dCH4double dC2H6double dC2H4double dC2H2)
{//改良三比值诊断法
double m1 m2 m3;
int diagnosis;
if(fabs(dC2H4) <= defInfMin) dC2H4 = defInfMin;//保证分母不为零
if(fabs(dH2) <= defInfMin) dH2 = defInfMin;//保证分母不为零
if(fabs(dC2H6) <= defInfMin) dC2H6 = defInfMin;//保证分母不为零
m1 = dC2H2/dC2H4;
m2 = dCH4/dH2;
m3 = dC2H4/dC2H6;
//中低温过热判断
if (m1 <= 0.1 && m2 > 0.1 && m2 <= 1 && m3 >1 && m3 <= 3)
{
diagnosis = ML_THERMAL;
}
else if (m1 <= 0.1 && m2 > 1 && m3 <= 3)
{
diagnosis = ML_THERMAL;
}
//高温过热判断
else if (m1 <= 0.1 && m3 > 3)
{
diagnosis = H_THERMAL;
}
//低能放电判断
else if (m1 <= 0.1 && m2 <= 0.1 && m3<= 1)
{
diagnosis = L_DISCHARGE;
}
else if (m1 > 0.1 && m1 <= 3 && m2 <= 1)
{
diagnosis = L_DISCHARGE;
}
//高能放电判断
else if (m1 > 3 && m2 <= 1)
{
diagnosis = H_DISCHARGE;
}
//放电兼过热判断
else if (m1 > 0.1 && m1 <= 3 && m2 > 1)
{
diagnosis = THER_DISCH;
}
else if (m1 > 3 && m2 > 1)
{
diagnosis = THER_DISCH;
}
//无编码
else
{
diagnosis = CODELESS;
}
return diagnosis;
}
int main()
{
double result[500]oridata[500][7];
int mi;
readyangben();
for (m=0;m<449;m++)
{
for (i=0;i<7;i++)
{
oridata[m][i]=Study_Data[m]->INPUT[i];
}
result[m]=CDGA_IMP(oridata[m][0]oridata[m][1]oridata[m][2]oridata[m][3]oridata[m][4]);
// cout<<“第“<TEACH[0]< // cout<
}
ofstream reslut(“reslut.txt“ios::out);
ofstream num(“m.txt“ios::out);
for (m=0;m<449;m++)
{
if (result[m]!=Study_Data[m]->TEACH[0])
// cout<
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 537 2010-05-01 15:50 bpdata\bpdata.dsw
文件 41984 2010-05-01 19:50 bpdata\bpdata.ncb
文件 82944 2010-05-01 18:35 bpdata\Debug\vc60.idb
文件 118784 2010-05-01 18:35 bpdata\Debug\vc60.pdb
文件 585828 2010-05-01 18:35 bpdata\Debug\bpdata.exe
文件 1147904 2010-05-01 18:35 bpdata\Debug\bpdata.pdb
文件 2106592 2010-05-01 18:17 bpdata\Debug\bpdata.pch
文件 369590 2010-05-01 18:35 bpdata\Debug\data.obj
文件 834440 2010-05-01 18:35 bpdata\Debug\bpdata.ilk
文件 1307 2010-05-01 18:35 bpdata\bpdata.plg
文件 17554 2010-05-01 17:40 bpdata\originaldata.txt
文件 91 2010-05-01 18:21 bpdata\reslut.txt
文件 14 2010-05-01 18:21 bpdata\m.txt
文件 4282 2010-05-01 17:42 bpdata\bpdata.dsp
文件 15689 2010-05-01 18:19 bpdata\newori.txt
文件 3686 2010-05-01 19:50 bpdata\data.cpp
文件 49664 2010-05-01 19:50 bpdata\bpdata.opt
目录 0 2010-05-01 15:50 bpdata\Debug
目录 0 2010-05-01 15:50 bpdata
----------- --------- ---------- ----- ----
5380890 19
评论
共有 条评论