資源簡介
這是一個變壓器故障診斷改良三比值法德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
評論
共有 條評論