{"id":1955,"date":"2023-09-23T15:08:02","date_gmt":"2023-09-23T07:08:02","guid":{"rendered":"https:\/\/www.huangrongzhen.ink\/?p=1955"},"modified":"2023-09-23T18:03:36","modified_gmt":"2023-09-23T10:03:36","slug":"c-%e8%af%ad%e8%a8%80-%e6%95%b0%e5%ad%97%e6%bb%a4%e6%b3%a2%e5%99%a8","status":"publish","type":"post","link":"https:\/\/www.huangrongzhen.ink\/?p=1955","title":{"rendered":"C \u8bed\u8a00-\u6570\u5b57\u6ee4\u6ce2\u5668"},"content":{"rendered":"<div class=\"wp-block-post-excerpt\"><p class=\"wp-block-post-excerpt__excerpt\">\u8bb0\u5f55 C \u8bed\u8a00\u4e0b\u7684\u6570\u5b57\u6ee4\u6ce2\u5668\u53ca\u5176\u5e94\u7528\u793a\u4f8b\u3002 <\/p><\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E9%9C%80%E8%A6%81%E5%8C%85%E5%90%AB%E7%9A%84%E5%A4%B4%E6%96%87%E4%BB%B6\"><\/span>\u9700\u8981\u5305\u542b\u7684\u5934\u6587\u4ef6<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u9700\u8981\u5305\u542b\u7684\u5934\u6587\u4ef6\u5982\u4e0b\u6240\u793a\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">#include &lt;stdio.h&gt;\n#include &lt;stdlib.h&gt;\n#include &lt;malloc.h&gt;\n#include &lt;math.h&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%94%9F%E6%88%90\"><\/span>\u968f\u673a\u6570\u751f\u6210<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u6d4b\u8bd5\u8fc7\u7a0b\u4e2d\u9700\u8981\u7528\u968f\u673a\u6570\u751f\u6210\u566a\u58f0\uff0c\u751f\u6210\u968f\u673a\u6570\u4ee3\u7801\u5982\u4e0b\u6240\u793a\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">\/*********************************************************************************************************\n* \u51fd\u6570\u540d\u79f0\uff1a Uniform\n* \u51fd\u6570\u529f\u80fd\uff1a \u751f\u6210\u5747\u5300\u5206\u5e03\u7684\u968f\u673a\u6570\n* \u8f93\u5165\u53c2\u6570\uff1a a\uff1a\u533a\u95f4\u4e0b\u9650\n*            b\uff1a\u533a\u95f4\u4e0a\u9650\n*            seed\uff1a\u968f\u673a\u6570\u79cd\u5b50\n* \u8f93\u51fa\u53c2\u6570\uff1a void\n* \u8fd4 \u56de \u503c\uff1a \u968f\u673a\u6570\n* \u521b\u5efa\u65e5\u671f\uff1a 2023\u5e7408\u670810\u65e5\n* \u6ce8    \u610f\uff1a\n*********************************************************************************************************\/\ndouble Uniform(double a, double b, long int* seed)\n{\n  double t;\n  *seed = 2045 * (*seed) + 1;\n  *seed = *seed - (*seed \/ 1048576) * 1048576;\n  t = (*seed) \/ 1048576.0;\n  t = a + (b - a) * t;\n  return t;\n}\n\n\/*********************************************************************************************************\n* \u51fd\u6570\u540d\u79f0\uff1a Gauss\n* \u51fd\u6570\u529f\u80fd\uff1a \u751f\u6210\u6b63\u6001\u5206\u5e03\u7684\u968f\u673a\u6570\n* \u8f93\u5165\u53c2\u6570\uff1a mean\uff1a\u6b63\u6001\u5206\u5e03\u7684\u5747\u503c\u03bc\n*            sigma\uff1a\u6b63\u6001\u5206\u5e03\u7684\u5747\u65b9\u5dee\u03c3\n*            seed\uff1a\u968f\u673a\u6570\u79cd\u5b50\n* \u8f93\u51fa\u53c2\u6570\uff1a void\n* \u8fd4 \u56de \u503c\uff1a \u968f\u673a\u6570\n* \u521b\u5efa\u65e5\u671f\uff1a 2023\u5e7408\u670810\u65e5\n* \u6ce8    \u610f\uff1a\n*********************************************************************************************************\/\ndouble Gauss(double mean, double sigma, long int* seed)\n{\n  int i;\n  double x, y;\n  for (x = 0, i = 0; i &lt; 12; i++)\n  {\n    x += Uniform(0.0, 1.0, seed);\n  }\n  x = x - 6.0;\n  y = mean + x * sigma;\n  return y;\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%BB%B4%E7%BA%B3%EF%BC%88Wiener%EF%BC%89%E6%95%B0%E5%AD%97%E6%BB%A4%E6%B3%A2\"><\/span>\u7ef4\u7eb3\uff08Wiener\uff09\u6570\u5b57\u6ee4\u6ce2<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u7ef4\u7eb3\uff08Wiener\uff09\u6570\u5b57\u6ee4\u6ce2\u5668\u5b9e\u73b0\u4ee3\u7801\u5982\u4e0b\u6240\u793a\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">\/*********************************************************************************************************\n* \u51fd\u6570\u540d\u79f0\uff1a Levin\n* \u51fd\u6570\u529f\u80fd\uff1a \u6c42\u89e3\u4e00\u822c\u6258\u5e03\u5229\u5179\u65b9\u7a0b\u7ec4\u7684\u83b1\u6587\u68ee\u7b97\u6cd5\n* \u8f93\u5165\u53c2\u6570\uff1a t\uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a n\u3002\u5b58\u653e\u5bf9\u79f0\u6258\u5e03\u5229\u5179\u77e9\u9635\u7684\u5143\u7d20 t0,t1,...,tn-1\u3002\n*            b\uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a n\u3002\u5b58\u653e\u65b9\u7a0b\u7ec4\u53f3\u7aef\u7684\u5e38\u6570\u5e38\u91cf\u3002\n*            n\uff1a\u6574\u5f62\u53d8\u91cf\u3002\u65b9\u7a0b\u7ec4\u7684\u9636\u6570\u3002\n*            x\uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a n\u3002\u5b58\u653e\u65b9\u7a0b\u7ec4\u7684\u89e3\u3002\n* \u8f93\u51fa\u53c2\u6570\uff1a void\n* \u8fd4 \u56de \u503c\uff1a \u672c\u51fd\u6570\u7684\u8fd4\u56de\u503c\u82e5\u5c0f\u4e8e 0\uff0c\u5219\u8bf4\u660e\u65b9\u7a0b\u662f\u75c5\u6001\u7684\u3002\n* \u521b\u5efa\u65e5\u671f\uff1a 2023\u5e7409\u670820\u65e5\n* \u6ce8    \u610f\uff1a\n*********************************************************************************************************\/\nint Levin(double* t, double* b, int n, double* x)\n{\n  int i, j, k;\n  double a, beta, q, c, h, *y, *s;\n  s = malloc(n * sizeof(double));\n  y = malloc(n * sizeof(double));\n  a = t[0];\n  if ((fabs(a) + 1.0) == 1.0)\n  {\n    free(s);\n    free(y);\n    return (-1);\n  }\n  y[0] = 1.0;\n  x[0] = b[0] \/ a;\n  for (k = 1; k &lt; n; k++)\n  {\n    beta = 0.0;\n    q = 0.0;\n    for (j = 0; j &lt; k; j++)\n    {\n      beta += y[j] * t[j + 1];\n      q += x[j] * t[k - j];\n    }\n    if ((fabs(a) + 1.0) == 1.0)\n    {\n      free(s);\n      free(y);\n      return (-1);\n    }\n    c = -beta \/ a;\n    s[0] = c * y[k - 1];\n    y[k] = y[k - 1];\n    if (k != 1)\n    {\n      for (i = 1; i &lt; k; i++)\n      {\n        s[i] = y[i - 1] + c * y[k - i - 1];\n      }\n    }\n    s[k] = y[k - 1];\n    a += c * beta;\n    if ((fabs(a) + 1.0) == 1.0)\n    {\n      free(s);\n      free(y);\n      return (-1);\n    }\n    h = (b[k] - q) \/ a;\n    for (i = 0; i &lt; k; i++)\n    {\n      x[i] += h * s[i];\n      y[i] = s[i];\n    }\n    x[k] = h * y[k];\n  }\n  free(s);\n  free(y);\n  return (1);\n}\n\n\/*********************************************************************************************************\n* \u51fd\u6570\u540d\u79f0\uff1a Wiener\n* \u51fd\u6570\u529f\u80fd\uff1a \u7ef4\u7eb3\u6570\u5b57\u6ee4\u6ce2\n* \u8f93\u5165\u53c2\u6570\uff1a rxx\uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a\uff08p+1\uff09\u3002\u4fe1\u53f7 x(n) \u7684\u81ea\u76f8\u5173\u51fd\u6570 rxx(i)\u3002\n*            rdx\uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a\uff08p+1\uff09\u3002\u4fe1\u53f7 d(n) \u4e0e x(n) \u7684\u4e92\u76f8\u5173\u51fd\u6570 rdx(i)\u3002\n*            p  \uff1a\u6574\u578b\u53d8\u91cf\u3002\u7ef4\u7eb3\u6ee4\u6ce2\u5668\u7684\u9636\u6570\u3002\n*            h  \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a\uff08p+1\uff09\u3002\u7ef4\u7eb3\u6ee4\u6ce2\u5668\u7684\u7cfb\u6570\u3002\n*            e  \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u53d8\u91cf\u3002\u7ef4\u7eb3\u6ee4\u6ce2\u5668\u7684\u6700\u5c0f\u5747\u65b9\u8bef\u5dee\u3002\n*            x  \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a n\u3002\u5b58\u653e\u8f93\u5165\u4fe1\u53f7 x(i)\u3002\n*            y  \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a n\u3002\u5b58\u653e\u8f93\u51fa\u4fe1\u53f7 y(i)\u3002\n*            n  \uff1a\u6574\u5f62\u53d8\u91cf\u3002\u8f93\u5165\u4fe1\u53f7\u7684\u957f\u5ea6\u3002\n* \u8f93\u51fa\u53c2\u6570\uff1a void\n* \u8fd4 \u56de \u503c\uff1a void\n* \u521b\u5efa\u65e5\u671f\uff1a 2023\u5e7409\u670821\u65e5\n* \u6ce8    \u610f\uff1a\n*********************************************************************************************************\/\nvoid Wiener(double* rxx, double* rdx, int p, double* h, double* e, double* x, double* y, int n)\n{\n  int i, k;\n  double sum;\n  Levin(rxx, rdx, p + 1, h);\n  sum = 0.0;\n  for (i = 0; i &lt;= p; i++)\n  {\n    sum += rdx[i] * h[i];\n  }\n  *e = rdx[0] - sum;\n  for (k = 0; k &lt; n; k++)\n  {\n    y[k] = 0.0;\n    for (i = 0; i &lt;= p; i++)\n    {\n      if ((k - i) &gt;= 0)\n      {\n        y[k] += h[i] * x[k - i];\n      }\n    }\n  }\n}\n<\/code><\/pre>\n\n\n\n<p>\u7ef4\u7eb3\uff08Wiener\uff09\u6ee4\u6ce2\u5668\u7684\u4f7f\u7528\u5982\u4e0b\u6240\u793a\u3002\u5176\u4e2d\u5fc3\u7535\u6ce2\u5f62\u6570\u636e\u4e3a\u6a21\u62df\u5668\u6807\u51c6\u6570\u636e\uff0c\u8109\u7387\u503c\u4e3a 60BPM\uff0c\u91c7\u6837\u7387\u4e3a 2kHz\uff0c\u5728\u6587\u7ae0\u7684\u672b\u5c3e\u7ed9\u51fa\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">int main(void)\n{\n  extern const double g_arrEcgWave[4000];\n  int i, k, n, p;\n  long seed;\n  double e;\n  static double rxx[4000], rdx[4000];\n  static double h[4000], x[4000], y[4000], s[4000];\n  FILE* fp;\n\n  \/\/\u83b7\u53d6\u539f\u59cb\u6570\u636e\n  n = 2000;\n  for (i = 0; i &lt; n; i++)\n  {\n    s[i] = g_arrEcgWave[i];\n  }\n\n  \/\/\u6dfb\u52a0\u767d\u566a\u58f0\n  seed = 157l;\n  for (i = 0; i &lt; n; i++)\n  {\n    x[i] = s[i] + 0.1 * Gauss(0.0, 1.0, &amp;seed);\n  }\n\n  \/\/\u751f\u6210\u4e92\u76f8\u5173\u51fd\u6570\n  p = 2000;\n  for (k = 0; k &lt;= p; k++)\n  {\n    rdx[k] = 0.0;\n    for (i = 0; i &lt; (n - k); i++)\n    {\n      rdx[k] += s[i] * s[i + k];\n    }\n    rdx[k] = rdx[k] \/ n;\n  }\n\n  \/\/\u751f\u6210\u81ea\u76f8\u5173\u51fd\u6570\n  rxx[0] = rdx[0] + 1.0;\n  for (i = 1; i &lt;= p; i++)\n  {\n    rxx[i] = rdx[i];\n  }\n\n  \/\/\u6ee4\u6ce2\n  Wiener(rxx, rdx, p, h, &amp;e, x, y, n);\n  printf(\"The Minimum MSE Error = %lf\\n\", e);\n\n  \/\/\u8f93\u51fa\u6ce2\u5f62\u6570\u636e\uff0c\u6309\u7167\u539f\u59cb\u4fe1\u53f7\u3001\u53c2\u8003\u4fe1\u53f7\u3001\u6ee4\u6ce2\u540e\u4fe1\u53f7\u987a\u5e8f\n  fp = fopen(\"wieners.csv\", \"w\");\n  for (i = 0; i &lt; n; i++)\n  {\n    fprintf(fp, \"%d,%lf,%lf,%lf\\n\", i, x[i], s[i], y[i]);\n  }\n  fclose(fp);\n  return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u5b9e\u9a8c\u7ed3\u679c\u5982\u4e0b\u6240\u793a\u3002\u84dd\u8272\u4e3a\u53c2\u8003\u4fe1\u53f7\uff0c\u7eff\u8272\u4e3a\u8f93\u5165\u4fe1\u53f7\uff0c\u9ec4\u8272\u4e3a\u8f93\u51fa\u4fe1\u53f7\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"481\" src=\"http:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u7ef4\u7eb3\u6ee4\u6ce2\u5668\u5b9e\u9a8c\u7ed3\u679c-20230923A-1024x481.png\" alt=\"\" class=\"wp-image-1956\" srcset=\"https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u7ef4\u7eb3\u6ee4\u6ce2\u5668\u5b9e\u9a8c\u7ed3\u679c-20230923A-1024x481.png 1024w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u7ef4\u7eb3\u6ee4\u6ce2\u5668\u5b9e\u9a8c\u7ed3\u679c-20230923A-300x141.png 300w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u7ef4\u7eb3\u6ee4\u6ce2\u5668\u5b9e\u9a8c\u7ed3\u679c-20230923A-768x361.png 768w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u7ef4\u7eb3\u6ee4\u6ce2\u5668\u5b9e\u9a8c\u7ed3\u679c-20230923A-548x257.png 548w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u7ef4\u7eb3\u6ee4\u6ce2\u5668\u5b9e\u9a8c\u7ed3\u679c-20230923A.png 1442w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%9C%80%E5%B0%8F%E5%9D%87%E6%96%B9%EF%BC%88LMS%EF%BC%89%E8%87%AA%E9%80%82%E5%BA%94%E6%95%B0%E5%AD%97%E6%BB%A4%E6%B3%A2\"><\/span>\u6700\u5c0f\u5747\u65b9\uff08LMS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u5b9e\u73b0\u4ee3\u7801\u5982\u4e0b\u6240\u793a\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">\/*********************************************************************************************************\n* \u51fd\u6570\u540d\u79f0\uff1a LMS\n* \u51fd\u6570\u529f\u80fd\uff1a \u6700\u5c0f\u5747\u65b9\uff08LMS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2\n* \u8f93\u5165\u53c2\u6570\uff1a x \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a n\u3002\u8f93\u5165\u4fe1\u53f7\u3002\n*            d \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a n\u3002\u7406\u60f3\u8f93\u51fa\u4fe1\u53f7\u3002\n*            y \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a n\u3002\u5b9e\u9645\u8f93\u51fa\u4fe1\u53f7\u3002\n*            n \uff1a\u6574\u578b\u53d8\u91cf\u3002\u8f93\u5165\u4fe1\u53f7\u7684\u957f\u5ea6\u3002\n*            w \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a m\u3002\u81ea\u9002\u5e94\u6ee4\u6ce2\u5668\u7684\u52a0\u6743\u7cfb\u6570\u3002\n*            m \uff1a\u6574\u578b\u53d8\u91cf\u3002\u81ea\u9002\u5e94\u6ee4\u6ce2\u5668\u7684\u957f\u5ea6\uff08\u9636\u6570-1\uff09\u3002\n*            mu\uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u53d8\u91cf\u3002\u6536\u655b\u56e0\u5b50\u3002\n* \u8f93\u51fa\u53c2\u6570\uff1a void\n* \u8fd4 \u56de \u503c\uff1a void\n* \u521b\u5efa\u65e5\u671f\uff1a 2023\u5e7409\u670822\u65e5\n* \u6ce8    \u610f\uff1a\n*********************************************************************************************************\/\nvoid LMS(double* x, double* d, double* y, int n, double* w, int m, double mu)\n{\n  int i, k;\n  double e;\n  for (i = 0; i &lt; m; i++)\n  {\n    w[i] = 0.0;\n  }\n  for (k = 0; k &lt; m; k++)\n  {\n    y[k] = 0.0;\n    for (i = 0; i &lt;= k; i++)\n    {\n      y[k] += x[k - i] * w[i];\n    }\n    e = d[k] - y[k];\n    for (i = 0; i &lt;= k; i++)\n    {\n      w[i] += 2.0 * mu * e * x[k - i];\n    }\n  }\n  for (k = m; k &lt; n; k++)\n  {\n    y[k] = 0.0;\n    for (i = 0; i &lt; m; i++)\n    {\n      y[k] += x[k - i] * w[i];\n    }\n    e = d[k] - y[k];\n    for (i = 0; i &lt; m; i++)\n    {\n      w[i] += 2.0 * mu * e * x[k - i];\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p>\u6d4b\u8bd5\u4ee3\u7801\u5982\u4e0b\u6240\u793a\u3002\u5176\u4e2d\u5fc3\u7535\u6ce2\u5f62\u6570\u636e\u4e3a\u6a21\u62df\u5668\u6807\u51c6\u6570\u636e\uff0c\u8109\u7387\u503c\u4e3a 60BPM\uff0c\u91c7\u6837\u7387\u4e3a 2kHz\uff0c\u5728\u6587\u7ae0\u7684\u672b\u5c3e\u7ed9\u51fa\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">int main(void)\n{\n  extern const double g_arrEcgWave[4000];\n  int i, m, n;\n  long seed;\n  double mu;\n  static double d[4000], x[4000], y[4000], w[4000];\n  FILE* fp;\n\n  \/\/\u83b7\u53d6\u7406\u60f3\u8f93\u51fa\u4fe1\u53f7\n  n = 2000;\n  for (i = 0; i &lt; n; i++)\n  {\n    d[i] = g_arrEcgWave[i];\n  }\n\n  \/\/\u83b7\u53d6\u8f93\u5165\u6570\u636e\uff0c\u52a0\u566a\u58f0\n  seed = 13579l;\n  for (i = 0; i &lt; n; i++)\n  {\n    x[i] = g_arrEcgWave[i] + 0.1 * Gauss(0.0, 1.0, &amp;seed);\n  }\n\n  \/\/LMS \u6ee4\u6ce2\n  m = 50;\n  mu = 0.0005;\n  LMS(x, d, y, n, w, m, mu);\n  \n  \/\/\u8f93\u51fa\u6ce2\u5f62\u6570\u636e\uff0c\u6309\u7167\u539f\u59cb\u4fe1\u53f7\u3001\u53c2\u8003\u4fe1\u53f7\u3001\u6ee4\u6ce2\u540e\u4fe1\u53f7\u987a\u5e8f\n  fp = fopen(\"lms.csv\", \"w\");\n  for (i = 0; i &lt; n; i++)\n  {\n    fprintf(fp, \"%d,%lf,%lf,%lf\\n\", i, x[i], d[i], y[i]);\n  }\n  fclose(fp);\n  return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u6700\u7ec8\u5b9e\u9a8c\u7ed3\u679c\u5982\u4e0b\u6240\u793a\u3002\u84dd\u8272\u4e3a\u53c2\u8003\u4fe1\u53f7\uff0c\u7eff\u8272\u4e3a\u8f93\u5165\u4fe1\u53f7\uff0c\u9ec4\u8272\u4e3a\u8f93\u51fa\u4fe1\u53f7\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"483\" src=\"http:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u6700\u5c0f\u5747\u65b9\uff08LMS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-1024x483.png\" alt=\"\" class=\"wp-image-1958\" srcset=\"https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u6700\u5c0f\u5747\u65b9\uff08LMS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-1024x483.png 1024w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u6700\u5c0f\u5747\u65b9\uff08LMS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-300x142.png 300w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u6700\u5c0f\u5747\u65b9\uff08LMS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-768x362.png 768w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u6700\u5c0f\u5747\u65b9\uff08LMS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-548x259.png 548w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u6700\u5c0f\u5747\u65b9\uff08LMS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A.png 1437w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%BD%92%E4%B8%80%E5%8C%96%EF%BC%88LMS%EF%BC%89%E8%87%AA%E9%80%82%E5%BA%94%E6%95%B0%E5%AD%97%E6%BB%A4%E6%B3%A2\"><\/span>\u5f52\u4e00\u5316\uff08LMS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u5b9e\u73b0\u4ee3\u7801\u5982\u4e0b\u6240\u793a\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">\/*********************************************************************************************************\n* \u51fd\u6570\u540d\u79f0\uff1a NLMS\n* \u51fd\u6570\u529f\u80fd\uff1a \u5f52\u4e00\u5316\uff08LMS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2\n* \u8f93\u5165\u53c2\u6570\uff1a x     \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a n\u3002\u5f00\u59cb\u65f6\u5b58\u653e\u8f93\u5165\u4fe1\u53f7\uff0c\u6700\u540e\u5b58\u653e\u5b9e\u9645\u8f93\u51fa\u4fe1\u53f7\u3002\n*            d     \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a n\u3002\u7406\u60f3\u8f93\u51fa\u4fe1\u53f7\u3002\n*            n     \uff1a\u6574\u578b\u53d8\u91cf\u3002\u8f93\u5165\u4fe1\u53f7\u7684\u957f\u5ea6\u3002\n*            w     \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a m\u3002\u81ea\u9002\u5e94\u6ee4\u6ce2\u5668\u7684\u52a0\u6743\u7cfb\u6570\u3002\n*            m     \uff1a\u6574\u578b\u53d8\u91cf\u3002\u81ea\u9002\u5e94\u6ee4\u6ce2\u5668\u7684\u957f\u5ea6\uff08\u9636\u6570-1\uff09\u3002\n*            mu    \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u53d8\u91cf\u3002\u5b66\u4e60\u56e0\u5b50\uff0c0 &lt; mu &lt; 1\u3002\n*            sigma2\uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u53d8\u91cf\u3002\u8f93\u5165\u4fe1\u53f7\u7684\u529f\u7387\u4f30\u503c \u03c3^2\u3002\n*            a     \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u53d8\u91cf\u3002\u9057\u5fd8\u56e0\u5b50\uff0c0 &lt;= a &lt;= 1\u3002\n*            px    \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a m\u3002\u5728\u5206\u5757\u5904\u7406\u65f6\uff0c\u7528\u4e8e\u4fdd\u5b58\u8f93\u5165\u4fe1\u53f7\u7684\u8fc7\u53bb\u503c\u3002\n* \u8f93\u51fa\u53c2\u6570\uff1a void\n* \u8fd4 \u56de \u503c\uff1a void\n* \u521b\u5efa\u65e5\u671f\uff1a 2023\u5e7409\u670823\u65e5\n* \u6ce8    \u610f\uff1a\n*********************************************************************************************************\/\nvoid NLMS(double* x, double* d, int n, double* w, int m, double mu, double sigma2, double a, double* px)\n{\n  int i, k;\n  double e, tmp;\n  for (k = 0; k &lt; n; k++)\n  {\n    px[0] = x[k];\n    x[k] = 0.0;\n    for (i = 0; i &lt; m; i++)\n    {\n      x[k] += px[i] * w[i];\n    }\n    e = d[k] - x[k];\n    sigma2 = a * px[0] * px[0] + (1.0 - a) * sigma2;\n    tmp = 2 * mu \/ (m * sigma2);\n    for (i = 0; i &lt; m; i++)\n    {\n      w[i] += tmp * e * px[i];\n    }\n    for (i = (m - 1); i &gt;= 1; i--)\n    {\n      px[i] = px[i - 1];\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p>\u6d4b\u8bd5\u4ee3\u7801\u5982\u4e0b\u6240\u793a\u3002\u5176\u4e2d\u5fc3\u7535\u6ce2\u5f62\u6570\u636e\u4e3a\u6a21\u62df\u5668\u6807\u51c6\u6570\u636e\uff0c\u8109\u7387\u503c\u4e3a 60BPM\uff0c\u91c7\u6837\u7387\u4e3a 2kHz\uff0c\u5728\u6587\u7ae0\u7684\u672b\u5c3e\u7ed9\u51fa\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">int main(void)\n{\n  extern const double g_arrEcgWave[4000];\n  int i, m, n;\n  double a, mu, sigma2;\n  long seed;\n  static double d[4000], x[4000], y[4000], w[4000], px[4000];\n  FILE* fp;\n\n  \/\/\u83b7\u53d6\u7406\u60f3\u8f93\u51fa\u4fe1\u53f7\n  for (i = 0; i &lt; 2000; i++)\n  {\n    d[i] = g_arrEcgWave[i];\n  }\n\n  \/\/\u83b7\u53d6\u8f93\u5165\u6570\u636e\uff0c\u52a0\u566a\u58f0\n  seed = 13579l;\n  n = 2000;\n  for (i = 0; i &lt; n; i++)\n  {\n    x[i] = g_arrEcgWave[i] + 0.1 * Gauss(0.0, 1.0, &amp;seed);\n    y[i] = x[i];\n  }\n\n  \/\/LMS \u6ee4\u6ce2\n  m = 51;\n  mu = 0.2;\n  sigma2 = 0.2;\n  a = 0;\n  for (i = 0; i &lt; m; i++){w[i] = 0.0;}\n  for (i = 0; i &lt; m; i++){px[i] = 0.0;}\n  NLMS(y, d, n, w, m, mu, sigma2, a, px);\n\n  \/\/\u8f93\u51fa\u6ce2\u5f62\u6570\u636e\uff0c\u6309\u7167\u539f\u59cb\u4fe1\u53f7\u3001\u53c2\u8003\u4fe1\u53f7\u3001\u6ee4\u6ce2\u540e\u4fe1\u53f7\u987a\u5e8f\n  fp = fopen(\"nlms.csv\", \"w\");\n  for (i = 0; i &lt; n; i++)\n  {\n    fprintf(fp, \"%d,%10.7lf,%10.7lf,%10.7lf\\n\", i, x[i], d[i], y[i]);\n  }\n  return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u6700\u7ec8\u5b9e\u9a8c\u7ed3\u679c\u5982\u4e0b\u6240\u793a\u3002\u84dd\u8272\u4e3a\u53c2\u8003\u4fe1\u53f7\uff0c\u7eff\u8272\u4e3a\u8f93\u5165\u4fe1\u53f7\uff0c\u9ec4\u8272\u4e3a\u8f93\u51fa\u4fe1\u53f7\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"486\" src=\"http:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u5f52\u4e00\u5316\uff08LMS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-1024x486.png\" alt=\"\" class=\"wp-image-1963\" srcset=\"https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u5f52\u4e00\u5316\uff08LMS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-1024x486.png 1024w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u5f52\u4e00\u5316\uff08LMS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-300x142.png 300w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u5f52\u4e00\u5316\uff08LMS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-768x364.png 768w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u5f52\u4e00\u5316\uff08LMS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-548x260.png 548w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u5f52\u4e00\u5316\uff08LMS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A.png 1432w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E9%80%92%E6%8E%A8%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%EF%BC%88RLS%EF%BC%89%E8%87%AA%E9%80%82%E5%BA%94%E6%95%B0%E5%AD%97%E6%BB%A4%E6%B3%A2\"><\/span>\u9012\u63a8\u6700\u5c0f\u4e8c\u4e58\uff08RLS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u5b9e\u9a8c\u4ee3\u7801\u5982\u4e0b\u6240\u793a\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">\/*********************************************************************************************************\n* \u51fd\u6570\u540d\u79f0\uff1a RLS\n* \u51fd\u6570\u529f\u80fd\uff1a \u9012\u63a8\u6700\u5c0f\u4e8c\u4e58\uff08RLS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2\n* \u8f93\u5165\u53c2\u6570\uff1a x\uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a n\u3002\u5f00\u59cb\u65f6\u5b58\u653e\u8f93\u5165\u4fe1\u53f7\uff0c\u6700\u540e\u5b58\u653e\u5b9e\u9645\u8f93\u51fa\u4fe1\u53f7\u3002\n*            d\uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a n\u3002\u7406\u60f3\u8f93\u51fa\u4fe1\u53f7\u3002\n*            n\uff1a\u6574\u578b\u53d8\u91cf\u3002\u8f93\u5165\u4fe1\u53f7\u7684\u957f\u5ea6\u3002\n*            w\uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a m\u3002\u81ea\u9002\u5e94\u6ee4\u6ce2\u5668\u7684\u52a0\u6743\u7cfb\u6570\u3002\n*            m\uff1a\u6574\u578b\u53d8\u91cf\u3002\u81ea\u9002\u5e94\u6ee4\u6ce2\u5668\u7684\u957f\u5ea6\uff08\u9636\u6570-1\uff09\u3002\n*            r\uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u53d8\u91cf\u3002\u9057\u5fd8\u56e0\u5b50\uff0c0 &lt; r &lt;= 1\u3002\n* \u8f93\u51fa\u53c2\u6570\uff1a void\n* \u8fd4 \u56de \u503c\uff1a void\n* \u521b\u5efa\u65e5\u671f\uff1a 2023\u5e7409\u670823\u65e5\n* \u6ce8    \u610f\uff1a\n*********************************************************************************************************\/\nvoid RLS(double* x, double* d, int n, double* w, int m, double r)\n{\n  int i, j, k;\n  double a, s, *g, *u, *px, *p;\n  g = malloc(m * sizeof(double));\n  u = malloc(m * sizeof(double));\n  px = malloc(m * sizeof(double));\n  p = malloc(m * m * sizeof(double));\n  for (i = 0; i &lt; m; i++)\n  {\n    for (j = 0; j &lt; m; j++)\n    {\n      p[i * m + j] = 0.0;\n    }\n  }\n  for (i = 0; i &lt; m; i++)\n  {\n    p[i * m + i] = 1.0e+8;\n  }\n  for (i = 0; i &lt; m; i++)\n  {\n    px[i] = 0.0;\n  }\n  for (k = 0; k &lt; n; k++)\n  {\n    px[0] = x[k];\n    for (j = 0; j &lt; m; j++)\n    {\n      u[j] = 0.0;\n      for (i = 0; i &lt; m; i++)\n      {\n        u[j] = u[j] + (1 \/ r) * p[j * m + i] * px[i];\n      }\n    }\n    s = 1.0;\n    for (i = 0; i &lt; m; i++)\n    {\n      s = s + u[i] * px[i];\n    }\n    for (i = 0; i &lt; m; i++)\n    {\n      g[i] = u[i] \/ s;\n    }\n    x[k] = 0.0;\n    for (i = 0; i &lt; m; i++)\n    {\n      x[k] = x[k] + w[i] * px[i];\n    }\n    a = d[k] - x[k];\n    for (i = 0; i &lt; m; i++)\n    {\n      w[i] = w[i] + g[i] * a;\n    }\n    for (j = 0; j &lt; m; j++)\n    {\n      for (i = 0; i &lt; m; i++)\n      {\n        p[j * m + i] = (1 \/ r) * p[j * m + i] - g[j] * u[i];\n      }\n    }\n    for (i = (m - 1); i &gt;= 1; i--)\n    {\n      px[i] = px[i - 1];\n    }\n  }\n  free(g);\n  free(u);\n  free(px);\n  free(p);\n}<\/code><\/pre>\n\n\n\n<p>\u6d4b\u8bd5\u4ee3\u7801\u5982\u4e0b\u6240\u793a\u3002\u5176\u4e2d\u5fc3\u7535\u6ce2\u5f62\u6570\u636e\u4e3a\u6a21\u62df\u5668\u6807\u51c6\u6570\u636e\uff0c\u8109\u7387\u503c\u4e3a 60BPM\uff0c\u91c7\u6837\u7387\u4e3a 2kHz\uff0c\u5728\u6587\u7ae0\u7684\u672b\u5c3e\u7ed9\u51fa\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">int main(void)\n{\n  extern const double g_arrEcgWave[4000];\n  int i, m, n;\n  long seed;\n  static double r, w[4000], d[4000], x[4000], y[4000];\n  FILE* fp;\n\n  \/\/\u83b7\u53d6\u7406\u60f3\u8f93\u51fa\u4fe1\u53f7\n  for (i = 0; i &lt; 2000; i++)\n  {\n    d[i] = g_arrEcgWave[i];\n  }\n\n  \/\/\u83b7\u53d6\u8f93\u5165\u6570\u636e\uff0c\u52a0\u566a\u58f0\n  seed = 13579l;\n  n = 2000;\n  for (i = 0; i &lt; n; i++)\n  {\n    x[i] = g_arrEcgWave[i] + 0.1 * Gauss(0.0, 1.0, &amp;seed);\n    y[i] = x[i];\n  }\n\n  \/\/ RLS \u6ee4\u6ce2\n  m = 4;\n  r = 1.0;\n  for (i = 0; i &lt; m; i++){ w[i] = 0.0;}\n  RLS(y, d, n, w, m, r);\n\n  \/\/\u8f93\u51fa\u6ce2\u5f62\u6570\u636e\uff0c\u6309\u7167\u539f\u59cb\u4fe1\u53f7\u3001\u53c2\u8003\u4fe1\u53f7\u3001\u6ee4\u6ce2\u540e\u4fe1\u53f7\u987a\u5e8f\n  fp = fopen(\"rls.csv\", \"w\");\n  for (i = 0; i &lt; n; i++)\n  {\n    fprintf(fp, \"%d,%10.7lf,%10.7lf,%10.7lf\\n\", i, x[i], d[i], y[i]);\n  }\n  return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u6700\u7ec8\u5b9e\u9a8c\u7ed3\u679c\u5982\u4e0b\u6240\u793a\u3002\u84dd\u8272\u4e3a\u53c2\u8003\u4fe1\u53f7\uff0c\u7eff\u8272\u4e3a\u8f93\u5165\u4fe1\u53f7\uff0c\u9ec4\u8272\u4e3a\u8f93\u51fa\u4fe1\u53f7\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"496\" src=\"http:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u9012\u63a8\u6700\u5c0f\u4e8c\u4e58\uff08RLS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-1024x496.png\" alt=\"\" class=\"wp-image-1966\" srcset=\"https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u9012\u63a8\u6700\u5c0f\u4e8c\u4e58\uff08RLS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-1024x496.png 1024w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u9012\u63a8\u6700\u5c0f\u4e8c\u4e58\uff08RLS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-300x145.png 300w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u9012\u63a8\u6700\u5c0f\u4e8c\u4e58\uff08RLS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-768x372.png 768w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u9012\u63a8\u6700\u5c0f\u4e8c\u4e58\uff08RLS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-548x265.png 548w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u9012\u63a8\u6700\u5c0f\u4e8c\u4e58\uff08RLS\uff09\u81ea\u9002\u5e94\u6570\u5b57\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A.png 1436w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%BB%91%E5%8A%A8%E5%B9%B3%E5%9D%87%E6%BB%A4%E6%B3%A2\"><\/span>\u6ed1\u52a8\u5e73\u5747\u6ee4\u6ce2<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u5b9e\u73b0\u4ee3\u7801\u5982\u4e0b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">\/*********************************************************************************************************\n* \u51fd\u6570\u540d\u79f0\uff1a MovAverageFilter\n* \u51fd\u6570\u529f\u80fd\uff1a \u6ed1\u52a8\u5e73\u5747\u6ee4\u6ce2\n* \u8f93\u5165\u53c2\u6570\uff1a filter\uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a oder\u3002\u6ee4\u6ce2\u7f13\u51b2\u533a\u3002\n*            order \uff1a\u6574\u578b\u53d8\u91cf\u3002\u6ee4\u6ce2\u9636\u6570\u3002\n*            dat   \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u53d8\u91cf\u3002\u65b0\u7684\u91c7\u6837\u6570\u636e\n* \u8f93\u51fa\u53c2\u6570\uff1a void\n* \u8fd4 \u56de \u503c\uff1a \u6ee4\u6ce2\u503c\n* \u521b\u5efa\u65e5\u671f\uff1a 2023\u5e7409\u670820\u65e5\n* \u6ce8    \u610f\uff1a\n*********************************************************************************************************\/\ndouble MovAverageFilter(double* filter, int order, double dat)\n{\n  int i;\n  double sum;\n  for (i = 0; i &lt; order - 1; i++)\n  {\n    filter[i] = filter[i + 1];\n  }\n  filter[order - 1] = dat;\n  sum = 0;\n  for (i = 0; i &lt; order; i++)\n  {\n    sum = sum + filter[i];\n  }\n  sum = sum \/ order;\n  return sum;\n}<\/code><\/pre>\n\n\n\n<p>\u6d4b\u8bd5\u4ee3\u7801\u5982\u4e0b\u6240\u793a\u3002\u5176\u4e2d\u5fc3\u7535\u6ce2\u5f62\u6570\u636e\u4e3a\u6a21\u62df\u5668\u6807\u51c6\u6570\u636e\uff0c\u8109\u7387\u503c\u4e3a 60BPM\uff0c\u91c7\u6837\u7387\u4e3a 2kHz\uff0c\u5728\u6587\u7ae0\u7684\u672b\u5c3e\u7ed9\u51fa\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">int main(void)\n{\n  extern const double g_arrEcgWave[4000];\n  #define FILTER_ORDER 8\n  static double s_arrFilter[FILTER_ORDER] = {0};\n  int i, n;\n  long seed;\n  static double d[4000], x[4000], y[4000];\n  FILE* fp;\n\n  \/\/\u83b7\u53d6\u7406\u60f3\u8f93\u51fa\u4fe1\u53f7\n  n = 2000;\n  for (i = 0; i &lt; 2000; i++)\n  {\n    d[i] = g_arrEcgWave[i];\n  }\n\n  \/\/\u83b7\u53d6\u8f93\u5165\u6570\u636e\uff0c\u52a0\u566a\u58f0\n  seed = 13579l;\n  for (i = 0; i &lt; n; i++)\n  {\n    x[i] = g_arrEcgWave[i] + 0.1 * Gauss(0.0, 1.0, &amp;seed);\n  }\n\n  \/\/\u6ed1\u52a8\u5e73\u5747\u6ee4\u6ce2\n  for (i = 0; i &lt; n; i++)\n  {\n    y[i] = MovAverageFilter(s_arrFilter, FILTER_ORDER, x[i]);\n  }\n\n  \/\/\u8f93\u51fa\u6ce2\u5f62\u6570\u636e\uff0c\u6309\u7167\u539f\u59cb\u4fe1\u53f7\u3001\u53c2\u8003\u4fe1\u53f7\u3001\u6ee4\u6ce2\u540e\u4fe1\u53f7\u987a\u5e8f\n  fp = fopen(\"MovAverageFilter.csv\", \"w\");\n  for (i = 0; i &lt; n; i++)\n  {\n    fprintf(fp, \"%d,%10.7lf,%10.7lf,%10.7lf\\n\", i, x[i], d[i], y[i]);\n  }\n  return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u6700\u7ec8\u5b9e\u9a8c\u7ed3\u679c\u5982\u4e0b\u6240\u793a\u3002\u84dd\u8272\u4e3a\u53c2\u8003\u4fe1\u53f7\uff0c\u7eff\u8272\u4e3a\u8f93\u5165\u4fe1\u53f7\uff0c\u9ec4\u8272\u4e3a\u8f93\u51fa\u4fe1\u53f7\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"481\" src=\"http:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u6ed1\u52a8\u5e73\u5747\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-1024x481.png\" alt=\"\" class=\"wp-image-1971\" srcset=\"https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u6ed1\u52a8\u5e73\u5747\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-1024x481.png 1024w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u6ed1\u52a8\u5e73\u5747\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-300x141.png 300w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u6ed1\u52a8\u5e73\u5747\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-768x361.png 768w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u6ed1\u52a8\u5e73\u5747\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-548x258.png 548w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u6ed1\u52a8\u5e73\u5747\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A.png 1434w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u5fc3\u7535\u4fe1\u53f7\u6dfb\u52a0 50Hz \u5de5\u9891\u5e72\u6270\uff0c\u5229\u7528\u6ed1\u52a8\u5e73\u5747\u6ee4\u6ce2\u6ee4\u9664\u5de5\u9891\u5e72\u6270\u793a\u4f8b\u5982\u4e0b\u30022kHz \u91c7\u6837\u7387\u4e0b\u6ee4\u6ce2\u9636\u6570\u4e3a 40\uff0c500Hz \u91c7\u6837\u7387\u4e0b\u6ee4\u6ce2\u9636\u6570\u4e3a 10\uff0c\u5176\u5b83\u91c7\u6837\u7387\u53ef\u4ee5\u6839\u636e\u8fd9\u4e2a\u89c4\u5f8b\u8bbe\u7f6e\u6ee4\u6ce2\u9636\u6570\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">int main(void)\r\n{\r\n  extern const double g_arrEcgWave[4000];\r\n  #define FILTER_ORDER 40\r\n  static double s_arrFilter[FILTER_ORDER] = { 0 };\r\n  int i, n;\r\n  long seed;\r\n  static double d[4000], x[4000], y[4000];\r\n  double pi, time;\r\n  FILE* fp;\r\n\r\n  \/\/\u83b7\u53d6\u7406\u60f3\u8f93\u51fa\u4fe1\u53f7\r\n  n = 2000;\r\n  for (i = 0; i &lt; 2000; i++)\r\n  {\r\n    d[i] = g_arrEcgWave[i];\r\n  }\r\n\r\n  \/\/\u83b7\u53d6\u8f93\u5165\u6570\u636e\uff0c\u52a0 50Hz \u5de5\u9891\u5e72\u6270\r\n  seed = 13579l;\r\n  pi = 3.1415926535;\r\n  time = 0;\r\n  for (i = 0; i &lt; n; i++)\r\n  {\r\n    x[i] = g_arrEcgWave[i] + 0.1 * sin(time * 2 * pi \/ (1.0 \/ 50.0));\r\n    time = time + 0.0005;\r\n  }\r\n\r\n  \/\/\u6ed1\u52a8\u5e73\u5747\u6ee4\u6ce2\r\n  for (i = 0; i &lt; n; i++)\r\n  {\r\n    y[i] = MovAverageFilter(s_arrFilter, FILTER_ORDER, x[i]);\r\n  }\r\n\r\n  \/\/\u8f93\u51fa\u6ce2\u5f62\u6570\u636e\uff0c\u6309\u7167\u539f\u59cb\u4fe1\u53f7\u3001\u53c2\u8003\u4fe1\u53f7\u3001\u6ee4\u6ce2\u540e\u4fe1\u53f7\u987a\u5e8f\r\n  fp = fopen(\"MovAverageFilter.csv\", \"w\");\r\n  for (i = 0; i &lt; n; i++)\r\n  {\r\n    fprintf(fp, \"%d,%10.7lf,%10.7lf,%10.7lf\\n\", i, x[i], d[i], y[i]);\r\n  }\r\n  return 0;\r\n}<\/code><\/pre>\n\n\n\n<p>\u6700\u7ec8\u5b9e\u9a8c\u7ed3\u679c\u5982\u4e0b\u6240\u793a\u3002\u84dd\u8272\u4e3a\u53c2\u8003\u4fe1\u53f7\uff0c\u7eff\u8272\u4e3a\u8f93\u5165\u4fe1\u53f7\uff0c\u9ec4\u8272\u4e3a\u8f93\u51fa\u4fe1\u53f7\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"484\" src=\"http:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u6ed1\u52a8\u5e73\u5747\u6ee4\u6ce2\u6ee4\u9664\u5de5\u9891\u5e72\u6270\u7ed3\u679c-20230923A-1024x484.png\" alt=\"\" class=\"wp-image-1978\" srcset=\"https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u6ed1\u52a8\u5e73\u5747\u6ee4\u6ce2\u6ee4\u9664\u5de5\u9891\u5e72\u6270\u7ed3\u679c-20230923A-1024x484.png 1024w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u6ed1\u52a8\u5e73\u5747\u6ee4\u6ce2\u6ee4\u9664\u5de5\u9891\u5e72\u6270\u7ed3\u679c-20230923A-300x142.png 300w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u6ed1\u52a8\u5e73\u5747\u6ee4\u6ce2\u6ee4\u9664\u5de5\u9891\u5e72\u6270\u7ed3\u679c-20230923A-768x363.png 768w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u6ed1\u52a8\u5e73\u5747\u6ee4\u6ce2\u6ee4\u9664\u5de5\u9891\u5e72\u6270\u7ed3\u679c-20230923A-548x259.png 548w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u6ed1\u52a8\u5e73\u5747\u6ee4\u6ce2\u6ee4\u9664\u5de5\u9891\u5e72\u6270\u7ed3\u679c-20230923A.png 1431w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E4%B8%AD%E5%80%BC%E6%BB%A4%E6%B3%A2\"><\/span>\u4e2d\u503c\u6ee4\u6ce2<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u5b9e\u73b0\u4ee3\u7801\u5982\u4e0b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">\/*********************************************************************************************************\n* \u51fd\u6570\u540d\u79f0\uff1a MedianFilter\n* \u51fd\u6570\u529f\u80fd\uff1a \u4e2d\u503c\u6ee4\u6ce2\n* \u8f93\u5165\u53c2\u6570\uff1a filter1\uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a oder\u3002\u6ee4\u6ce2\u7f13\u51b2\u533a\u3002\n*            filter2\uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a oder\u3002\u6ee4\u6ce2\u7f13\u51b2\u533a\u3002\n*            order  \uff1a\u6574\u578b\u53d8\u91cf\u3002\u6ee4\u6ce2\u9636\u6570\u3002\n*            dat    \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u53d8\u91cf\u3002\u65b0\u7684\u91c7\u6837\u6570\u636e\n* \u8f93\u51fa\u53c2\u6570\uff1a void\n* \u8fd4 \u56de \u503c\uff1a \u6ee4\u6ce2\u503c\n* \u521b\u5efa\u65e5\u671f\uff1a 2023\u5e7409\u670823\u65e5\n* \u6ce8    \u610f\uff1a\n*********************************************************************************************************\/\ndouble MedianFilter(double* filter1, double* filter2, int order, double dat)\n{\n  int i, j;\n  double swap;\n  \n  \/\/\u5c06\u6700\u65b0\u7684\u6570\u636e\u4fdd\u5b58\u5230\u7f13\u51b2\u533a 1\n  for (i = 0; i &lt; order - 1; i++)\n  {\n    filter1[i] = filter1[i + 1];\n  }\n  filter1[order - 1] = dat;\n\n  \/\/\u5c06\u6570\u636e\u62f7\u8d1d\u5230\u7f13\u51b2\u533a 2\n  for (i = 0; i &lt; order; i++)\n  {\n    filter2[i] = filter1[i];\n  }\n\n  \/\/\u91cd\u65b0\u6392\u5e8f\n  for (i = 0; i &lt; order; i++)\n  {\n    for (j = i + 1; j &lt; order; j++)\n    {\n      if (filter2[j] &gt; filter2[i])\n      {\n        swap = filter2[j];\n        filter2[j] = filter2[i];\n        filter2[i] = swap;\n      }\n    }\n  }\n\n  \/\/\u8fd4\u56de\u4e2d\u4f4d\u503c\n  return filter2[order \/ 2];\n}\n<\/code><\/pre>\n\n\n\n<p>\u6d4b\u8bd5\u4ee3\u7801\u5982\u4e0b\u6240\u793a\u3002\u5176\u4e2d\u5fc3\u7535\u6ce2\u5f62\u6570\u636e\u4e3a\u6a21\u62df\u5668\u6807\u51c6\u6570\u636e\uff0c\u8109\u7387\u503c\u4e3a 60BPM\uff0c\u91c7\u6837\u7387\u4e3a 2kHz\uff0c\u5728\u6587\u7ae0\u7684\u672b\u5c3e\u7ed9\u51fa\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">int main(void)\n{\n  extern const double g_arrEcgWave[4000];\n  #define FILTER_ORDER 8\n  static double s_arrFilter1[FILTER_ORDER] = { 0 };\n  static double s_arrFilter2[FILTER_ORDER] = { 0 };\n  int i, n;\n  long seed;\n  static double d[4000], x[4000], y[4000];\n  FILE* fp;\n\n  \/\/\u83b7\u53d6\u7406\u60f3\u8f93\u51fa\u4fe1\u53f7\n  n = 2000;\n  for (i = 0; i &lt; 2000; i++)\n  {\n    d[i] = g_arrEcgWave[i];\n  }\n\n  \/\/\u83b7\u53d6\u8f93\u5165\u6570\u636e\uff0c\u52a0\u566a\u58f0\n  seed = 13579l;\n  for (i = 0; i &lt; n; i++)\n  {\n    x[i] = g_arrEcgWave[i] + 0.1 * Gauss(0.0, 1.0, &amp;seed);\n  }\n\n  \/\/\u6ed1\u52a8\u5e73\u5747\u6ee4\u6ce2\n  for (i = 0; i &lt; n; i++)\n  {\n    y[i] = MedianFilter(s_arrFilter1, s_arrFilter2, FILTER_ORDER, x[i]);\n  }\n\n  \/\/\u8f93\u51fa\u6ce2\u5f62\u6570\u636e\uff0c\u6309\u7167\u539f\u59cb\u4fe1\u53f7\u3001\u53c2\u8003\u4fe1\u53f7\u3001\u6ee4\u6ce2\u540e\u4fe1\u53f7\u987a\u5e8f\n  fp = fopen(\"MedianFilter.csv\", \"w\");\n  for (i = 0; i &lt; n; i++)\n  {\n    fprintf(fp, \"%d,%10.7lf,%10.7lf,%10.7lf\\n\", i, x[i], d[i], y[i]);\n  }\n  return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u6700\u7ec8\u5b9e\u9a8c\u7ed3\u679c\u5982\u4e0b\u6240\u793a\u3002\u84dd\u8272\u4e3a\u53c2\u8003\u4fe1\u53f7\uff0c\u7eff\u8272\u4e3a\u8f93\u5165\u4fe1\u53f7\uff0c\u9ec4\u8272\u4e3a\u8f93\u51fa\u4fe1\u53f7\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"494\" src=\"http:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u4e2d\u503c\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-1024x494.png\" alt=\"\" class=\"wp-image-1974\" srcset=\"https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u4e2d\u503c\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-1024x494.png 1024w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u4e2d\u503c\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-300x145.png 300w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u4e2d\u503c\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-768x371.png 768w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u4e2d\u503c\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-548x264.png 548w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u4e2d\u503c\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A-623x300.png 623w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/09\/\u4e2d\u503c\u6ee4\u6ce2\u5b9e\u9a8c\u7ed3\u679c-20230923A.png 1436w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%BF%83%E7%94%B5%E6%B3%A2%E5%BD%A2%E6%95%B0%E6%8D%AE\"><\/span>\u5fc3\u7535\u6ce2\u5f62\u6570\u636e<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u672c\u6587\u4e2d\u4f7f\u7528\u5230\u7684\u5fc3\u7535\u6ce2\u5f62\u6570\u636e\u5982\u4e0b\u6240\u793a\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">\/*\n * \u5fc3\u7535\u6ce2\u5f62\u6570\u636e\n * \u91c7\u6837\u7387 2kHz\n * \u8109\u7387\u503c 60BPM\n * \u5355\u4f4d mV\n *\/\nconst double g_arrEcgWave[4000] = \n{\n-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,\n-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,\n-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,\n-0.06,-0.06,-0.06,-0.06,-0.05,-0.06,-0.05,-0.06,-0.06,-0.06,-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,\n-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,\n-0.06,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,-0.06,-0.06,-0.05,-0.06,-0.06,-0.05,-0.06,-0.06,-0.06,-0.06,-0.05,\n-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,\n-0.06,-0.06,-0.06,-0.06,-0.05,-0.06,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,\n-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,\n-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,\n-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,\n-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,\n-0.05,-0.05,-0.06,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,\n-0.06,-0.05,-0.06,-0.06,-0.06,-0.06,-0.05,-0.06,-0.06,-0.06,-0.05,-0.06,-0.06,-0.05,-0.06,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,-0.06,-0.06,-0.06,-0.06,\n-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,\n-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,-0.06,-0.06,\n-0.06,-0.06,-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.06,\n-0.06,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,\n-0.06,-0.06,-0.06,-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.06,-0.06,-0.06,-0.05,-0.05,-0.06,-0.06,\n-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,-0.06,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,\n-0.06,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,\n-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.06,-0.05,-0.06,-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,\n-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,-0.05,-0.05,-0.06,-0.06,\n-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.04,-0.04,-0.04,-0.04,-0.04,-0.03,-0.03,-0.02,-0.02,-0.03,\n-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.01,-0.01,-0.01,-0.01,0,0,0,0,0,0,0,0,0.01,0.01,0.01,0.01,0.01,0.01,\n0.01,0.01,0.01,0.01,0.01,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.03,0.03,0.02,0.03,0.03,0.03,0.03,0.03,\n0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,\n0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.02,0.02,0.03,0.03,0.03,0.03,0.02,\n0.02,0.02,0.02,0.02,0.02,0.02,0.01,0.02,0.02,0.02,0.02,0.01,0.01,0.01,0.01,0.01,0.01,0,0,0.01,0,0,0.01,0,0,0,\n0,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.02,-0.02,-0.02,-0.02,-0.03,-0.03,-0.02,-0.03,-0.03,-0.03,-0.03,-0.04,\n-0.04,-0.04,-0.04,-0.04,-0.04,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,\n-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,\n-0.05,-0.06,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.06,-0.07,\n-0.08,-0.08,-0.09,-0.1,-0.1,-0.1,-0.11,-0.12,-0.12,-0.12,-0.12,-0.14,-0.14,-0.14,-0.15,-0.16,-0.17,-0.17,-0.17,\n-0.19,-0.19,-0.19,-0.17,-0.13,-0.12,-0.12,-0.09,-0.05,-0.05,-0.05,-0.04,0,0.02,0.02,0.03,0.08,0.09,0.09,0.11,0.15,\n0.16,0.16,0.19,0.23,0.23,0.23,0.26,0.3,0.3,0.3,0.31,0.35,0.37,0.37,0.39,0.43,0.44,0.44,0.45,0.49,0.51,0.51,0.53,\n0.57,0.58,0.58,0.61,0.64,0.64,0.64,0.65,0.64,0.64,0.64,0.65,0.65,0.65,0.64,0.63,0.58,0.57,0.56,0.53,0.49,0.48,0.49,\n0.47,0.42,0.4,0.4,0.38,0.34,0.32,0.32,0.3,0.26,0.24,0.24,0.22,0.17,0.16,0.15,0.12,0.08,0.07,0.07,0.04,0,-0.01,-0.01,\n-0.02,-0.07,-0.09,-0.09,-0.11,-0.16,-0.17,-0.17,-0.18,-0.24,-0.25,-0.25,-0.28,-0.33,-0.33,-0.33,-0.32,-0.29,-0.28,\n-0.29,-0.28,-0.25,-0.23,-0.24,-0.23,-0.2,-0.2,-0.19,-0.18,-0.16,-0.15,-0.14,-0.13,-0.1,-0.1,-0.1,-0.08,-0.05,-0.06,\n-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,-0.06,-0.06,-0.06,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.06,\n-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.04,\n-0.05,-0.05,-0.05,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.05,-0.05,-0.05,-0.04,-0.04,\n-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,\n-0.04,-0.04,-0.04,-0.04,-0.04,-0.03,-0.03,-0.04,-0.04,-0.04,-0.03,-0.03,-0.03,-0.03,-0.03,-0.03,-0.03,-0.03,-0.03,\n-0.03,-0.03,-0.03,-0.02,-0.02,-0.02,-0.03,-0.03,-0.03,-0.02,-0.02,-0.02,-0.03,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,\n-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.01,-0.01,-0.02,-0.02,-0.02,-0.01,-0.01,-0.02,-0.02,-0.01,\n-0.02,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,0,-0.01,-0.01,-0.01,-0.01,-0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.02,0.02,0.02,0.02,\n0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.03,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.03,0.03,0.03,0.03,\n0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.03,0.04,0.04,\n0.04,0.04,0.05,0.05,0.05,0.04,0.04,0.04,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,\n0.05,0.06,0.06,0.06,0.05,0.06,0.06,0.06,0.05,0.05,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,\n0.06,0.06,0.07,0.07,0.07,0.07,0.07,0.07,0.07,0.07,0.07,0.07,0.08,0.07,0.07,0.07,0.07,0.08,0.08,0.08,0.08,0.08,\n0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.09,0.09,0.08,0.09,0.08,0.08,0.08,0.08,\n0.08,0.08,0.08,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.1,0.1,0.09,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.11,0.11,0.11,\n0.11,0.11,0.11,0.11,0.11,0.12,0.12,0.12,0.12,0.12,0.13,0.13,0.13,0.13,0.13,0.14,0.14,0.14,0.14,0.14,0.14,0.14,\n0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.16,0.16,0.16,0.16,0.16,0.16,0.16,\n0.16,0.16,0.16,0.16,0.16,0.16,0.17,0.17,0.17,0.17,0.16,0.16,0.16,0.16,0.16,0.16,0.16,0.16,0.15,0.15,0.15,0.15,\n0.15,0.15,0.15,0.15,0.14,0.14,0.14,0.14,0.13,0.14,0.13,0.13,0.13,0.13,0.13,0.13,0.12,0.12,0.12,0.12,0.12,0.12,\n0.12,0.12,0.12,0.11,0.12,0.12,0.11,0.11,0.11,0.11,0.11,0.11,0.11,0.11,0.11,0.11,0.11,0.11,0.11,0.11,0.11,0.11,\n0.1,0.1,0.1,0.1,0.1,0.09,0.1,0.09,0.08,0.08,0.08,0.08,0.07,0.07,0.06,0.06,0.06,0.05,0.05,0.05,0.04,0.04,0.04,\n0.03,0.03,0.03,0.03,0.02,0.01,0.01,0.01,0.01,0,0,0,0,-0.01,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,\n-0.03,-0.03,-0.03,-0.03,-0.03,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.05,-0.05,-0.04,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.05,-0.05,-0.06,-0.05,-0.05,-0.06,-0.06,-0.06,\n-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,\n-0.06,-0.05,-0.06,-0.06,-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,\n-0.06,-0.06,-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.06,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,\n-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,\n-0.06,-0.05,-0.05,-0.05,-0.06,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,\n-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,\n-0.06,-0.06,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,\n-0.06,-0.06,-0.06,-0.06,-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,\n-0.05,-0.06,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,\n-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.06,-0.06,-0.05,-0.06,-0.06,-0.06,\n-0.06,-0.06,-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,\n-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,\n-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,-0.05,-0.06,-0.05,-0.06,\n-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.06,\n-0.06,-0.06,-0.05,-0.06,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.05,-0.05,-0.06,-0.06,\n-0.06,-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,-0.05,-0.06,-0.06,-0.05,-0.06,-0.06,-0.06,-0.06,-0.05,-0.06,-0.06,\n-0.06,-0.05,-0.06,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,\n-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.06,-0.05,-0.06,-0.05,-0.05,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.06,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.04,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.04,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.04,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.04,-0.04,-0.04,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.04,-0.04,-0.04,-0.04,-0.04,-0.03,-0.03,\n-0.03,-0.03,-0.03,-0.03,-0.02,-0.03,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.01,-0.01,-0.01,-0.01,0,0,0,0,0.01,0.01,\n0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,\n0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.04,0.04,0.04,0.03,0.03,0.03,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.03,0.03,0.04,\n0.04,0.04,0.04,0.04,0.04,0.03,0.03,0.04,0.04,0.04,0.04,0.04,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.04,0.03,0.03,0.03,\n0.03,0.03,0.03,0.03,0.03,0.02,0.02,0.02,0.03,0.02,0.02,0.03,0.03,0.02,0.02,0.02,0.02,0.02,0.01,0.02,0.01,0.01,0.01,\n0.01,0.01,0.01,0.01,0.01,0.01,0,0,0,0,0,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.02,-0.02,-0.02,-0.02,-0.02,\n-0.02,-0.03,-0.03,-0.03,-0.03,-0.03,-0.03,-0.03,-0.04,-0.04,-0.04,-0.04,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.04,-0.04,-0.04,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.04,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.04,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.04,-0.04,-0.05,-0.04,-0.05,-0.05,-0.05,-0.04,\n-0.04,-0.05,-0.05,-0.05,-0.05,-0.04,-0.05,-0.04,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.04,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.04,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.07,-0.07,-0.07,-0.08,-0.09,-0.09,\n-0.1,-0.1,-0.11,-0.12,-0.12,-0.12,-0.13,-0.14,-0.14,-0.14,-0.15,-0.16,-0.17,-0.17,-0.19,-0.19,-0.19,-0.17,-0.13,\n-0.12,-0.12,-0.11,-0.06,-0.04,-0.04,-0.03,0,0.02,0.02,0.03,0.06,0.09,0.1,0.11,0.15,0.16,0.16,0.18,0.22,0.23,0.23,\n0.24,0.28,0.3,0.3,0.31,0.35,0.37,0.37,0.38,0.42,0.44,0.44,0.46,0.5,0.51,0.51,0.54,0.57,0.58,0.58,0.59,0.63,0.65,\n0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.63,0.58,0.57,0.57,0.54,0.5,0.48,0.49,0.48,0.44,0.41,0.4,0.39,0.35,\n0.33,0.33,0.32,0.27,0.24,0.24,0.22,0.18,0.16,0.16,0.14,0.09,0.08,0.08,0.07,0.02,-0.01,0,-0.02,-0.06,-0.09,-0.09,\n-0.1,-0.14,-0.17,-0.17,-0.19,-0.24,-0.25,-0.25,-0.28,-0.33,-0.33,-0.33,-0.32,-0.3,-0.29,-0.28,-0.28,-0.25,-0.24,\n-0.24,-0.24,-0.21,-0.19,-0.19,-0.18,-0.15,-0.14,-0.14,-0.13,-0.1,-0.1,-0.09,-0.09,-0.06,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.04,-0.04,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.04,-0.05,-0.05,-0.05,-0.05,-0.04,-0.04,-0.05,-0.05,-0.05,-0.05,-0.04,-0.04,-0.04,-0.04,\n-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.04,-0.03,-0.03,-0.04,-0.04,\n-0.04,-0.04,-0.04,-0.03,-0.03,-0.04,-0.04,-0.04,-0.03,-0.03,-0.03,-0.03,-0.03,-0.04,-0.04,-0.03,-0.04,-0.04,-0.03,\n-0.03,-0.03,-0.03,-0.03,-0.03,-0.03,-0.03,-0.03,-0.03,-0.03,-0.03,-0.03,-0.03,-0.03,-0.03,-0.02,-0.02,-0.02,-0.03,\n-0.03,-0.02,-0.03,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,\n-0.02,-0.02,-0.02,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,0,0,0,\n-0.01,0,0,0,-0.01,0,0,0,0,0,0,0,0,0,0.01,0.01,0,0,0,0.01,0,0.01,0.01,0.01,0,0.01,0.01,0.01,0.01,0.01,0.01,0.01,\n0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,\n0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.04,0.04,0.04,\n0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.05,0.05,0.05,0.04,\n0.04,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.06,0.05,0.05,0.05,0.06,0.06,0.06,0.06,0.06,0.06,0.05,0.06,\n0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.07,0.07,0.06,0.07,0.06,0.06,0.07,0.07,0.07,0.07,\n0.07,0.07,0.08,0.07,0.07,0.07,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.09,0.08,0.08,0.08,0.08,0.09,0.08,0.08,\n0.08,0.09,0.09,0.09,0.08,0.08,0.09,0.08,0.08,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.1,\n0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.11,0.11,0.11,0.11,0.11,0.11,0.11,0.12,0.12,0.12,0.13,0.12,\n0.12,0.13,0.13,0.13,0.13,0.13,0.13,0.13,0.13,0.13,0.14,0.14,0.14,0.14,0.15,0.15,0.15,0.15,0.15,0.14,0.15,0.15,\n0.16,0.16,0.16,0.15,0.15,0.16,0.16,0.16,0.16,0.16,0.16,0.16,0.16,0.16,0.16,0.17,0.17,0.17,0.17,0.17,0.16,0.16,\n0.17,0.17,0.17,0.17,0.17,0.17,0.17,0.17,0.16,0.16,0.16,0.16,0.16,0.15,0.16,0.15,0.15,0.15,0.15,0.15,0.15,0.14,\n0.14,0.14,0.14,0.14,0.13,0.13,0.14,0.14,0.13,0.13,0.13,0.13,0.13,0.12,0.12,0.12,0.12,0.12,0.12,0.12,0.12,0.12,\n0.12,0.12,0.12,0.12,0.12,0.12,0.12,0.11,0.11,0.12,0.11,0.11,0.11,0.11,0.11,0.11,0.1,0.1,0.11,0.1,0.11,0.11,0.1,\n0.1,0.1,0.09,0.09,0.09,0.08,0.07,0.07,0.07,0.07,0.06,0.05,0.06,0.06,0.04,0.04,0.04,0.04,0.04,0.03,0.03,0.03,0.02,\n0.02,0.01,0.01,0.01,0.01,0.01,0,0,-0.01,-0.01,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.03,-0.03,-0.03,-0.03,\n-0.03,-0.03,-0.03,-0.03,-0.03,-0.03,-0.03,-0.04,-0.04,-0.04,-0.05,-0.05,-0.04,-0.04,-0.04,-0.05,-0.05,-0.05,-0.06,\n-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.06,\n-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.05,\n-0.05,-0.06,-0.05,-0.05,-0.06,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.06,\n-0.05,-0.06,-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,\n-0.06,-0.06,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.06,-0.05,-0.06,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.06,-0.06,-0.06,-0.05,-0.05,-0.05,-0.06,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.06,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,\n};\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u8bb0\u5f55 C \u8bed\u8a00\u4e0b\u7684\u6570\u5b57\u6ee4\u6ce2\u5668\u53ca\u5176\u5e94\u7528\u793a\u4f8b\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,6],"tags":[],"_links":{"self":[{"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=\/wp\/v2\/posts\/1955"}],"collection":[{"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1955"}],"version-history":[{"count":9,"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=\/wp\/v2\/posts\/1955\/revisions"}],"predecessor-version":[{"id":1979,"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=\/wp\/v2\/posts\/1955\/revisions\/1979"}],"wp:attachment":[{"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1955"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1955"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1955"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}