📄 unit2.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormCreate(TObject *Sender)
{
String InitDir=GetCurrentDir();
dlgOpen1->InitialDir=InitDir;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::btn1Click(TObject *Sender)
{
lv1->Items->Clear();
lv2->Items->Clear();
lv3->Items->Clear();
int SampleSN=0;//模式样本序号
int iFileHandle,iFileLength,iBytesRead;
char *PatternBuffer;
if(dlgOpen1->Execute())
{
try
{
iFileHandle=FileOpen(dlgOpen1->FileName,fmOpenRead);
iFileLength=FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
PatternBuffer=new char[iFileLength+1];
iBytesRead=FileRead(iFileHandle,PatternBuffer,iFileLength);
FileClose(iFileHandle);
bool ReadFlag=false; //数据加入与否标志
AnsiString EData=""; //读入有效数据
TListItem *p;
int DataDim=0; //样本的维
for(int i=0;i<iBytesRead;i++)
{
if((PatternBuffer[i]>='0'&&PatternBuffer[i]<='9')||PatternBuffer[i]=='.')
{ReadFlag=true;EData+=PatternBuffer[i];}
else
{
if(ReadFlag)
{
if(DataDim==0)
{
if(SampleSN<50)
{
p=lv1->Items->Add();
p->Caption=EData;
}
if(SampleSN>=50&&SampleSN<100)
{
p=lv2->Items->Add();
p->Caption=EData;
}
if(SampleSN>=100&&SampleSN<150)
{
p=lv3->Items->Add();
p->Caption=EData;
}
}
else{
p->SubItems->Add(EData);
Pattern[SampleSN][DataDim-1]=atof(EData.c_str());
//PatternExpand[SampleSN][DataDim-1]=Pattern[SampleSN][DataDim-1];
}
//edt5->Text=FloatToStr(PatternExpand[1][4]);
EData="";
ReadFlag=false;
DataDim++;
if(DataDim==5)
{
//PatternExpand[SampleSN][4]=1;
DataDim=0;
SampleSN++;
}
}
}
}
delete[] PatternBuffer;
}
catch(...)
{
Application->MessageBox("不能进行以下文件操作:打开、寻找、读取和关闭。", "File Error", IDOK);
}
}
/////////////////////////////////////////
for(int i=0;i<150;i++)
{
for(int j=0;j<4;j++)
{
PatternOrder[i][j]=Pattern[i][j];
}
}
//////////////////////////////////////////////////
//排序
float temp;
for(int j=0;j<4;j++)
{
for(int i=0;i<150;i++)
{
for(int n=149;n>i;n--)
{
if(PatternOrder[i][j]>PatternOrder[n][j])
{
temp=PatternOrder[i][j];
PatternOrder[i][j]=PatternOrder[n][j];
PatternOrder[n][j]=temp;
}
}
}
}
////////////////////排序完毕////////////////////////////////////////
//////////////////////编号/////////////////////////////////////
int zg,m;
for(int j=0;j<4;j++)
{
m=0;
for(int i=0;i<150;i=i+zg)
{
zg=0;
for(int n=0;n<150;n++)
{
if(PatternOrder[i][j]==Pattern[n][j])
{
bianhao[m][j]=n;
zg++;
m++;
}
}
}
}
///////////////////////////////详细编号////////////////////////////
/////////////////////////////////////////////////////////////////
float R[4][3];
float sum;
for(int j=0;j<4;j++)
{
sum=0;
for(int i=0;i<150;i++)
{
if(bianhao[i][j]<50)
{
sum+=(i+1);
}
}
R[j][0]=sum/50;
///////////////////////////////////////////////////////////////////
sum=0;
for(int i=0;i<150;i++)
{
if(50<=bianhao[i][j]&&bianhao[i][j]<100)
{
sum+=(i+1);
}
}
R[j][1]=sum/50;
///////////////////////////////////////////////////////////////
sum=0;
for(int i=0;i<150;i++)
{
if(100<=bianhao[i][j]&&bianhao[i][j]<150)
{
sum+=(i+1);
}
}
R[j][2]=(float)sum/50;
}
float N=12.0*50/22650.0;
for(int j=0;j<4;j++)
{
H[j]=(R[j][0]-75.5)*(R[j][0]-75.5) +(R[j][1]-75.5)*(R[j][1]-75.5) +(R[j][2]-75.5)*(R[j][2]-75.5);
H[j]=H[j]*N;
}
edt1->Text=FloatToStr(H[0]);
edt2->Text=FloatToStr(H[1]);
edt3->Text=FloatToStr(H[2]);
edt4->Text=FloatToStr(H[3]);
Application->MessageBox("由K-W检验理论可知H越大分类能力越强,\n"
"所以特征X1,X3和X4特征分类能力较强!",
"结果", MB_OK + MB_ICONINFORMATION);
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -