提交 2feb7c18 编写于 作者: Peacoor Zomboss's avatar Peacoor Zomboss

Use code optimized by AI

上级 03df1a8a
......@@ -93,3 +93,61 @@ double FastSampEn_m2(double *X, int N, double r)
return 0;
return -log(A / B);
}
double FastSampEn_ai(double *X, int N, int m, double r)
{
int Ai = 0, Bi = 0;
int LoopTimes = N - m + 1;
for (int i = 0; i < LoopTimes; i++) {
for (int j = i + 1; j < LoopTimes; j++) {
double D = fabs(X[i] - X[j]);
for (int k = 1; k < m; k++) {
double t = fabs(X[i + k] - X[j + k]);
if (t > D)
D = t;
}
if (D <= r)
Ai++;
if (j < N - m) {
double t = fabs(X[i + m] - X[j + m]);
if (t > D)
D = t;
if (D <= r)
Bi++;
}
}
}
double s1 = 1.0 * Ai / ((N - m + 1) * (N - m) / 2);
double s2 = 1.0 * Bi / ((N - m) * (N - m - 1) / 2);
if (s1 == 0 || s2 == 0)
return 0;
return -log(s2 / s1);
}
double FastSampEn_ai_m2(double* X, int N, double r)
{
int Ai = 0, Bi = 0;
int LoopTimes = N - 1;
for (int i = 0; i < LoopTimes; i++) {
for (int j = i + 1; j < LoopTimes; j++) {
double D = fabs(X[i] - X[j]);
double t = fabs(X[i+1]-X[j+1]);
if (t > D)
D = t;
if (D <= r)
Ai++;
if (j < N - 2) {
double t = fabs(X[i + 2] - X[j + 2]);
if (t > D)
D = t;
if (D <= r)
Bi++;
}
}
}
double s1 = 1.0 * Ai / ((N - 1) * (N - 2) / 2);
double s2 = 1.0 * Bi / ((N - 2) * (N - 3) / 2);
if (s1 == 0 || s2 == 0)
return 0;
return -log(s2 / s1);
}
......@@ -6,3 +6,7 @@ double SampEn(double *X, int N, int m, double r);
double FastSampEn(double *X, int N, int m, double r);
// 经过优化的且m取2的样本熵
double FastSampEn_m2(double *X, int N, double r);
// 由ChatGPT帮忙优化的代码(经手动调整)
double FastSampEn_ai(double *X, int N, int m, double r);
// 由AI帮忙优化且m取2的样本熵代码
double FastSampEn_ai_m2(double* X, int N, double r);
......@@ -20,6 +20,8 @@ int main()
std::cout << SampEn(x.data(), x.size(), 2, 3) << '\n';
std::cout << FastSampEn(x.data(), x.size(), 2, 3) << '\n';
std::cout << FastSampEn_m2(x.data(), x.size(), 3) << '\n';
std::cout << FastSampEn_ai(x.data(), x.size(), 2, 3) << '\n';
std::cout << FastSampEn_ai_m2(x.data(), x.size(), 3) << '\n';
// 继续添加30000个数据
for (int i = 0; i < 10000; i++) {
......@@ -45,4 +47,14 @@ int main()
se = FastSampEn_m2(x.data(), x.size(), 3);
t = clock() - t;
std::cout << se << ", time = " << t << " ms\n";
t = clock();
se = FastSampEn_ai(x.data(), x.size(), 2, 3);
t = clock() - t;
std::cout << se << ", time = " << t << " ms\n";
t = clock();
se = FastSampEn_ai_m2(x.data(), x.size(), 3);
t = clock() - t;
std::cout << se << ", time = " << t << " ms\n";
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册