📄 ctf.cpp
字号:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <iomanip>
#include <string>
#include <cctype>
#include <cmath>
using namespace std;
#define SamplesNum_A 20
#define SamplesNum_b 20
#define SamplesNum_ZG 141
void main()
{
double A[SamplesNum_A],b[SamplesNum_b];
double z[SamplesNum_ZG],g[SamplesNum_ZG], H[SamplesNum_ZG];
for(int i=0; i<SamplesNum_A; i++)
A[i]=(400-10)*double(rand())/32767+10;
for(i=0; i<SamplesNum_A; i++)
cout<<"A"<<i<<" "<<A[i]<<endl;
for(i=0; i<SamplesNum_b; i++)
b[i]=(4-0.5)*double(rand())/32767+0.5;
for(i=0; i<SamplesNum_b; i++)
cout<<"b"<<i<<" "<<b[i]<<endl;
ifstream ZG("zg.txt");//读入zg数据文件
long int m=0,n=0;
for (i=0;i<(SamplesNum_ZG+1)*2;i++)
{
ZG>>z[m++];
ZG>>g[n++];
}
//test
ofstream test("Out_zg.txt");
for (i=0;i<SamplesNum_ZG;i++)
test<<z[i]<<" "<<g[i]<<endl;
double CTF,minCTF,min_i,min_j,min_Ai,min_bj;
ofstream OutputOpt("out.txt");
for(i=0; i<SamplesNum_A; i++)
for(int j=0; j<SamplesNum_b; j++)
{
CTF=0;//每组参数(A[i]<<b[j])的CTF
for(int num=0; num<SamplesNum_ZG; num++)
H[num]=pow((z[num]/A[i]),1/b[j]);
for(num=0; num<SamplesNum_ZG; num++)
CTF=CTF+(pow((H[num]-g[num]),2)+(H[num]-g[num]));
//求minCTF; 新计算CTF与前一次最小CTF比较
if(i==0&&j==0)
{//minCTF赋予初值
minCTF=CTF;
min_i=i;
min_j=j;
min_Ai=A[i];
min_bj=b[j];
}
if(CTF<minCTF)
{
minCTF=CTF;
min_i=i;
min_j=j;
min_Ai=A[i];
min_bj=b[j];
}
OutputOpt<<"CTF: "<<CTF<<" "<<"A"<<i<<" "<<"b"<<j<<" MINCTF: "<<minCTF<<endl;
}
cout<<"minCTF "<<minCTF<<" "
<<endl
<<"min_i "<<min_i<<" "<<"min_j "<<min_j <<" "
<<"min_Ai "<<min_Ai<<" "<<"min_bj "<<min_bj<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -