void CMonitorDlg::identify()
{ using namespace std;
int i=0;
ifstream cc;
cc.open("id.txt");
while(i<160)
{
cc>>id[i];
i++;
}
cc.close();//id 采样模拟数据输入
i=0;
cc.open("idnoise.txt");
while(i<160)
{
cc>>idnoise[i];
i++;
}//id噪声模拟数据输入
i=0;
while(i<160)
{
id[i]=id[i]+idnoise[i];
i++;
}//噪声与采样数据叠加
i=0;
double key=0;
while(i<160)
{
key=key+id[i]/160;
i++;
}//阀门值的确定
i=0;
while(i<160)
{
if(id[i]<key)
id[i]=0;
else
id[i]=1;
i++;
}//对采样数据的判决,小于阀门值为0,反之为1。
int j=4;
int start=0;
while(start==0)//有效数据起始位置
{
if(id[j-4]==0&&id[j-3]==0&&id[j-2]==0&&id[j-1]==0&&id[j]==1)
{
start=j;
}
j++;
}
int k=4;
int end=0;
while(end==0)//有效数据截至位置
{
if(id[k+4]==0&&id[k+3]==0&&id[k+2]==0&&id[k+1]==0&&id[k]==1)
{
end=k;
}
k++;
}
//码对准,判断接受的MORSE码与实际应该发送的码的相似程度
int l=0;
int flag=0;
double idreal[29]={1,0,1,1,1,0,0,0,1,1,1,0,1,0,1,0,1,0,0,0,1,1,1,0,1,0,1,1,1};//假设发射的MORSE码为ABC,其有效位应为29,若是其他字母,应作相应调整。
while (l<29)
{
if(idreal[l]==id[start+l])
{
flag++;
}
l++;
}
//码对准判决,
if(flag==29)//此处可以设门限,确定要求的相似程度
{m_7="abc";
}
else
{
m_7="ERROR";
}
UpdateData(FALSE);
}
评论0