{"id":2036,"date":"2023-10-07T20:31:32","date_gmt":"2023-10-07T12:31:32","guid":{"rendered":"https:\/\/www.huangrongzhen.ink\/?p=2036"},"modified":"2023-10-10T10:05:40","modified_gmt":"2023-10-10T02:05:40","slug":"c-%e8%af%ad%e8%a8%80-iir-%e6%bb%a4%e6%b3%a2%e5%99%a8%e8%ae%be%e8%ae%a1%e4%b8%8e%e5%ba%94%e7%94%a8","status":"publish","type":"post","link":"https:\/\/www.huangrongzhen.ink\/?p=2036","title":{"rendered":"C \u8bed\u8a00-IIR \u6ee4\u6ce2\u5668\u8bbe\u8ba1\u4e0e\u5e94\u7528"},"content":{"rendered":"<div class=\"wp-block-post-excerpt\"><p class=\"wp-block-post-excerpt__excerpt\">\u672c\u6587\u4e2d\u5c06\u4ecb\u7ecd\u5728 C \u8bed\u8a00\u73af\u5883\u4e0b\u5982\u4f55\u90e8\u7f72 IIR \u6ee4\u6ce2\u5668\u3002\u6700\u540e\u7528\u4e00\u4e2a\u5b9e\u4f8b\u5c55\u793a\u5982\u4f55\u8bbe\u8ba1\u4e00\u4e2a IIR \u6ee4\u6ce2\u5668\u7528\u6765\u6ee4\u9664&hellip; <\/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>\u672c\u6587\u4e2d\u9700\u8981\u5305\u542b\u7684\u5934\u6587\u4ef6\u5982\u4e0b\u6240\u793a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">#include &lt;stdio.h&gt;\n#include &lt;math.h&gt;\n#include &lt;malloc.h&gt;\n#include &lt;stdlib.h&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%95%B0%E5%AD%97%E4%BF%A1%E5%8F%B7%E7%9A%84%E9%A2%91%E7%8E%87%E5%93%8D%E5%BA%94\"><\/span>\u6570\u5b57\u4fe1\u53f7\u7684\u9891\u7387\u54cd\u5e94<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u8bbe\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u8f93\u5165\u4e3a x(k)\uff0c\u8f93\u51fa\u4e3a y(k)\uff0c\u5219\u8be5\u6ee4\u6ce2\u5668\u53ef\u4ee5\u7528\u5dee\u5206\u65b9\u7a0b\u8868\u793a\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(y(k)+\\sum_{i=1}^{N}a(i)y(k-i)=\\sum_{i=0}^{M}b(i)x(k-i)\\)<\/p>\n\n\n\n<p>\u5176\u4f20\u9012\u51fd\u6570\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H(z) = \\frac{b(0)+b(1)z^{-1}+\u2026+b(M)z^{-M}}{1+a(0)z^{-1}+\u2026+a(N)z^{-N}}\\)<\/p>\n\n\n\n<p>\u5176\u4e2d a(i)(i=1,2,&#8230;,N) \u548c b(i)(i=0,1,&#8230;M) \u5206\u522b\u662f\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5206\u6bcd\u591a\u9879\u5f0f\u548c\u5206\u5b50\u591a\u9879\u5f0f\u7684\u7cfb\u6570\u3002<\/p>\n\n\n\n<p>\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u9891\u7387\u54cd\u5e94 H(w) \u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H(w)=\\frac{b(0) + b(1)e^{-jw} +\u2026+ b(M)e^{-jMw}}{1 + a(1)e^{-jw} +\u2026+ a(N)e^{-jNw}}\\)<\/p>\n\n\n\n<p>\u5373<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H(w) = Re[H(w)] + jIm[H(w)] = \\left | H(w) \\right |e^{j\\varphi (w)}\\)<\/p>\n\n\n\n<p>\u5176\u4e2d |H(w)| \u662f\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5e45\u9891\u54cd\u5e94\uff0c\u82e5\u7528\u5206\u8d1d\u8868\u793a\uff0c\u5219\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(20\\log_{10}\\left | H(w) \\right | (dB)\\)<\/p>\n\n\n\n<p>\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u76f8\u9891\u54cd\u5e94\u53ef\u8868\u8fbe\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(\\varphi (w) = tan^{-1}\\left ( \\frac{Im[H(w)]}{Re[H(w)]} \\right )\\)<\/p>\n\n\n\n<p>\u5b9e\u73b0\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">\/*********************************************************************************************************\n* \u51fd\u6570\u540d\u79f0\uff1a Gain\n* \u51fd\u6570\u529f\u80fd\uff1a \u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u9891\u7387\u54cd\u5e94\n* \u8f93\u5165\u53c2\u6570\uff1a b   \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a\uff08m+1\uff09\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u5206\u5b50\u591a\u9879\u5f0f\u7684\u7cfb\u6570 b(i)\u3002\n*            a   \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a\uff08n+1\uff09\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u5206\u6bcd\u591a\u9879\u5f0f\u7684\u7cfb\u6570 a(i)\u3002\n*            m   \uff1a\u6574\u578b\u53d8\u91cf\u3002\u6ee4\u6ce2\u5668\u5206\u5b50\u591a\u9879\u5f0f\u7684\u9636\u6570\u3002\n*            n   \uff1a\u6574\u5f62\u53d8\u91cf\u3002\u6ee4\u6ce2\u5668\u5206\u6bcd\u591a\u9879\u5f0f\u7684\u9636\u6570\u3002\n*            x   \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a len\u3002\n*                  \u5f53 sign = 0 \u65f6\uff0c\u5b58\u653e\u6ee4\u6ce2\u5668\u9891\u7387\u54cd\u5e94\u7684\u5b9e\u90e8 Rc[H(w)]\uff1b\n*                  \u5f53 sign = 1 \u65f6\uff0c\u5b58\u653e\u6ee4\u6ce2\u5668\u5e45\u9891\u54cd\u5e94 |H(w)|\uff1b\n*                  \u5f53 sign = 2 \u65f6\uff0c\u5b58\u653e\u5206\u8d1d\u8868\u793a\u7684\u6ee4\u6ce2\u5668\u5e45\u9891\u54cd\u5e94 |H(w)|\u3002\n*            y   \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a len\u3002\n*                  \u5f53 sign = 0 \u65f6\uff0c\u5b58\u653e\u6ee4\u6ce2\u5668\u9891\u7387\u54cd\u5e94\u7684\u865a\u90e8 Im[H(w)]\uff1b\n*                  \u5f53 sign = 1 \u6216 2 \u65f6\uff0c\u5b58\u653e\u6ee4\u6ce2\u5668\u7684\u76f8\u9891\u54cd\u5e94 \u03c6(w)\u3002\n*            sign\uff1a\u6574\u5f62\u53d8\u91cf\u3002\n*                  \u5f53 sign = 0 \u65f6\uff0c\u8ba1\u7b97\u6ee4\u6ce2\u5668\u9891\u7387\u54cd\u5e94\u7684\u5b9e\u90e8 Rc[H(w)] \u548c \u865a\u90e8 Im[H(w)]\uff1b\n*                  \u5f53 sign = 1 \u65f6\uff0c\u8ba1\u7b97\u6ee4\u6ce2\u5668\u7684\u5e45\u9891\u54cd\u5e94 |H(w)| \u548c\u76f8\u9891\u54cd\u5e94 \u03c6(w)\uff1b\n*                  \u5f53 sign = 2 \u65f6\uff0c\u8ba1\u7b97\u6ee4\u6ce2\u5668\u7684\u5e45\u9891\u54cd\u5e94 |H(w)| \uff08\u7528 dB \u8868\u793a\uff09\u548c\u76f8\u9891\u54cd\u5e94 \u03c6(w)\u3002\n* \u8f93\u51fa\u53c2\u6570\uff1a void\n* \u8fd4 \u56de \u503c\uff1a void\n* \u521b\u5efa\u65e5\u671f\uff1a 2023\u5e7409\u670829\u65e5\n* \u6ce8    \u610f\uff1a\n*********************************************************************************************************\/\nvoid Gain(double* b, double* a, int m, int n, double* x, double* y, int len, int sign)\n{\n  int i, k;\n  double ar, ai, br, bi, zr, zi, im, re, den, numr, numi, freq, temp;\n  for (k = 0; k &lt; len; k++)\n  {\n    freq = k * 0.5 \/ (len - 1);\n    zr = cos(-8.0 * atan(1.0) * freq);\n    zi = sin(-8.0 * atan(1.0) * freq);\n    br = 0.0;\n    bi = 0.0;\n    for (i = m; i &gt; 0; i--)\n    {\n      re = br;\n      im = bi;\n      br = (re + b[i]) * zr - im * zi;\n      bi = (re + b[i]) * zi + im * zr;\n    }\n    ar = 0.0;\n    ai = 0.0;\n    for (i = n; i &gt; 0; i--)\n    {\n      re = ar;\n      im = ai;\n      ar = (re + a[i]) * zr - im * zi;\n      ai = (re + a[i]) * zi + im * zr;\n    }\n    br = br + b[0];\n    ar = ar + 1.0;\n    numr = ar * br + ai * bi;\n    numi = ar * bi - ai * br;\n    den = ar * ar + ai * ai;\n    x[k] = numr \/ den;\n    y[k] = numi \/ den;\n    switch (sign)\n    {\n      case 1:\n      {\n        temp = sqrt(x[k] * x[k] + y[k] * y[k]);\n        y[k] = atan2(y[k], x[k]);\n        x[k] = temp;\n        break;\n      }\n      case 2:\n      {\n        temp = x[k] * x[k] + y[k] * y[k];\n        y[k] = atan2(y[k], x[k]);\n        x[k] = 10.0 * log10(temp);\n      }\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p>\u6570\u5b57\u7cfb\u7edf\u7684\u4f20\u9012\u51fd\u6570\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H(z) = \\frac{-0.1z^{-1}}{1 + 0.9z^{-2}}\\)<\/p>\n\n\n\n<p>\u6c42\u8be5\u7cfb\u7edf\u7684\u5e45\u9891\u54cd\u5e94\u548c\u76f8\u9891\u54cd\u5e94\uff0c\u5e76\u753b\u51fa\u76f8\u5e94\u7684\u6ce2\u5f62\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">int main(void)\n{\n  int i;\n  static double a[] = { 1.0, 0.0, 0.9 }, b[] = { 0.0, -0.1 };\n  static double f, x[300], y[300];\n  FILE* fp;\n  Gain(b, a, 1, 2, x, y, 300, 1);\n  fp = fopen(\"gainam.csv\", \"w\");\n  for (i = 0; i &lt; 300; i++)\n  {\n    f = i * 0.5 \/ 299;\n    fprintf(fp, \"%lf,%lf\\n\", f, x[i]);\n  }\n  fclose(fp);\n  fp = fopen(\"gainph.csv\", \"w\");\n  for (i = 0; i &lt; 300; i++)\n  {\n    f = i * 0.5 \/ 299;\n    fprintf(fp, \"%lf,%lf\\n\", f, y[i]);\n  }\n  fclose(fp);\n  return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u8f93\u51fa\u7684\u5e45\u9891\u54cd\u5e94\u66f2\u7ebf\u5982\u4e0b\u56fe\u6240\u793a.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"525\" src=\"http:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u7cfb\u7edf\u7684\u5e45\u9891\u54cd\u5e942-20231008-1024x525.png\" alt=\"\" class=\"wp-image-2113\" srcset=\"https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u7cfb\u7edf\u7684\u5e45\u9891\u54cd\u5e942-20231008-1024x525.png 1024w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u7cfb\u7edf\u7684\u5e45\u9891\u54cd\u5e942-20231008-300x154.png 300w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u7cfb\u7edf\u7684\u5e45\u9891\u54cd\u5e942-20231008-768x394.png 768w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u7cfb\u7edf\u7684\u5e45\u9891\u54cd\u5e942-20231008-548x281.png 548w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u7cfb\u7edf\u7684\u5e45\u9891\u54cd\u5e942-20231008.png 1321w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u8f93\u51fa\u7684\u76f8\u9891\u54cd\u5e94\u5982\u4e0b\u56fe\u6240\u793a\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"527\" src=\"http:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u76f8\u9891\u54cd\u5e941-20231008-1024x527.png\" alt=\"\" class=\"wp-image-2114\" srcset=\"https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u76f8\u9891\u54cd\u5e941-20231008-1024x527.png 1024w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u76f8\u9891\u54cd\u5e941-20231008-300x154.png 300w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u76f8\u9891\u54cd\u5e941-20231008-768x395.png 768w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u76f8\u9891\u54cd\u5e941-20231008-548x282.png 548w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u76f8\u9891\u54cd\u5e941-20231008.png 1316w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%BA%A7%E8%81%94%E5%9E%8B%E6%95%B0%E5%AD%97%E6%BB%A4%E6%B3%A2%E5%99%A8%E7%9A%84%E9%A2%91%E7%8E%87%E5%93%8D%E5%BA%94\"><\/span>\u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u9891\u7387\u54cd\u5e94<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u4f20\u9012\u51fd\u6570\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H(z) = \\prod_{j = 1}^{L}H_{j}(z)=\\prod_{j = 1}^{L}\\frac{b(j,0) + b(j,1)z^{-1} + \u2026+ b(j,N)z^{-N}}{1 + a(j,1)z^{-1} + \u2026+ a(j,N)z^{-N}}\\)<\/p>\n\n\n\n<p>\u5176\u4e2d N \u9636\u8282 \\(H_{j}(z)\\) \u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H_{j}(z) = \\frac{b(j,0) + b(j,1)z^{-1} +\u2026+ b(j,N)z^{-N}}{1 + a(j,1)z^{-1} +\u2026+ a(j,N)z^{-N}}\\)<\/p>\n\n\n\n<p>\u8fd9\u91cc\u7684 a(j,i) \u548c b(j,i)(j=1,2,&#8230;,L;i=0,1,&#8230;,N) \u5206\u522b\u662f\u6570\u5b57\u6ee4\u6ce2\u5668\u5206\u6bcd\u591a\u9879\u5f0f\u548c\u5206\u5b50\u591a\u9879\u5f0f\u7684\u7cfb\u6570\u3002<\/p>\n\n\n\n<p>\u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u9891\u7387\u54cd\u5e94 H(w) \u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H(w) = \\prod_{j=1}^{L}\\frac{b(j,0)+b(j,1)e^{-jw}+\u2026+b(j,N)e^{-jNw}}{1+a(j,1)e^{-jw}+\u2026+a(j,N)e^{-jNw}}\\)<\/p>\n\n\n\n<p>\u5373<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H(w) = Re[H(w)] + jIm[H(w)] = \\left | H(w) \\right |e^{j\\varphi (w)}\\)<\/p>\n\n\n\n<p>\u5176\u4e2d |H(w)| \u662f\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5e45\u9891\u54cd\u5e94\uff0c\u82e5\u7528\u5206\u8d1d\u8868\u793a\uff0c\u5219\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(20\\log_{10}\\left | H(w) \\right | (dB)\\)<\/p>\n\n\n\n<p>\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u76f8\u9891\u54cd\u5e94\u53ef\u8868\u8fbe\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(\\varphi (w) = tan^{-1}\\left ( \\frac{Im[H(w)]}{Re[H(w)]} \\right )\\)<\/p>\n\n\n\n<p>\u5b9e\u73b0\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">\/*********************************************************************************************************\n* \u51fd\u6570\u540d\u79f0\uff1a Gainc\n* \u51fd\u6570\u529f\u80fd\uff1a \u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u9891\u7387\u54cd\u5e94\n* \u8f93\u5165\u53c2\u6570\uff1a b   \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e8c\u7ef4\u6570\u7ec4\uff0c\u4f53\u79ef\u4e3a ns*\uff08n+1\uff09\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u5206\u5b50\u591a\u9879\u5f0f\u7684\u7cfb\u6570\uff0c\n*                  b[j][i] \u8868\u793a\u7b2c j \u4e2a n \u9636\u8282\u7684\u5206\u5b50\u591a\u9879\u5f0f\u7684\u7b2c i \u4e2a\u7cfb\u6570\u3002\n*            a   \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e8c\u7ef4\u6570\u7ec4\uff0c\u4f53\u79ef\u4e3a ns*\uff08n+1\uff09\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u5206\u6bcd\u591a\u9879\u5f0f\u7684\u7cfb\u6570\uff0c\n*                  a[j][i] \u8868\u793a\u7b2c j \u4e2a n \u9636\u8282\u7684\u5206\u6bcd\u591a\u9879\u5f0f\u7684\u7b2c i \u4e2a\u7cfb\u6570\u3002\n*            n   \uff1a\u6574\u578b\u53d8\u91cf\u3002\u7ea7\u8054\u578b\u6ee4\u6ce2\u5668\u6bcf\u8282\u7684\u9636\u6570\u3002\n*            ns  \uff1a\u6574\u5f62\u53d8\u91cf\u3002\u7ea7\u8054\u578b\u6ee4\u6ce2\u5668\u7684 n \u9636\u8282\u6570 L\u3002\n*            x   \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a len\u3002\n*                  \u5f53 sign = 0 \u65f6\uff0c\u5b58\u653e\u6ee4\u6ce2\u5668\u9891\u7387\u54cd\u5e94\u7684\u5b9e\u90e8 Rc[H(w)]\uff1b\n*                  \u5f53 sign = 1 \u65f6\uff0c\u5b58\u653e\u6ee4\u6ce2\u5668\u5e45\u9891\u54cd\u5e94 |H(w)|\uff1b\n*                  \u5f53 sign = 2 \u65f6\uff0c\u5b58\u653e\u5206\u8d1d\u8868\u793a\u7684\u6ee4\u6ce2\u5668\u5e45\u9891\u54cd\u5e94 |H(w)|\u3002\n*            y   \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a len\u3002\n*                  \u5f53 sign = 0 \u65f6\uff0c\u5b58\u653e\u6ee4\u6ce2\u5668\u9891\u7387\u54cd\u5e94\u7684\u865a\u90e8 Im[H(w)]\uff1b\n*                  \u5f53 sign = 1 \u6216 2 \u65f6\uff0c\u5b58\u653e\u6ee4\u6ce2\u5668\u7684\u76f8\u9891\u54cd\u5e94 \u03c6(w)\u3002\n*            sign\uff1a\u6574\u5f62\u53d8\u91cf\u3002\n*                  \u5f53 sign = 0 \u65f6\uff0c\u8ba1\u7b97\u6ee4\u6ce2\u5668\u9891\u7387\u54cd\u5e94\u7684\u5b9e\u90e8 Rc[H(w)] \u548c \u865a\u90e8 Im[H(w)]\uff1b\n*                  \u5f53 sign = 1 \u65f6\uff0c\u8ba1\u7b97\u6ee4\u6ce2\u5668\u7684\u5e45\u9891\u54cd\u5e94 |H(w)| \u548c\u76f8\u9891\u54cd\u5e94 \u03c6(w)\uff1b\n*                  \u5f53 sign = 2 \u65f6\uff0c\u8ba1\u7b97\u6ee4\u6ce2\u5668\u7684\u5e45\u9891\u54cd\u5e94 |H(w)| \uff08\u7528 dB \u8868\u793a\uff09\u548c\u76f8\u9891\u54cd\u5e94 \u03c6(w)\u3002\n* \u8f93\u51fa\u53c2\u6570\uff1a void\n* \u8fd4 \u56de \u503c\uff1a void\n* \u521b\u5efa\u65e5\u671f\uff1a 2023\u5e7409\u670829\u65e5\n* \u6ce8    \u610f\uff1a \n*********************************************************************************************************\/\nvoid Gainc(double* b, double* a, int n, int ns, double* x, double* y, int len, int sign)\n{\n  int i, j, k, n1;\n  double ar, ai, br, bi, zr, zi, im, re, den, numr, numi, freq, temp;\n  double hr, hi, tr, ti;\n  n1 = n + 1;\n  for (k = 0; k &lt; len; k++)\n  {\n    freq = k * 0.5 \/ (len - 1);\n    zr = cos(-8.0 * atan(1.0) * freq);\n    zi = sin(-8.0 * atan(1.0) * freq);\n    x[k] = 1.0;\n    y[k] = 0.0;\n    for (j = 0; j &lt; ns; j++)\n    {\n      br = 0.0;\n      bi = 0.0;\n      for (i = n; i &gt; 0; i--)\n      {\n        re = br;\n        im = bi;\n        br = (re + b[j * n1 + i]) * zr - im * zi;\n        bi = (re + b[j * n1 + i]) * zi + im * zr;\n      }\n      ar = 0.0;\n      ai = 0.0;\n      for (i = n; i &gt; 0; i--)\n      {\n        re = ar;\n        im = ai;\n        ar = (re + a[j * n1 + i]) * zr - im * zi;\n        ai = (re + a[j * n1 + i]) * zi + im * zr;\n      }\n      br = br + b[j * n1 + 0];\n      ar = ar + 1.0;\n      numr = ar * br + ai * bi;\n      numi = ar * bi - ai * br;\n      den = ar * ar + ai * ai;\n      hr = numr \/ den;\n      hi = numi \/ den;\n      tr = x[k] * hr - y[k] * hi;\n      ti = x[k] * hi + y[k] * hr;\n      x[k] = tr;\n      y[k] = ti;\n    }\n    switch(sign)\n    {\n      case 1:\n      {\n        temp = sqrt(x[k] * x[k] + y[k] * y[k]);\n        if (temp != 0.0)\n        {\n          y[k] = atan2(y[k], x[k]);\n        }\n        else\n        {\n          y[k] = 0.0;\n        }\n        x[k] = temp;\n        break;\n      }\n      case 2:\n      {\n        temp = x[k] * x[k] + y[k] * y[k];\n        if (temp != 0.0)\n        {\n          y[k] = atan2(y[k], x[k]);\n        }\n        else\n        {\n          temp = 1.0e-40;\n          y[k] = 0.0;\n        }\n        x[k] = 10.0 * log10(temp);\n      }\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p>\u6570\u5b57\u6ee4\u6ce2\u5668\u7531\u4e24\u4e2a\u5b50\u7cfb\u7edf \\(H_{1}(z)\\) \u548c \\(H_{2}(z)\\) \u7ea7\u8054\u800c\u6210\uff0c\u5176\u4e2d \\(H_{1}(z)\\) \u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H_{1}(z) = \\frac{0.2}{1 &#8211; 0.8z^{-1}}\\)<\/p>\n\n\n\n<p>\\(H_{2}(z)\\) \u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H_{2}(z) = \\frac{0.05 &#8211; 0.1z^{-1}}{1 &#8211; 0.95z^{-1} + 0.9z^{-2}}\\)<\/p>\n\n\n\n<p>\u9009\u53d6\u53c2\u6570 n = 2\uff0cns = 2\uff0clen = 300\uff0c\u6c42\u8be5\u6ee4\u6ce2\u5668\u7684\u5e45\u9891\u54cd\u5e94\u3002<\/p>\n\n\n\n<p>\u6d4b\u8bd5\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">int main(void)\n{\n  int i, n, ns;\n  double f;\n  static double a[2][3] = { {1.0, -0.8, 0.0}, {1.0, -0.95, 0.9} };\n  static double b[2][3] = { {0.2, 0.0, 0.0}, {0.05, -0.1, 0.0} };\n  static double x[300] = { 0 };\n  static double y[300] = { 0 };\n  FILE* fp;\n  n = 2;\n  ns = 2;\n  Gainc(b, a, n, ns, x, y, 300, 1);\n  fp = fopen(\"gaincam.csv\", \"w\");\n  for (i = 0; i &lt; 300; i++)\n  {\n    f = i * 0.5 \/ 299;\n    fprintf(fp, \"%lf,%lf\\n\", f, x[i]);\n  }\n  fclose(fp);\n  return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u8f93\u51fa\u7684\u5e45\u9891\u54cd\u5e94\u66f2\u7ebf\u5982\u4e0b\u6240\u793a\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"537\" src=\"http:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5e45\u9891\u54cd\u5e941-20231008-1024x537.png\" alt=\"\" class=\"wp-image-2115\" srcset=\"https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5e45\u9891\u54cd\u5e941-20231008-1024x537.png 1024w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5e45\u9891\u54cd\u5e941-20231008-300x157.png 300w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5e45\u9891\u54cd\u5e941-20231008-768x402.png 768w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5e45\u9891\u54cd\u5e941-20231008-548x287.png 548w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5e45\u9891\u54cd\u5e941-20231008.png 1313w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%95%B0%E5%AD%97%E6%BB%A4%E6%B3%A2%E5%99%A8%E7%9A%84%E6%97%B6%E5%9F%9F%E5%93%8D%E5%BA%94\"><\/span>\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u65f6\u57df\u54cd\u5e94<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u6b64\u90e8\u5206\u7528\u4e8e\u8ba1\u7b97\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e94\u548c\u5355\u4f4d\u9636\u8dc3\u54cd\u5e94\u3002<\/p>\n\n\n\n<p>\u8bbe\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u8f93\u5165\u4e3a x(k)\uff0c\u8f93\u51fa\u4e3a y(k)\uff0c\u5219\u8be5\u6ee4\u6ce2\u5668\u53ef\u7528\u5dee\u5206\u65b9\u7a0b\u8868\u793a\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(y(k) + \\sum_{i = 1}^{N}a(i)y(k-i) = \\sum_{i = 0}^{M}b(i)x(k-i)\\)<\/p>\n\n\n\n<p>\u5176\u4f20\u9012\u51fd\u6570\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H(z) = \\frac{b(0) + b(1)z^{-1} + \u2026+ b(M)z^{-M}}{1 + a(1)z^{-1} + \u2026+ a(N)z^{-N}}\\)<\/p>\n\n\n\n<p>\u5176\u4e2d a(i)(i=1,2,&#8230;,N) \u548c b(i)(i=0,1,&#8230;M) \u5206\u522b\u662f\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5206\u6bcd\u591a\u9879\u5f0f\u548c\u5206\u5b50\u591a\u9879\u5f0f\u7684\u7cfb\u6570\u3002<\/p>\n\n\n\n<p>\u5f53\u8f93\u5165\u5e8f\u5217 \\(x(k) = \\delta (1)\\) \u65f6\uff0c\u8f93\u51fa y(k) \u5c31\u662f\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e94\uff1b\u5f53\u8f93\u5165\u5e8f\u5217 \\(x(k) = u(k)\\) \u65f6\uff0c\u8f93\u51fa y(k)\u5c31\u662f\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u9636\u8dc3\u54cd\u5e94\u3002<\/p>\n\n\n\n<p>\u5b9e\u73b0\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">\/*********************************************************************************************************\n* \u51fd\u6570\u540d\u79f0\uff1a Resp\n* \u51fd\u6570\u529f\u80fd\uff1a \u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u65f6\u57df\u54cd\u5e94\n* \u8f93\u5165\u53c2\u6570\uff1a x \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a lx\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u7684\u8f93\u5165\u5e8f\u5217\u3002\n*            y \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a ly\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u7684\u8f93\u51fa\u5e8f\u5217\u3002\n*            lx\uff1a\u6574\u578b\u53d8\u91cf\u3002\u8f93\u5165\u5e8f\u5217\u7684\u957f\u5ea6\u3002\n*            ly\uff1a\u6574\u5f62\u53d8\u91cf\u3002\u8f93\u51fa\u5e8f\u5217\u7684\u957f\u5ea6\u3002\n*            b \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a\uff08m+1\uff09\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u5206\u5b50\u591a\u9879\u5f0f\u7684\u7cfb\u6570 b(i)\u3002\n*            a \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a\uff08n+1\uff09\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u5206\u6bcd\u591a\u9879\u5f0f\u7684\u7cfb\u6570 a(i)\u3002\n*            m \uff1a\u6574\u5f62\u53d8\u91cf\u3002\u6ee4\u6ce2\u5668\u5206\u5b50\u591a\u9879\u5f0f\u7684\u9636\u6570\u3002\n*            n \uff1a\u6574\u5f62\u53d8\u91cf\u3002\u6ee4\u6ce2\u5668\u5206\u6bcd\u591a\u9879\u5f0f\u7684\u9636\u6570\u3002\n* \u8f93\u51fa\u53c2\u6570\uff1a void\n* \u8fd4 \u56de \u503c\uff1a void\n* \u521b\u5efa\u65e5\u671f\uff1a 2023\u5e7409\u670829\u65e5\n* \u6ce8    \u610f\uff1a\n*********************************************************************************************************\/\nvoid Resp(double* x, double* y, int lx, int ly, double* b, double* a, int m, int n)\n{\n  int k, i, i1;\n  double sum;\n  for (k = 0; k &lt; ly; k++)\n  {\n    sum = 0.0;\n    for (i = 0; i &lt;= m; i++)\n    {\n      if ((k - i) &gt;= 0)\n      {\n        i1 = ((k - i) &lt; lx) ? (k - i) : (lx - 1);\n        sum = sum + b[i] * x[i1];\n      }\n    }\n    for (i = 1; i &lt;= n; i++)\n    {\n      if ((k - i) &gt;= 0)\n      {\n        sum = sum - a[i] * y[k - i];\n      }\n    }\n    y[k] = sum;\n  }\n}<\/code><\/pre>\n\n\n\n<p>\u6570\u5b57\u6ee4\u6ce2\u5668\u7531\u4e24\u4e2a\u5b50\u7cfb\u7edf \\(H_{1}(z)\\) \u548c \\(H_{2}(z)\\) \u7ea7\u8054\u800c\u6210\uff0c\u5176\u4e2d \\(H_{1}(z)\\) \u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H_{1}(z) = \\frac{0.05 &#8211; 0.1z^{-1}}{1 &#8211; 0.95z^{-1} + 0.9z^{-2}}\\)<\/p>\n\n\n\n<p>\\(H_{1}(z)\\) \u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H_{2}(z) = \\frac{0.2}{1 &#8211; 0.8z^{-1}}\\)<\/p>\n\n\n\n<p>\u9009\u53d6\u53c2\u6570 lx = 2\uff0cly = 100\uff0c\u8bd5\u6c42\u9ad8\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u9636\u8dc3\u54cd\u5e94\u3002<\/p>\n\n\n\n<p>\u6d4b\u8bd5\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">int main(void)\n{\n  int i, m1, m2, n1, n2, lx, ly;\n  static double y[100];\n  static double z[100];\n  static double x[2] = { 1.0, 1.0 };\n  static double b[2] = { 0.05, -0.1 };\n  static double a[3] = { 1.0, -0.95, 0.9 };\n  static double d[1] = { 0.2 };\n  static double c[2] = { 1.0, -0.8 };\n  FILE* fp;\n  lx = 2;\n  ly = 100;\n  m1 = 1;\n  n1 = 2;\n  m2 = 0;\n  n2 = 1;\n  fp = fopen(\"resp.csv\", \"w\");\n  Resp(x, y, lx, ly, b, a, m1, n1);\n  Resp(y, z, ly, ly, d, c, m2, n2);\n  for (i = 0; i &lt; ly; i++)\n  {\n    fprintf(fp, \"%4d,%lf\\n\", i, z[i]);\n  }\n  fclose(fp);\n  for (i = 0; i &lt; 32; i++)\n  {\n    printf(\"  %10.7lf\", z[i]);\n    if ((i % 4) == 3)\n    {\n      printf(\"\\n\");\n    }\n  }\n  return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u7ec8\u7aef\u8f93\u51fa\u7684\u5355\u4f4d\u9636\u8dc3\u54cd\u5e94\u5982\u4e0b\u6240\u793a\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">   0.0100000   0.0075000  -0.0134750  -0.0388313\n  -0.0501862  -0.0430680  -0.0300183  -0.0271734\n  -0.0387318  -0.0542862  -0.0602707  -0.0532457\n  -0.0422166  -0.0388861  -0.0463080  -0.0568841\n  -0.0606738  -0.0550934  -0.0466514  -0.0438701\n  -0.0489986  -0.0565122  -0.0591451  -0.0549727\n  -0.0487101  -0.0465725  -0.0502234  -0.0556519\n  -0.0575522  -0.0544950  -0.0498990  -0.0482991<\/code><\/pre>\n\n\n\n<p>\u8f93\u51fa\u7684\u5355\u4f4d\u9636\u8dc3\u54cd\u5e94\u56fe\u5982\u4e0b\u6240\u793a\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"535\" src=\"http:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u9636\u8dc3\u54cd\u5e941-20231008-1024x535.png\" alt=\"\" class=\"wp-image-2118\" srcset=\"https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u9636\u8dc3\u54cd\u5e941-20231008-1024x535.png 1024w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u9636\u8dc3\u54cd\u5e941-20231008-300x157.png 300w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u9636\u8dc3\u54cd\u5e941-20231008-768x401.png 768w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u9636\u8dc3\u54cd\u5e941-20231008-548x286.png 548w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u9636\u8dc3\u54cd\u5e941-20231008.png 1321w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%9B%B4%E6%8E%A5%E6%80%A7_IIR_%E6%95%B0%E5%AD%97%E6%BB%A4%E6%B3%A2%EF%BC%88%E4%B8%80%EF%BC%89\"><\/span>\u76f4\u63a5\u6027 IIR \u6570\u5b57\u6ee4\u6ce2\uff08\u4e00\uff09<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u7528\u76f4\u63a5\u578b IIR \u6570\u5b57\u6ee4\u6ce2\u5668\u8fdb\u884c\u6570\u5b57\u6ee4\u6ce2\u3002<\/p>\n\n\n\n<p>\u8bbe IIR \u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u8f93\u5165\u4e3a x(k)\uff0c\u8f93\u51fa\u4e3a y(k)\uff0c\u5219\u8be5\u6ee4\u6ce2\u5668\u53ef\u7528\u5dee\u5206\u65b9\u7a0b\u8868\u793a\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(y(k) + \\sum_{i = 1}^{N}a(i)y(k-i) = \\sum_{i = 0}^{M}b(i)x(k-i)\\)<\/p>\n\n\n\n<p>\u5176\u4f20\u9012\u51fd\u6570\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H(z) = \\frac{b(0) + b(1)z^{-1} + \u2026+ b(M)z^{-M}}{1 + a(1)z^{-1} + \u2026+ a(N)z^{-N}}\\)<\/p>\n\n\n\n<p>\u5176\u4e2d a(i)(i=1,2,&#8230;,N) \u548c b(i)(i=0,1,&#8230;M) \u5206\u522b\u662f\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5206\u6bcd\u591a\u9879\u5f0f\u548c\u5206\u5b50\u591a\u9879\u5f0f\u7684\u7cfb\u6570\u3002<\/p>\n\n\n\n<p>\u5f53\u7ed9\u5b9a\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u7cfb\u6570 a(i) \u4e0e b(i) \u540e\uff0c\u5373\u53ef\u7528\u4e0a\u5f0f\u5bf9\u8f93\u5165\u5e8f\u5217 x(k) \u8fdb\u884c\u6570\u5b57\u6ee4\u6ce2\uff0c\u4ece\u800c\u5f97\u5230\u6ee4\u6ce2\u5668\u7684\u8f93\u51fa y(k)\u3002<\/p>\n\n\n\n<p>\u5b9e\u73b0\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">\/*********************************************************************************************************\n* \u51fd\u6570\u540d\u79f0\uff1a Filter\n* \u51fd\u6570\u529f\u80fd\uff1a \u76f4\u63a5\u6027 IIR \u6570\u5b57\u6ee4\u6ce2\uff08\u4e00\uff09\n* \u8f93\u5165\u53c2\u6570\uff1a b  \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a\uff08m+1\uff09\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u5206\u5b50\u591a\u9879\u5f0f\u7684\u7cfb\u6570 b(i)\u3002\n*            a  \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a\uff08n+1\uff09\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u5206\u6bcd\u591a\u9879\u5f0f\u7684\u7cfb\u6570 a(i)\u3002\n*            m  \uff1a\u6574\u5f62\u53d8\u91cf\u3002\u6ee4\u6ce2\u5668\u5206\u5b50\u591a\u9879\u5f0f\u7684\u9636\u6570\u3002\n*            n  \uff1a\u6574\u5f62\u53d8\u91cf\u3002\u6ee4\u6ce2\u5668\u5206\u6bcd\u591a\u9879\u5f0f\u7684\u9636\u6570\u3002\n*            x  \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a len\u3002\u5f00\u59cb\u65f6\u5b58\u653e\u6ee4\u6ce2\u5668\u7684\u8f93\u5165\u5e8f\u5217\uff0c\u6700\u540e\u5b58\u653e\u6ee4\u6ce2\u5668\u7684\u8f93\u51fa\u5e8f\u5217\uff1b\n*                 \u5206\u5757\u5904\u7406\u65f6\uff0c\u5b83\u7528\u4e8e\u8868\u793a\u5f53\u524d\u5757\u5185\u7684\u6ee4\u6ce2\u5668\u7684\u8f93\u5165\u5e8f\u5217\u4e0e\u8f93\u51fa\u5e8f\u5217\u3002\n*            len\uff1a\u6574\u578b\u53d8\u91cf\u3002\u8f93\u5165\u5e8f\u5217\u4e0e\u8f93\u51fa\u5e8f\u5217\u7684\u957f\u5ea6\uff1b\u5728\u5206\u5757\u5904\u7406\u65f6\uff0c\u5b83\u7528\u4e8e\u8868\u793a\u5757\u7684\u957f\u5ea6\n*            px \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a\uff08m+1\uff09\u3002\u5728\u5206\u5757\u5904\u7406\u65f6\uff0c\u5b83\u7528\u4e8e\u4fdd\u5b58\u524d\u4e00\u5757\u6ee4\u6ce2\u65f6\u7684\uff08m+1\uff09\u4e2a\u8f93\u5165\u5e8f\u5217\u503c\u3002\n*            py \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a\uff08n+1\uff09\u3002\u5728\u5206\u5757\u5904\u7406\u65f6\uff0c\u5b83\u7528\u4e8e\u4fdd\u5b58\u524d\u4e00\u5757\u6ee4\u6ce2\u65f6\u7684 n \u4e2a\u8f93\u51fa\u5e8f\u5217\u503c\u3002\n* \u8f93\u51fa\u53c2\u6570\uff1a void\n* \u8fd4 \u56de \u503c\uff1a void\n* \u521b\u5efa\u65e5\u671f\uff1a 2023\u5e7410\u670801\u65e5\n* \u6ce8    \u610f\uff1a \u5f53\u8f93\u5165\u5e8f\u5217 x(k) \u5f88\u957f\u65f6\uff0c\u7531\u4e8e\u8ba1\u7b97\u673a\u5185\u5b58\u7684\u9650\u5236\uff0c\u5e38\u5c06\u5176\u5206\u6210\u5f7c\u6b64\u8854\u63a5\u7684\u82e5\u5e72\u5757\u8fdb\u884c\u5904\u7406\u3002\u6570\u7ec4 px \u4e0e\n*            py \u5c31\u662f\u4e13\u4e3a\u5206\u5757\u5904\u7406\u800c\u8bbe\u7f6e\u7684\u3002\n*            px \u7528\u4e8e\u4fdd\u5b58\u524d\u4e00\u5757\u6ee4\u6ce2\u65f6\u7684\uff08m+1\uff09\u4e2a\u8f93\u5165\u5e8f\u5217\u503c\uff0c\u5373 px[] = {x(k), x(k-1), ..., x(k-m)}\uff1b\n*            py \u7528\u4e8e\u4fdd\u5b58\u524d\u4e00\u5757\u6ee4\u6ce2\u65f6\u7684 n \u4e2a\u8f93\u51fa\u5e8f\u5217\u503c\u3002\u5373 py[] = {y(k-1), y(k-2), ..., y(k-n)}\uff1b\n*            \u901a\u5e38\uff0c\u6211\u4eec\u5047\u5b9a\u6ee4\u6ce2\u5668\u7684\u521d\u59cb\u6761\u4ef6\u4e3a\u96f6\uff0c\u56e0\u6b64\u6570\u7ec4 px[] \u4e0e py[] \u5728\u6ee4\u6ce2\u524d\u90fd\u8981\u521d\u59cb\u5316\u4e3a\u96f6\u3002\n*********************************************************************************************************\/\nvoid Filter(double* b, double* a, int m, int n, double* x, int len, double* px, double* py)\n{\n  int k, i;\n  for (k = 0; k &lt; len; k++)\n  {\n    px[0] = x[k];\n    x[k] = 0.0;\n    for (i = 0; i &lt;= m; i++)\n    {\n      x[k] = x[k] + b[i] * px[i];\n    }\n    for (i = 1; i &lt;= n; i++)\n    {\n      x[k] = x[k] - a[i] * py[i];\n    }\n    if (fabs(x[k]) &gt; 1.0e10)\n    {\n      return; \/\/This is an unstable filter!\n    }\n    for (i = m; i &gt;= 1; i--)\n    {\n      px[i] = px[i - 1];\n    }\n    for (i = n; i &gt;= 2; i--)\n    {\n      py[i] = py[i - 1];\n    }\n    py[1] = x[k];\n  }\n}<\/code><\/pre>\n\n\n\n<p>4 \u9636\u5207\u6bd4\u96ea\u592b\u4f4e\u901a\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u4f20\u9012\u51fd\u6570\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H(z) = \\frac{0.001836 + 0.007344z^{-1} + 0.011016z^{-2} + 0.007344z^{-3} + 0.001836z^{-4}}{1.0 &#8211; 3.0544z^{-1} + 3.8291z^{-2} &#8211; 2.2925z^{-3} + 0.55075z^{-4}}\\)<\/p>\n\n\n\n<p>\u9009\u53d6\u53c2\u6570 m = 4\uff0cn = 4\uff0c\u5757\u957f len = 25\uff0c\u6c42\u8be5\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u51fb\u54cd\u5e94\uff0c\u5e76\u753b\u51fa\u76f8\u5e94\u6ce2\u5f62\u3002<\/p>\n\n\n\n<p>\u6d4b\u8bd5\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">int main(void)\n{\n  int i, k, m, n, len, nblk;\n  static double b[5] = { 0.001836, 0.007344, 0.011016, 0.007344, 0.001836 };\n  static double a[5] = { 1.0, -3.0544, 3.8291, -2.2925, 0.55075 };\n  static double px[5] = { 0 };\n  static double py[5] = { 0 };\n  static double x[25] = {0};\n  static double data[100] = {0};\n  FILE* fp;\n  m = 4;\n  n = 4;\n  len = 25;\n  nblk = 4;\n  x[0] = 1.0;\n  for (k = 1; k &lt; len; k++)\n  {\n    x[k] = 0.0;\n  }\n  for (i = 0; i &lt; nblk; i++)\n  {\n    Filter(b, a, m, n, x, len, px, py);\n    for (k = 0; k &lt; len; k++)\n    {\n      data[i * len + k] = x[k];\n      x[k] = 0.0;\n    }\n  }\n  printf(\"Unit Impulse Respomse\\n\");\n  for (i = 0; i &lt; 16; i++)\n  {\n    printf(\"  %10.7lf\", data[i]);\n    if (i % 4 == 3)\n    {\n      printf(\"\\n\");\n    }\n  }\n  fp = fopen(\"filter.csv\", \"w\");\n  for (i = 0; i &lt; 100; i++)\n  {\n    fprintf(fp, \"%2d,%lf\\n\", i, data[i]);\n  }\n  fclose(fp);\n  return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u7ec8\u7aef\u8f93\u51fa\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e94\u5982\u4e0b\u6240\u793a\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">Unit Impulse Respomse\n   0.0018360   0.0129519   0.0435460   0.0949659\n   0.1538388   0.1989473   0.2123269   0.1871151\n   0.1298634   0.0573615  -0.0100326  -0.0556283\n  -0.0715163  -0.0600246  -0.0314986   0.0003172<\/code><\/pre>\n\n\n\n<p>\u8f93\u51fa\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e94\u5982\u4e0b\u56fe\u6240\u793a\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"536\" src=\"http:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008-1024x536.png\" alt=\"\" class=\"wp-image-2119\" srcset=\"https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008-1024x536.png 1024w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008-300x157.png 300w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008-768x402.png 768w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008-548x287.png 548w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008.png 1321w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%9B%B4%E6%8E%A5%E6%80%A7_IIR_%E6%95%B0%E5%AD%97%E6%BB%A4%E6%B3%A2%EF%BC%88%E4%BA%8C%EF%BC%89\"><\/span>\u76f4\u63a5\u6027 IIR \u6570\u5b57\u6ee4\u6ce2\uff08\u4e8c\uff09<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u7528\u76f4\u63a5\u578b IIR \u6570\u5b57\u6ee4\u6ce2\u5668\u8fdb\u884c\u6570\u5b57\u6ee4\u6ce2\u3002<\/p>\n\n\n\n<p>\u8bbe IIR \u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u8f93\u5165\u4e3a x(k)\uff0c\u8f93\u51fa\u4e3a y(k)\uff0c\u5219\u8be5\u6ee4\u6ce2\u5668\u53ef\u7528\u5dee\u5206\u65b9\u7a0b\u8868\u793a\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(y(k) + \\sum_{i = 1}^{N}a(i)y(k-i) = \\sum_{i = 0}^{M}b(i)x(k-i)\\)<\/p>\n\n\n\n<p>\u5176\u4f20\u9012\u51fd\u6570\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H(z) = \\frac{b(0) + b(1)z^{-1} + \u2026+ b(M)z^{-M}}{1 + a(1)z^{-1} + \u2026+ a(N)z^{-N}}\\)<\/p>\n\n\n\n<p>\u5176\u4e2d a(i)(i=1,2,&#8230;,N) \u548c b(i)(i=0,1,&#8230;M) \u5206\u522b\u662f\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5206\u6bcd\u591a\u9879\u5f0f\u548c\u5206\u5b50\u591a\u9879\u5f0f\u7684\u7cfb\u6570\u3002<\/p>\n\n\n\n<p>\u5f53\u7ed9\u5b9a\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u7cfb\u6570 a(i) \u4e0e b(i) \u540e\uff0c\u5373\u53ef\u7528\u4e0a\u5f0f\u5bf9\u8f93\u5165\u5e8f\u5217 x(k) \u8fdb\u884c\u6570\u5b57\u6ee4\u6ce2\uff0c\u4ece\u800c\u5f97\u5230\u6ee4\u6ce2\u5668\u7684\u8f93\u51fa y(k)\u3002<\/p>\n\n\n\n<p>\u5b9e\u73b0\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">\/*********************************************************************************************************\n* \u51fd\u6570\u540d\u79f0\uff1a Filtery\n* \u51fd\u6570\u529f\u80fd\uff1a \u76f4\u63a5\u6027 IIR \u6570\u5b57\u6ee4\u6ce2\uff08\u4e8c\uff09\n* \u8f93\u5165\u53c2\u6570\uff1a b  \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a\uff08m+1\uff09\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u5206\u5b50\u591a\u9879\u5f0f\u7684\u7cfb\u6570 b(i)\u3002\n*            a  \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a\uff08n+1\uff09\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u5206\u6bcd\u591a\u9879\u5f0f\u7684\u7cfb\u6570 a(i)\u3002\n*            m  \uff1a\u6574\u5f62\u53d8\u91cf\u3002\u6ee4\u6ce2\u5668\u5206\u5b50\u591a\u9879\u5f0f\u7684\u9636\u6570\u3002\n*            n  \uff1a\u6574\u5f62\u53d8\u91cf\u3002\u6ee4\u6ce2\u5668\u5206\u6bcd\u591a\u9879\u5f0f\u7684\u9636\u6570\u3002\n*            x  \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a len\u3002\u5f00\u59cb\u65f6\u5b58\u653e\u6ee4\u6ce2\u5668\u7684\u8f93\u5165\u5e8f\u5217\uff1b\n*                 \u5206\u5757\u5904\u7406\u65f6\uff0c\u5b83\u7528\u4e8e\u8868\u793a\u5f53\u524d\u5757\u5185\u7684\u6ee4\u6ce2\u5668\u7684\u8f93\u5165\u5e8f\u5217\u3002\n*            y  \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a len\u3002\u5f00\u59cb\u65f6\u5b58\u653e\u6ee4\u6ce2\u5668\u7684\u8f93\u51fa\u5e8f\u5217\uff1b\n*                 \u5206\u5757\u5904\u7406\u65f6\uff0c\u5b83\u7528\u4e8e\u8868\u793a\u5f53\u524d\u5757\u5185\u7684\u6ee4\u6ce2\u5668\u7684\u8f93\u51fa\u5e8f\u5217\u3002\u5728\u6ee4\u6ce2\u524d\u5fc5\u987b\u5c06\u5176\u521d\u59cb\u5316\u4e3a\u96f6\u3002\n*            len\uff1a\u6574\u578b\u53d8\u91cf\u3002\u8f93\u5165\u5e8f\u5217\u4e0e\u8f93\u51fa\u5e8f\u5217\u7684\u957f\u5ea6\uff1b\u5728\u5206\u5757\u5904\u7406\u65f6\uff0c\u5b83\u7528\u4e8e\u8868\u793a\u5757\u7684\u957f\u5ea6\n*            px \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a\uff08m+1\uff09\u3002\u5728\u5206\u5757\u5904\u7406\u65f6\uff0c\u5b83\u7528\u4e8e\u4fdd\u5b58\u524d\u4e00\u5757\u6ee4\u6ce2\u65f6\u7684\uff08m+1\uff09\u4e2a\u8f93\u5165\u5e8f\u5217\u503c\u3002\n*            py \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a\uff08n+1\uff09\u3002\u5728\u5206\u5757\u5904\u7406\u65f6\uff0c\u5b83\u7528\u4e8e\u4fdd\u5b58\u524d\u4e00\u5757\u6ee4\u6ce2\u65f6\u7684 n \u4e2a\u8f93\u51fa\u5e8f\u5217\u503c\u3002\n* \u8f93\u51fa\u53c2\u6570\uff1a void\n* \u8fd4 \u56de \u503c\uff1a void\n* \u521b\u5efa\u65e5\u671f\uff1a 2023\u5e7410\u670801\u65e5\n* \u6ce8    \u610f\uff1a \u5f53\u8f93\u5165\u5e8f\u5217 x(k) \u5f88\u957f\u65f6\uff0c\u7531\u4e8e\u8ba1\u7b97\u673a\u5185\u5b58\u7684\u9650\u5236\uff0c\u5e38\u5c06\u5176\u5206\u6210\u5f7c\u6b64\u8854\u63a5\u7684\u82e5\u5e72\u5757\u8fdb\u884c\u5904\u7406\u3002\u6570\u7ec4 px \u4e0e\n*            py \u5c31\u662f\u4e13\u4e3a\u5206\u5757\u5904\u7406\u800c\u8bbe\u7f6e\u7684\u3002\n*            px \u7528\u4e8e\u4fdd\u5b58\u524d\u4e00\u5757\u6ee4\u6ce2\u65f6\u7684\uff08m+1\uff09\u4e2a\u8f93\u5165\u5e8f\u5217\u503c\uff0c\u5373 px[] = {x(k), x(k-1), ..., x(k-m)}\uff1b\n*            py \u7528\u4e8e\u4fdd\u5b58\u524d\u4e00\u5757\u6ee4\u6ce2\u65f6\u7684 n \u4e2a\u8f93\u51fa\u5e8f\u5217\u503c\u3002\u5373 py[] = {y(k-1), y(k-2), ..., y(k-n)}\uff1b\n*            \u901a\u5e38\uff0c\u6211\u4eec\u5047\u5b9a\u6ee4\u6ce2\u5668\u7684\u521d\u59cb\u6761\u4ef6\u4e3a\u96f6\uff0c\u56e0\u6b64\u6570\u7ec4 px[] \u4e0e py[] \u5728\u6ee4\u6ce2\u524d\u90fd\u8981\u521d\u59cb\u5316\u4e3a\u96f6\u3002\n*********************************************************************************************************\/\nvoid Filtery(double* b, double* a, int m, int n, double* x, double* y, int len, double* px, double* py)\n{\n  int k, i;\n  double sum;\n  for (k = 0; k &lt; len; k++)\n  {\n    px[0] = x[k];\n    sum = 0.0;\n    for (i = 0; i &lt;= m; i++)\n    {\n      sum = sum + b[i] * px[i];\n    }\n    for (i = 1; i &lt;= n; i++)\n    {\n      sum = sum - a[i] * py[i];\n    }\n    if (fabs(x[k]) &gt; 1.0e10)\n    {\n      return; \/\/This is an unstable filter!\n    }\n    for (i = m; i &gt;= 1; i--)\n    {\n      px[i] = px[i - 1];\n    }\n    for (i = n; i &gt;= 2; i--)\n    {\n      py[i] = py[i - 1];\n    }\n    py[1] = sum;\n    y[k] = y[k] + sum;\n  }\n}<\/code><\/pre>\n\n\n\n<p>4 \u9636\u5207\u6bd4\u96ea\u592b\u4f4e\u901a\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u4f20\u9012\u51fd\u6570\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H(z) = \\frac{0.001836 + 0.007344z^{-1} + 0.011016z^{-2} + 0.007344z^{-3} + 0.001836z^{-4}}{1.0 &#8211; 3.0544z^{-1} + 3.8291z^{-2} &#8211; 2.2925z^{-3} + 0.55075z^{-4}}\\)<\/p>\n\n\n\n<p>\u9009\u53d6\u53c2\u6570 m = 4\uff0cn = 4\uff0c\u5757\u957f len = 100\uff0c\u6c42\u8be5\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u51fb\u54cd\u5e94\uff0c\u5e76\u753b\u51fa\u76f8\u5e94\u6ce2\u5f62\u3002<\/p>\n\n\n\n<p>\u6d4b\u8bd5\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">int main(void)\n{\n  int i, m, n, len;\n  static double b[5] = { 0.001836, 0.007344, 0.011016, 0.007344, 0.001836 };\n  static double a[5] = { 1.0, -3.0544, 3.8291, -2.2925, 0.55075 };\n  static double px[5] = { 0 };\n  static double py[5] = { 0 };\n  static double x[100] = { 0 };\n  static double y[100] = { 0 };\n  FILE* fp;\n  m = 4;\n  n = 4;\n  len = 100;\n  for (i = 0; i &lt; len; i++)\n  {\n    x[i] = 0.0;\n    y[i] = 0.0;\n  }\n  x[0] = 1.0;\n  Filtery(b, a, m, n, x, y, len, px, py);\n  printf(\"Unit Impulse Respomse\\n\");\n  for (i = 0; i &lt; 16; i++)\n  {\n    printf(\"  %10.7lf\", y[i]);\n    if (i % 4 == 3)\n    {\n      printf(\"\\n\");\n    }\n  }\n  fp = fopen(\"filtery.csv\", \"w\");\n  for (i = 0; i &lt; 100; i++)\n  {\n    fprintf(fp, \"%2d,%lf\\n\", i, y[i]);\n  }\n  fclose(fp);\n  return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u7ec8\u7aef\u8f93\u51fa\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e94\u5982\u4e0b\u6240\u793a\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">Unit Impulse Respomse\n   0.0018360   0.0129519   0.0435460   0.0949659\n   0.1538388   0.1989473   0.2123269   0.1871151\n   0.1298634   0.0573615  -0.0100326  -0.0556283\n  -0.0715163  -0.0600246  -0.0314986   0.0003172<\/code><\/pre>\n\n\n\n<p>\u8f93\u51fa\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e94\u5982\u4e0b\u56fe\u6240\u793a\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"536\" src=\"http:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008-1024x536.png\" alt=\"\" class=\"wp-image-2119\" srcset=\"https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008-1024x536.png 1024w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008-300x157.png 300w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008-768x402.png 768w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008-548x287.png 548w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008.png 1321w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%BA%A7%E8%81%94%E5%9E%8B_IIR_%E6%95%B0%E5%AD%97%E6%BB%A4%E6%B3%A2%E5%99%A8\"><\/span>\u7ea7\u8054\u578b IIR \u6570\u5b57\u6ee4\u6ce2\u5668<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u7528\u7ea7\u8054\u578b IIR \u6570\u5b57\u6ee4\u6ce2\u5668\u8fdb\u884c\u6570\u5b57\u6ee4\u6ce2\u3002<\/p>\n\n\n\n<p>\u7ea7\u8054\u578b IIR \u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u4f20\u9012\u51fd\u6570\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H(z) = \\prod_{j = 1}^{L}H_{j}(z)=\\prod_{j = 1}^{L}\\frac{b(j,0) + b(j,1)z^{-1} + \u2026+ b(j,N)z^{-N}}{1 + a(j,1)z^{-1} + \u2026+ a(j,N)z^{-N}}\\)<\/p>\n\n\n\n<p>\u5176\u4e2d N \u9636\u8282 \\(H_{j}(z)\\) \u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H_{j}(z) = \\frac{b(j,0) + b(j,1)z^{-1} +\u2026+ b(j,N)z^{-N}}{1 + a(j,1)z^{-1} +\u2026+ a(j,N)z^{-N}}\\)<\/p>\n\n\n\n<p>\u8fd9\u91cc\u7684 a(j,i) \u548c b(j,i)(j=1,2,&#8230;,L;i=0,1,&#8230;,N) \u5206\u522b\u662f\u6570\u5b57\u6ee4\u6ce2\u5668\u5206\u6bcd\u591a\u9879\u5f0f\u548c\u5206\u5b50\u591a\u9879\u5f0f\u7684\u7cfb\u6570\u3002<\/p>\n\n\n\n<p>\u5f53\u7ed9\u5b9a\u6570\u5b57\u6ee4\u6ce2\u5668\u7cfb\u6570 a(j,i) \u548c b(j,i) \u540e\uff0c\u5373\u53ef\u7528\u4e0a\u5f0f\u5bf9\u8f93\u5165\u5e8f\u5217 x(k) \u8fdb\u884c\u6570\u5b57\u6ee4\u6ce2\uff0c\u4ece\u800c\u5f97\u5230\u6ee4\u6ce2\u5668\u7684\u8f93\u51fa y(k)\u3002<\/p>\n\n\n\n<p>\u5b9e\u73b0\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">\/*********************************************************************************************************\n* \u51fd\u6570\u540d\u79f0\uff1a Filterc\n* \u51fd\u6570\u529f\u80fd\uff1a \u7ea7\u8054\u578b IIR \u6570\u5b57\u6ee4\u6ce2\u5668\n* \u8f93\u5165\u53c2\u6570\uff1a b  \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e8c\u7ef4\u6570\u7ec4\uff0c\u4f53\u79ef\u4e3a ns*\uff08n+1\uff09\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u5206\u5b50\u591a\u9879\u5f0f\u7684\u7cfb\u6570\uff0c\n*                 b[j][i] \u8868\u793a\u7b2c j \u4e2a n \u9636\u8282\u7684\u5206\u5b50\u591a\u9879\u5f0f\u7684\u7b2c i \u4e2a\u7cfb\u6570\u3002\n*            a  \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e8c\u7ef4\u6570\u7ec4\uff0c\u4f53\u79ef\u4e3a ns*\uff08n+1\uff09\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u5206\u6bcd\u591a\u9879\u5f0f\u7684\u7cfb\u6570\uff0c\n*                 a[j][i] \u8868\u793a\u7b2c j \u4e2a n \u9636\u8282\u7684\u5206\u6bcd\u591a\u9879\u5f0f\u7684\u7b2c i \u4e2a\u7cfb\u6570\u3002\n*            n  \uff1a\u6574\u578b\u53d8\u91cf\u3002\u7ea7\u8054\u578b\u6ee4\u6ce2\u5668\u6bcf\u8282\u7684\u9636\u6570\u3002\n*            ns \uff1a\u6574\u5f62\u53d8\u91cf\u3002\u7ea7\u8054\u578b\u6ee4\u6ce2\u5668\u7684 n \u9636\u8282\u6570 L\u3002\n*            x  \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a len\u3002\u5f00\u59cb\u65f6\u5b58\u653e\u6ee4\u6ce2\u5668\u7684\u8f93\u5165\u5e8f\u5217\uff0c\u6700\u540e\u5b58\u653e\u6ee4\u6ce2\u5668\u7684\u8f93\u51fa\u5e8f\u5217\uff1b\n*                 \u5206\u5757\u5904\u7406\u65f6\uff0c\u5b83\u7528\u4e8e\u8868\u793a\u5f53\u524d\u5757\u5185\u7684\u6ee4\u6ce2\u5668\u7684\u8f93\u5165\u5e8f\u5217\u4e0e\u8f93\u51fa\u5e8f\u5217\u3002\n*            len\uff1a\u6574\u578b\u53d8\u91cf\u3002\u8f93\u5165\u5e8f\u5217\u4e0e\u8f93\u51fa\u5e8f\u5217\u7684\u957f\u5ea6\uff1b\u5728\u5206\u5757\u5904\u7406\u65f6\uff0c\u5b83\u7528\u4e8e\u8868\u793a\u5757\u7684\u957f\u5ea6\n*            px \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e8c\u7ef4\u6570\u7ec4\uff0c\u4f53\u79ef\u4e3a ns*\uff08n+1\uff09\u3002\u5728\u5206\u5757\u5904\u7406\u65f6\uff0c\u5b83\u7528\u4e8e\u4fdd\u5b58\u524d\u4e00\u5757\u6ee4\u6ce2\u65f6\u7684\uff08n+1\uff09\u4e2a\u8f93\u5165\u5e8f\u5217\u503c\u3002\n*            py \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e8c\u7ef4\u6570\u7ec4\uff0c\u4f53\u79ef\u4e3a ns*\uff08n+1\uff09\u3002\u5728\u5206\u5757\u5904\u7406\u65f6\uff0c\u5b83\u7528\u4e8e\u4fdd\u5b58\u524d\u4e00\u5757\u6ee4\u6ce2\u65f6\u7684 n \u4e2a\u8f93\u51fa\u5e8f\u5217\u503c\u3002\n* \u8f93\u51fa\u53c2\u6570\uff1a void\n* \u8fd4 \u56de \u503c\uff1a void\n* \u521b\u5efa\u65e5\u671f\uff1a 2023\u5e7410\u670801\u65e5\n* \u6ce8    \u610f\uff1a \u5f53\u8f93\u5165\u5e8f\u5217 x(k) \u5f88\u957f\u65f6\uff0c\u7531\u4e8e\u8ba1\u7b97\u673a\u5185\u5b58\u7684\u9650\u5236\uff0c\u5e38\u5c06\u5176\u5206\u6210\u5f7c\u6b64\u8854\u63a5\u7684\u82e5\u5e72\u5757\u8fdb\u884c\u5904\u7406\u3002\u6570\u7ec4 px \u4e0e\n*            py \u5c31\u662f\u4e13\u4e3a\u5206\u5757\u5904\u7406\u800c\u8bbe\u7f6e\u7684\u3002\n*            px \u7528\u4e8e\u4fdd\u5b58\u524d\u4e00\u5757\u6ee4\u6ce2\u65f6\u7684\uff08n+1\uff09\u4e2a\u8f93\u5165\u5e8f\u5217\u503c\uff0c\u5373 px[j][] = {x(k), x(k-1), ..., x(k-m)}\uff1b\n*            py \u7528\u4e8e\u4fdd\u5b58\u524d\u4e00\u5757\u6ee4\u6ce2\u65f6\u7684 n \u4e2a\u8f93\u51fa\u5e8f\u5217\u503c\u3002\u5373 py[j][] = {y(k-1), y(k-2), ..., y(k-n)}\uff1b\n*            \u901a\u5e38\uff0c\u6211\u4eec\u5047\u5b9a\u6ee4\u6ce2\u5668\u7684\u521d\u59cb\u6761\u4ef6\u4e3a\u96f6\uff0c\u56e0\u6b64\u6570\u7ec4 px[][] \u4e0e py[][] \u5728\u6ee4\u6ce2\u524d\u90fd\u8981\u521d\u59cb\u5316\u4e3a\u96f6\u3002\n*********************************************************************************************************\/\nvoid Filterc(double* b, double* a, int n, int ns, double* x, int len, double* px, double* py)\n{\n  int i, j, k, n1;\n  n1 = n + 1;\n  for (j = 0; j &lt; ns; j++)\n  {\n    for (k = 0; k &lt; len; k++)\n    {\n      px[j * n1 + 0] = x[k];\n      x[k] = b[j * n1 + 0] * px[j * n1 + 0];\n      for (i = 1; i &lt;= n; i++)\n      {\n        x[k] += b[j * n1 + i] * px[j * n1 + i] - a[j * n1 + i] * py[j * n1 + i];\n      }\n      if (fabs(x[k]) &gt; 1.0e10)\n      {\n        return; \/\/This is an unstable filter!\n      }\n      for (i = n; i &gt;= 2; i--)\n      {\n        px[j * n1 + i] = px[j * n1 + i - 1];\n        py[j * n1 + i] = py[j * n1 + i - 1];\n      }\n      px[j * n1 + 1] = px[j * n1 + 0];\n      py[j * n1 + 1] = x[k];\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p>4 \u9636\u5207\u6bd4\u96ea\u592b\u4f4e\u901a\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u4f20\u9012\u51fd\u6570\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H(z) = \\frac{0.001836(1+z^{-1})^{4}}{(1 &#8211; 1.4996z^{-1} + 0.8482z^{-2})(1 &#8211; 1.5548z^{-1} + 0.6493z^{-2})}\\)<\/p>\n\n\n\n<p>\u5b83\u7531\u4e24\u4e2a 2 \u9636\u8282\u7ea7\u8054\u800c\u6210\u3002\u9009\u53d6\u53c2\u6570 n = 2\uff0cns = 2\uff0c\u5171\u5206 4 \u5757\u8fdb\u884c\u5904\u7406\uff0c\u6bcf\u5757\u957f\u5ea6 len = 25\u3002\u6c42\u8be5\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e94\uff0c\u5e76\u753b\u51fa\u76f8\u5e94\u56fe\u5f62\u3002<\/p>\n\n\n\n<p>\u6d4b\u8bd5\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">int main(void)\n{\n  int i, j, n, ns, len, nblk;\n  static double b[2][3] = { {0.001836, 0.003672, 0.001836}, {1.0, 2.0, 1.0} };\n  static double a[2][3] = { {1.0, -1.4996, 0.8482}, {1.0, -1.5548, 0.6493} };\n  static double px[2][3] = { 0.0 };\n  static double py[2][3] = { 0.0 };\n  static double x[25] = { 0.0 };\n  static double data[100] = { 0.0 };\n  FILE* fp;\n  n = 2;\n  ns = 2;\n  len = 25;\n  nblk = 4;\n  x[0] = 1.0;\n  for (i = 1; i &lt; len; i++)\n  {\n    x[i] = 0.0;\n  }\n  for (i = 0; i &lt; ns; i++)\n  {\n    for (j = 0; j &lt;= n; j++)\n    {\n      px[i][j] = 0.0;\n      py[i][j] = 0.0;\n    }\n  }\n  for (j = 0; j &lt; nblk; j++)\n  {\n    Filterc(b, a, n, ns, x, len, px, py);\n    for (i = 0; i &lt; len; i++)\n    {\n      data[j * len + i] = x[i];\n      x[i] = 0.0;\n    }\n  }\n  printf(\"Unit Impulse Respomse\\n\");\n  for (i = 0; i &lt; 16; i++)\n  {\n    printf(\"  %10.7lf\", data[i]);\n    if (i % 4 == 3)\n    {\n      printf(\"\\n\");\n    }\n  }\n  fp = fopen(\"filterc.csv\", \"w\");\n  for (i = 0; i &lt; 100; i++)\n  {\n    fprintf(fp, \"%2d,%lf\\n\", i, data[i]);\n  }\n  fclose(fp);\n  return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u7ec8\u7aef\u8f93\u51fa\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e94\u5982\u4e0b\u6240\u793a\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">Unit Impulse Respomse\n   0.0018360   0.0129519   0.0435460   0.0949662\n   0.1538403   0.1989518   0.2123368   0.1871326\n   0.1298898   0.0573960  -0.0099931  -0.0555889\n  -0.0714825  -0.0600010  -0.0314873   0.0003168<\/code><\/pre>\n\n\n\n<p>\u8f93\u51fa\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e94\u5982\u4e0b\u56fe\u6240\u793a\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"535\" src=\"http:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008-1024x535.png\" alt=\"\" class=\"wp-image-2123\" srcset=\"https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008-1024x535.png 1024w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008-300x157.png 300w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008-768x401.png 768w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008-548x286.png 548w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u7ea7\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008.png 1318w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%B9%B6%E8%81%94%E5%9E%8B_IIR_%E6%95%B0%E5%AD%97%E6%BB%A4%E6%B3%A2%E5%99%A8\"><\/span>\u5e76\u8054\u578b IIR \u6570\u5b57\u6ee4\u6ce2\u5668<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u7528\u5e76\u8054\u578b IIR \u6570\u5b57\u6ee4\u6ce2\u5668\u8fdb\u884c\u6570\u5b57\u6ee4\u6ce2\u3002<\/p>\n\n\n\n<p>\u5e76\u8054\u578b IIR \u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u4f20\u9012\u51fd\u6570\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H(z) = \\sum_{j = 1}^{L}H_{j}(z) = \\sum_{j = 1}^{L}\\frac{b(j,0) + b(j,1)z^{-1} +\u2026+ b(j,N)z^{-N}}{1 + a(j,1)z^{-1} +\u2026+ a(j,N)z^{-N}}\\)<\/p>\n\n\n\n<p>\u5176\u4e2d N \u9636\u8282 H_{j}(z) \u4e3a <\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H_{j}(z) = \\frac{b(j,0) + b(j,1)z^{-1} +\u2026+ b(j,N)z^{-N}}{1 + a(j,1)z^{-1} +\u2026+ a(j,N)z^{-N}}\\)<\/p>\n\n\n\n<p>\u8fd9\u91cc\u7684 a(j,i) \u548c b(j,i)(j=1,2,&#8230;,L;i=0,1,&#8230;,N) \u5206\u522b\u662f\u6570\u5b57\u6ee4\u6ce2\u5668\u5206\u6bcd\u591a\u9879\u5f0f\u548c\u5206\u5b50\u591a\u9879\u5f0f\u7684\u7cfb\u6570\u3002<\/p>\n\n\n\n<p>\u5f53\u7ed9\u5b9a\u6570\u5b57\u6ee4\u6ce2\u5668\u7cfb\u6570 a(j,i) \u548c b(j,i) \u540e\uff0c\u5373\u53ef\u7528\u4e0a\u5f0f\u5bf9\u8f93\u5165\u5e8f\u5217 x(k) \u8fdb\u884c\u6570\u5b57\u6ee4\u6ce2\uff0c\u4ece\u800c\u5f97\u5230\u6ee4\u6ce2\u5668\u7684\u8f93\u51fa y(k)\u3002<\/p>\n\n\n\n<p>\u5b9e\u73b0\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">\/*********************************************************************************************************\n* \u51fd\u6570\u540d\u79f0\uff1a Filterp\n* \u51fd\u6570\u529f\u80fd\uff1a \u5e76\u8054\u578b IIR \u6570\u5b57\u6ee4\u6ce2\u5668\n* \u8f93\u5165\u53c2\u6570\uff1a b  \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e8c\u7ef4\u6570\u7ec4\uff0c\u4f53\u79ef\u4e3a ns*\uff08n+1\uff09\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u5206\u5b50\u591a\u9879\u5f0f\u7684\u7cfb\u6570\uff0c\n*                 b[j][i] \u8868\u793a\u7b2c j \u4e2a n \u9636\u8282\u7684\u5206\u5b50\u591a\u9879\u5f0f\u7684\u7b2c i \u4e2a\u7cfb\u6570\u3002\n*            a  \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e8c\u7ef4\u6570\u7ec4\uff0c\u4f53\u79ef\u4e3a ns*\uff08n+1\uff09\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u5206\u6bcd\u591a\u9879\u5f0f\u7684\u7cfb\u6570\uff0c\n*                 a[j][i] \u8868\u793a\u7b2c j \u4e2a n \u9636\u8282\u7684\u5206\u6bcd\u591a\u9879\u5f0f\u7684\u7b2c i \u4e2a\u7cfb\u6570\u3002\n*            n  \uff1a\u6574\u578b\u53d8\u91cf\u3002\u7ea7\u8054\u578b\u6ee4\u6ce2\u5668\u6bcf\u8282\u7684\u9636\u6570\u3002\n*            ns \uff1a\u6574\u5f62\u53d8\u91cf\u3002\u7ea7\u8054\u578b\u6ee4\u6ce2\u5668\u7684 n \u9636\u8282\u6570 L\u3002\n*            x  \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a len\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u7684\u8f93\u5165\u5e8f\u5217\uff1b\n*                 \u5206\u5757\u5904\u7406\u65f6\uff0c\u5b83\u7528\u4e8e\u8868\u793a\u5f53\u524d\u5757\u5185\u7684\u6ee4\u6ce2\u5668\u7684\u8f93\u5165\u5e8f\u5217\u3002\n*            y  \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e00\u7ef4\u6570\u7ec4\uff0c\u957f\u5ea6\u4e3a len\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u7684\u8f93\u51fa\u5e8f\u5217\uff1b\n*                 \u5206\u5757\u5904\u7406\u65f6\uff0c\u5b83\u7528\u4e8e\u8868\u793a\u5f53\u524d\u5757\u5185\u7684\u6ee4\u6ce2\u5668\u7684\u8f93\u51fa\u5e8f\u5217\u3002\n*            len\uff1a\u6574\u578b\u53d8\u91cf\u3002\u8f93\u5165\u5e8f\u5217\u4e0e\u8f93\u51fa\u5e8f\u5217\u7684\u957f\u5ea6\uff1b\u5728\u5206\u5757\u5904\u7406\u65f6\uff0c\u5b83\u7528\u4e8e\u8868\u793a\u5757\u7684\u957f\u5ea6\n*            px \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e8c\u7ef4\u6570\u7ec4\uff0c\u4f53\u79ef\u4e3a ns*\uff08n+1\uff09\u3002\u5728\u5206\u5757\u5904\u7406\u65f6\uff0c\u5b83\u7528\u4e8e\u4fdd\u5b58\u524d\u4e00\u5757\u6ee4\u6ce2\u65f6\u7684\uff08n+1\uff09\u4e2a\u8f93\u5165\u5e8f\u5217\u503c\u3002\n*            py \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e8c\u7ef4\u6570\u7ec4\uff0c\u4f53\u79ef\u4e3a ns*\uff08n+1\uff09\u3002\u5728\u5206\u5757\u5904\u7406\u65f6\uff0c\u5b83\u7528\u4e8e\u4fdd\u5b58\u524d\u4e00\u5757\u6ee4\u6ce2\u65f6\u7684 n \u4e2a\u8f93\u51fa\u5e8f\u5217\u503c\u3002\n* \u8f93\u51fa\u53c2\u6570\uff1a void\n* \u8fd4 \u56de \u503c\uff1a void\n* \u521b\u5efa\u65e5\u671f\uff1a 2023\u5e7410\u670801\u65e5\n* \u6ce8    \u610f\uff1a \u5f53\u8f93\u5165\u5e8f\u5217 x(k) \u5f88\u957f\u65f6\uff0c\u7531\u4e8e\u8ba1\u7b97\u673a\u5185\u5b58\u7684\u9650\u5236\uff0c\u5e38\u5c06\u5176\u5206\u6210\u5f7c\u6b64\u8854\u63a5\u7684\u82e5\u5e72\u5757\u8fdb\u884c\u5904\u7406\u3002\u6570\u7ec4 px \u4e0e\n*            py \u5c31\u662f\u4e13\u4e3a\u5206\u5757\u5904\u7406\u800c\u8bbe\u7f6e\u7684\u3002\n*            px \u7528\u4e8e\u4fdd\u5b58\u524d\u4e00\u5757\u6ee4\u6ce2\u65f6\u7684\uff08n+1\uff09\u4e2a\u8f93\u5165\u5e8f\u5217\u503c\uff0c\u5373 px[j][] = {x(k), x(k-1), ..., x(k-m)}\uff1b\n*            py \u7528\u4e8e\u4fdd\u5b58\u524d\u4e00\u5757\u6ee4\u6ce2\u65f6\u7684 n \u4e2a\u8f93\u51fa\u5e8f\u5217\u503c\u3002\u5373 py[j][] = {y(k-1), y(k-2), ..., y(k-n)}\uff1b\n*            \u901a\u5e38\uff0c\u6211\u4eec\u5047\u5b9a\u6ee4\u6ce2\u5668\u7684\u521d\u59cb\u6761\u4ef6\u4e3a\u96f6\uff0c\u56e0\u6b64\u6570\u7ec4 px[][] \u4e0e py[][] \u5728\u6ee4\u6ce2\u524d\u90fd\u8981\u521d\u59cb\u5316\u4e3a\u96f6\u3002\n*********************************************************************************************************\/\nvoid Filterp(double* b, double* a, int n, int ns, double* x, double* y, int len, double* px, double* py)\n{\n  int i, j, k, n1;\n  double sum;\n  n1 = n + 1;\n  for (k = 0; k &lt; len; k++)\n  {\n    y[k] = 0.0;\n  }\n  for (j = 0; j &lt; ns; j++)\n  {\n    for (k = 0; k &lt; len; k++)\n    {\n      px[j * n1 + 0] = x[k];\n      sum = b[j * n1 + 0] * px[j * n1 + 0];\n      for (i = 1; i &lt;= n; i++)\n      {\n        sum += b[j * n1 + i] * px[j * n1 + i] - a[j * n1 + i] * py[j * n1 + i];\n      }\n      if (fabs(sum) &gt; 1.0e10)\n      {\n        return; \/\/This is an unstable filter!\n      }\n      for (i = n; i &gt;= 2; i--)\n      {\n        px[j * n1 + i] = px[j * n1 + i - 1];\n        py[j * n1 + i] = py[j * n1 + i - 1];\n      }\n      px[j * n1 + 1] = px[j * n1 + 0];\n      py[j * n1 + 1] = sum;\n      y[k] = y[k] + sum;\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p>4 \u9636\u5207\u6bd4\u96ea\u592b\u4f4e\u901a\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u4f20\u9012\u51fd\u6570\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H(z) = \\frac{0.08372 + 0.0239z^{-1}}{1 &#8211; 1.5658z^{-1} + 0.6549z^{-2}} &#8211; \\frac{0.08327 + 0.0246z^{-1}}{1 &#8211; 1.4934z^{-1} + 0.8392z^{-2}}\\)<\/p>\n\n\n\n<p>\u5b83\u7531\u4e24\u4e2a 2 \u9636\u8282\u5e76\u8054\u800c\u6210\u3002\u9009\u53d6\u53c2\u6570 n = 2\uff0cns = 2\uff1b\u5171\u5206 4 \u5757\u8fdb\u884c\u5904\u7406\uff0c\u6bcf\u5757\u957f\u5ea6 len = 25\u3002\u6c42\u8be5\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u51fb\u76f8\u5e94\uff0c\u5e76\u753b\u51fa\u76f8\u5e94\u6ce2\u5f62\u3002<\/p>\n\n\n\n<p>\u6d4b\u8bd5\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">int main(void)\n{\n  int i, j, n, ns, len, nblk;\n  static double b[2][3] = { {0.08327, 0.0239, 0.0}, {-0.08327, -0.0246, 0.0} };\n  static double a[2][3] = { {1.0, -1.5658, 0.6549}, {1.0, -1.4934, 0.8392} };\n  static double px[2][3] = { 0 };\n  static double py[2][3] = { 0 };\n  static double x[25] = { 0 };\n  static double y[25] = { 0 };\n  static double data[100] = { 0 };\n  FILE* fp;\n  n = 2;\n  ns = 2;\n  len = 25;\n  nblk = 4;\n  x[0] = 1.0;\n  for (i = 1; i &lt; len; i++)\n  {\n    x[i] = 0.0;\n  }\n  for (i = 0; i &lt; ns; i++)\n  {\n    for (j = 0; j &lt;= n; j++)\n    {\n      px[i][j] = 0.0;\n      py[i][j] = 0.0;\n    }\n  }\n  for (j = 0; j &lt; nblk; j++)\n  {\n    Filterp(b, a, n, ns, x, y, len, px, py);\n    for (i = 0; i &lt; len; i++)\n    {\n      data[j * len + i] = y[i];\n      x[i] = 0.0;\n    }\n  }\n  printf(\"Unit Impulse Respomse\\n\");\n  for (i = 0; i &lt; 16; i++)\n  {\n    printf(\"  %10.7lf\", data[i]);\n    if (i % 4 == 3)\n    {\n      printf(\"\\n\");\n    }\n  }\n  fp = fopen(\"filterp.csv\", \"w\");\n  for (i = 0; i &lt; 100; i++)\n  {\n    fprintf(fp, \"%2d,%lf\\n\", i, data[i]);\n  }\n  fclose(fp);\n  return 0;\n}\n<\/code><\/pre>\n\n\n\n<p>\u7ec8\u7aef\u8f93\u51fa\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e94\u5982\u4e0b\u6240\u793a\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">Unit Impulse Respomse\n   0.0000000   0.0053287   0.0344748   0.0889894\n   0.1523266   0.2010379   0.2162496   0.1913117\n   0.1335624   0.0605640  -0.0069497  -0.0523818\n  -0.0682015  -0.0571050  -0.0295577   0.0008975<\/code><\/pre>\n\n\n\n<p>\u8f93\u51fa\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e94\u5982\u4e0b\u56fe\u6240\u793a\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"537\" src=\"http:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u5e76\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008-1024x537.png\" alt=\"\" class=\"wp-image-2126\" srcset=\"https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u5e76\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008-1024x537.png 1024w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u5e76\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008-300x157.png 300w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u5e76\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008-768x403.png 768w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u5e76\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008-548x288.png 548w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u5e76\u8054\u578b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u5355\u4f4d\u51b2\u6fc0\u54cd\u5e941-20231008.png 1317w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%B7%B4%E7%89%B9%E6%B2%83%E5%85%B9%E5%92%8C%E5%88%87%E6%AF%94%E9%9B%AA%E5%A4%AB%E6%95%B0%E5%AD%97%E6%BB%A4%E6%B3%A2%E5%99%A8%E7%9A%84%E8%AE%BE%E8%AE%A1\"><\/span>\u5df4\u7279\u6c83\u5179\u548c\u5207\u6bd4\u96ea\u592b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u8bbe\u8ba1<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u6839\u636e\u6a21\u62df\u6ee4\u6ce2\u5668\u7406\u8bba\uff0c\u7528\u53cc\u7ebf\u6027\u53d8\u6362\u6cd5\u8bbe\u8ba1\u4f4e\u901a\u3001\u9ad8\u901a\u3001\u5e26\u901a\u3001\u5e26\u963b\u7684\u5df4\u7279\u6c83\u5179\u3001\u5207\u6bd4\u96ea\u592b\u548c\u9006\u5207\u6bd4\u96ea\u592b IIR \u6570\u5b57\u6ee4\u6ce2\u5668\u3002<\/p>\n\n\n\n<p>\u8bbe\u8ba1\u5df4\u7279\u6c83\u5179\u548c \u5207\u6bd4\u96ea\u592b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u6b65\u9aa4\u5982\u4e0b\uff1a<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"1%E5%BD%92%E4%B8%80%E5%8C%96%E6%A8%A1%E6%8B%9F%E4%BD%8E%E9%80%9A%E6%BB%A4%E6%B3%A2%E5%99%A8%E7%9A%84%E8%AE%BE%E8%AE%A1\"><\/span>1.\u5f52\u4e00\u5316\u6a21\u62df\u4f4e\u901a\u6ee4\u6ce2\u5668\u7684\u8bbe\u8ba1<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\uff081\uff09\u5df4\u7279\u6c83\u5179\u6ee4\u6ce2\u5668<\/p>\n\n\n\n<p>\u5f52\u4e00\u5316 L\uff08L \u4e3a\u5076\u6570\uff09\u9636\u5df4\u7279\u6c83\u5179\u6a21\u62df\u4f4e\u901a\u6ee4\u6ce2\u5668\u7684\u4f20\u9012\u51fd\u6570\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H(s) = \\prod_{k = 1}^{L\/2}\\frac{1}{s^{2} &#8211; 2s\\times cos\\left ( \\frac{2k + L &#8211; 1}{2L}\\pi \\right ) + 1}\\)<\/p>\n\n\n\n<p>\uff082\uff09\u5207\u6bd4\u96ea\u592b\u6ee4\u6ce2\u5668<\/p>\n\n\n\n<p>\u5f52\u4e00\u5316 L\uff08L \u4e3a\u5076\u6570\uff09\u9636\u5207\u6bd4\u96ea\u592b\u6a21\u62df\u4f4e\u901a\u6ee4\u6ce2\u5668\u7684\u4f20\u9012\u51fd\u6570\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H(s) = A\\frac{s_{1}\\times s_{2}\\times \u2026 s_{L}}{(s &#8211; s_{1})(s &#8211; s_{2})\u2026(s &#8211; s_{L})}\\)<\/p>\n\n\n\n<p>\u5176\u4e2d\u7cfb\u6570 A \u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(A = \\frac{1}{\\sqrt{1 + \\varepsilon ^{2}}}\\)<\/p>\n\n\n\n<p>H(s) \u7684\u6781\u70b9 \\(s_{k}\\) \u4e3a \uff08 k=1,2,\u2026,L\uff09<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(s_{k}= \\sigma {k} + j\\Omega {k}\\)<\/p>\n\n\n\n<p>\u5f0f\u4e2d<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(\\sigma _{k} = \\frac{1}{2}(\\gamma ^{-1} &#8211; \\gamma )sin\\left ( \\frac{2k-1}{2L}\\pi \\right )\\)<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(\\Omega _{k} = \\frac{1}{2}(\\gamma ^{-1} + \\gamma )cos\\left ( \\frac{2k-1}{2L}\\pi \\right )\\)<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(\\gamma = \\left ( \\frac{1 + \\sqrt{1 + \\varepsilon ^{2}}}{\\varepsilon } \\right )^{1\/L}\\)<\/p>\n\n\n\n<p>\uff083\uff09\u9006\u5207\u6bd4\u96ea\u592b\u6ee4\u6ce2\u5668<\/p>\n\n\n\n<p>\u5f52\u4e00\u5316 L\uff08L \u4e3a\u5076\u6570\uff09\u9636\u9006\u5207\u6bd4\u96ea\u592b\u6a21\u62df\u4f4e\u901a\u6ee4\u6ce2\u5668\u7684\u4f20\u9012\u51fd\u6570\u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H(s) = \\frac{s_{1}\\times s_{2}\\times \u2026\\times s_{L}\\times (s-t_{1})\\times (s-t_{2})\\times \u2026\\times (s-t_{L})}{t_{1}\\times t_{2}\\times \u2026\\times t_{L}\\times (s-s_{1})\\times (s-s_{2})\\times \u2026\\times (s-s_{L})}\\)<\/p>\n\n\n\n<p>\u5176\u4e2d H(s) \u7684\u96f6\u70b9 \\(t_{k}\\) \u548c \u6781\u70b9 \\(s_{k}\\) \u4e3a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(t_{k} = j\\frac{\\Omega _{s}}{cos[\\pi (2k-1)\/(2L)]}\\)<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(s_{k} = \\sigma _{k} + j\\Omega _{k}, k=1,2,\u2026,L\\)<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(\\sigma _{k} = \\frac{\\alpha _{k}\\Omega _{s}}{\\alpha _{k}^{2} + \\beta _{k}^{2}}\\)<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(\\Omega _{k} = \\frac{-\\beta _{k}\\Omega _{s}}{\\alpha _{k}^{2} + \\beta _{k}^{2}}\\)<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(\\alpha _{k} = \\frac{1}{2}(\\gamma ^{-1}-\\gamma )sin\\left ( \\frac{2k-1}{2L}\\pi \\right )\\)<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(\\beta _{k} = \\frac{1}{2}(r ^{-1}+\\gamma )cos\\left ( \\frac{2k-1}{2L}\\pi \\right )\\)<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(\\gamma =\\left ( \\lambda +\\sqrt{\\lambda ^{2}-1} \\right )^{1\/L}\\)<\/p>\n\n\n\n<p>\u5728\u4e0a\u9762\u8bf8\u5f0f\u4e2d\uff0c\\(\\Omega _{s}\\) \u662f\u963b\u5e26\u7684\u8fb9\u754c\u9891\u7387\uff0c\\(\\lambda\\) \u662f\u4e0e\u963b\u5e26\u8870\u51cf\u76f8\u5173\u7684\u53c2\u6570\u3002\u5728 \\(\\Omega =\\Omega _{s}\\) \u5904\uff0c\u6ee4\u6ce2\u5668\u7684\u5e45\u5ea6\u589e\u76ca\u4e3a \\(1\/\\lambda\\)\u3002<\/p>\n\n\n\n<p>\u663e\u800c\u6613\u89c1\uff0c\u628a\u5171\u8f6d\u6781\u70b9\u8fdb\u884c\u7ec4\u5408\u540e\uff0c\u5df4\u7279\u6c83\u5179\u3001\u5207\u6bd4\u96ea\u592b\u548c\u9006\u5207\u6bd4\u96ea\u592b\u6ee4\u6ce2\u5668\u90fd\u53ef\u5199\u6210 \\(L\/2\\) \u4e2a 2 \u9636\u7ea7\u8054\u7684\u5f62\u5f0f\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"2%E6%A8%A1%E6%8B%9F%E6%BB%A4%E6%B3%A2%E5%99%A8%E7%9A%84%E9%A2%91%E7%8E%87%E5%8F%98%E6%8D%A2\"><\/span>2.\u6a21\u62df\u6ee4\u6ce2\u5668\u7684\u9891\u7387\u53d8\u6362<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u4f4e\u901a\u5230\u9ad8\u901a\u7684\u53d8\u6362\uff1a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(s\\leftarrow \\frac{1}{s}\\)<\/p>\n\n\n\n<p>\u4f4e\u901a\u5230\u5e26\u901a\u7684\u53d8\u6362\uff1a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(s\\leftarrow \\frac{s^{2} + \\Omega _{0}^{2}}{sW}\\)<\/p>\n\n\n\n<p>\u4f4e\u901a\u5230\u5e26\u963b\u7684\u53d8\u6362\uff1a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(s\\leftarrow \\frac{1}{s}\\)<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(s\\leftarrow \\frac{s^{2} + \\Omega _{0}^{2}}{sW}\\)<\/p>\n\n\n\n<p>\u5176\u4e2d <\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(W=\\Omega _{H} &#8211; \\Omega _{L}\\)<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(\\Omega _{0} = \\sqrt{\\Omega _{H}\\Omega _{L}}\\)<\/p>\n\n\n\n<p>\u8fd9\u91cc \\(\\Omega _{H}\\) \u548c \\(\\Omega _{L}\\) \u5206\u522b\u662f\u5e26\u901a\u6216\u5e26\u963b\u6ee4\u6ce2\u5668\u7684\u901a\u5e26\u4e0b\u8fb9\u754c\u9891\u7387\u548c\u4e0a\u8fb9\u754c\u9891\u7387\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"3%E6%A8%A1%E6%8B%9F%E6%BB%A4%E6%B3%A2%E5%99%A8%E5%88%B0%E6%95%B0%E5%AD%97%E6%BB%A4%E6%B3%A2%E5%99%A8%E7%9A%84%E8%BD%AC%E6%8D%A2\"><\/span>3.\u6a21\u62df\u6ee4\u6ce2\u5668\u5230\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u8f6c\u6362<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\uff081\uff09\u8ba1\u7b97\u9884\u7578\u53d8\u540e\u7684\u6a21\u62df\u6ee4\u6ce2\u5668\u7684\u901a\u5e26\u8fb9\u754c\u9891\u7387<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(\\Omega _{c}=tan\\left ( \\frac{\\omega _{c}}{2} \\right )=tan(\\pi f_{c}\/f_{s})\\)<\/p>\n\n\n\n<p>\uff082\uff09\u6a21\u62df\u6ee4\u6ce2\u5668\u7684\u9891\u7387\u8f74\u5c3a\u5ea6\u53d8\u6362\uff1a<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(\\hat{H}(s)=H(\\frac{s}{\\Omega _{c}})\\)<\/p>\n\n\n\n<p>\uff083\uff09\u7528\u53cc\u7ebf\u6027\u53d8\u6362\u6cd5\uff0c\u5c06\u6a21\u62df\u6ee4\u6ce2\u5668 \\(\\hat{H}(s)\\) \u53d8\u6362\u4e3a\u6570\u5b57\u6ee4\u6ce2\u5668 \\(H(z)\\)\u3002<\/p>\n\n\n\n<p class=\"has-text-align-center\">\\(H(z)=\\hat{H}(s)|_{s=(1-z^{-1})\/(1+z^{-1})}\\)<\/p>\n\n\n\n<p>\u5b9e\u73b0\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">\/*********************************************************************************************************\n* \u51fd\u6570\u540d\u79f0\uff1a iirbcf\n* \u51fd\u6570\u529f\u80fd\uff1a \u5df4\u7279\u6c83\u5179\u548c\u5207\u6bd4\u96ea\u592b\u6570\u5b57\u6ee4\u6ce2\u5668\u7684\u8bbe\u8ba1\n* \u8f93\u5165\u53c2\u6570\uff1a ifilt\uff1a\u6574\u5f62\u53d8\u91cf\u3002\u6ee4\u6ce2\u5668\u7684\u7c7b\u578b\u3002\u53d6\u503c\u4e3a 1\u30012 \u548c 3\uff0c\u5206\u522b\u5bf9\u5e94\u5207\u6bd4\u96ea\u592b\u3001\u9006\u5207\u6bd4\u96ea\u592b\u548c\u5df4\u7279\u6c83\u5179\u6ee4\u6ce2\u5668\u3002\n*            band \uff1a\u6574\u5f62\u53d8\u91cf\u3002\u6ee4\u6ce2\u5668\u7684\u901a\u5e26\u5f62\u5f0f\uff0c\u53d6\u503c\u4e3a 1\u30012\u30013 \u548c 4\uff0c\u5206\u522b\u5bf9\u5e94\u4f4e\u901a\u3001\u9ad8\u901a\u3001\u5e26\u901a\u548c\u5e26\u963b\u3002\n*            ns   \uff1a\u6574\u5f62\u53d8\u91cf\u3002\u6ee4\u6ce2\u5668\u7684 n \u9636\u8282\u6570\u3002\n*            n    \uff1a\u6574\u5f62\u53d8\u91cf\u3002\u6ee4\u6ce2\u5668\u6bcf\u8282\u7684\u9636\u6570\u3002\u5bf9\u4e8e\u4f4e\u901a\u548c\u9ad8\u901a\u6ee4\u6ce2\u5668\uff0cn = 2\uff1b\u5bf9\u4e8e\u5e26\u901a\u548c\u5e26\u963b\u6ee4\u6ce2\u5668\uff0cn = 4\u3002\n*            f1-f4\uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u53d8\u91cf\u3002\n*  \u5bf9\u4e8e\u5df4\u7279\u6c83\u5179\u6ee4\u6ce2\u5668\uff1a\n*    \u4f4e\u901a\u65f6\uff0cf1 \u662f\u901a\u5e26\u8fb9\u754c\u9891\u7387\uff0cf2 = f3 = f4 = 0\uff1b\n*    \u9ad8\u901a\u65f6\uff0cf2 \u662f\u901a\u5e26\u8fb9\u754c\u9891\u7387\uff0cf1 = f3 = f4 = 0\uff1b\n*    \u5e26\u901a\u65f6\uff0cf2 \u662f\u5e26\u901a\u4e0b\u8fb9\u754c\u9891\u7387\uff0cf3 \u662f\u5e26\u901a\u4e0a\u8fb9\u754c\u9891\u7387\uff0cf1 = f4 = 0\uff1b\n*    \u5e26\u963b\u65f6\uff0cf1 \u662f\u5e26\u901a\u4e0b\u8fb9\u754c\u9891\u7387\uff0cf4 \u662f\u5e26\u901a\u4e0a\u8fb9\u754c\u9891\u7387\uff0cf2 = f3 = 0\u3002\n*  \u5bf9\u4e8e\u5207\u6bd4\u96ea\u592b\u6ee4\u6ce2\u5668\uff1a\n*    \u4f4e\u901a\u65f6\uff0cf1 \u662f\u901a\u5e26\u8fb9\u754c\u9891\u7387\uff0cf2 \u662f\u963b\u5e26\u8fb9\u754c\u9891\u7387\uff0cf3 = f4 = 0\uff1b\n*    \u9ad8\u901a\u65f6\uff0cf2 \u662f\u901a\u5e26\u8fb9\u754c\u9891\u7387\uff0cf1 \u662f\u963b\u5e26\u8fb9\u754c\u9891\u7387\uff0cf3 = f4 = 0\uff1b\n*    \u5e26\u901a\u65f6\uff0cf2 \u662f\u901a\u5e26\u4e0b\u8fb9\u754c\u9891\u7387\uff0cf3 \u662f\u901a\u5e26\u4e0a\u8fb9\u754c\u9891\u7387\uff0cf1 \u662f\u963b\u5e26\u4e0b\u8fb9\u754c\u9891\u7387\uff0cf4 \u662f\u963b\u5e26\u4e0a\u8fb9\u754c\u9891\u7387\uff1b\n*    \u5e26\u963b\u65f6\uff0cf1 \u662f\u901a\u5e26\u4e0b\u8fb9\u754c\u9891\u7387\uff0cf4 \u662f\u901a\u5e26\u4e0a\u8fb9\u754c\u9891\u7387\uff0cf2 \u662f\u963b\u5e26\u4e0b\u8fb9\u754c\u9891\u7387\uff0cf3 \u662f\u963b\u5e26\u4e0a\u8fb9\u754c\u9891\u7387\u3002\n*            db   \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u53d8\u91cf\u3002\u6ee4\u6ce2\u5668\u7684\u963b\u5e26\u8870\u51cf\uff08\u7528 dB \u8868\u793a\uff09\u3002\n*            b    \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e8c\u7ef4\u6570\u7ec4\uff0c\u4f53\u79ef\u4e3a ns*\uff08n+1\uff09\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u5206\u5b50\u591a\u9879\u5f0f\u7684\u7cfb\u6570\uff0c\n*                   b[j][i] \u8868\u793a\u7b2c j \u4e2a n \u9636\u8282\u7684\u5206\u5b50\u591a\u9879\u5f0f\u7684\u7b2c i \u4e2a\u7cfb\u6570\u3002\n*            a    \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e8c\u7ef4\u6570\u7ec4\uff0c\u4f53\u79ef\u4e3a ns*\uff08n+1\uff09\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u5206\u6bcd\u591a\u9879\u5f0f\u7684\u7cfb\u6570\uff0c\n*                   a[j][i] \u8868\u793a\u7b2c j \u4e2a n \u9636\u8282\u7684\u5206\u6bcd\u591a\u9879\u5f0f\u7684\u7b2c i \u4e2a\u7cfb\u6570\u3002\n* \u8f93\u51fa\u53c2\u6570\uff1a void\n* \u8fd4 \u56de \u503c\uff1a void\n* \u521b\u5efa\u65e5\u671f\uff1a 2023\u5e7410\u670801\u65e5\n* \u6ce8    \u610f\uff1a\n*********************************************************************************************************\/\nvoid iirbcf(int ifilt, int band, int ns, int n, double f1, double f2, double f3, double f4, double db, double* b, double* a)\n{\n  int k;\n  double omega, lamda, epslon, fl, fh;\n  double d[5], c[5];\n  void chebyi(int ln, int k, int n, double ep, double* d, double* c); \n  void chebyii(int ln, int k, int n, double ws, double att, double* d, double* c);\n  void bwtf(int ln, int k, int n, double* d, double* c); double cosh1(double x); \n  void fblt(double* d, double* c, int n, int band, double fln, double fhn, double* b, double* a);\n  double warp(double f); double bpsub(double om, double fh, double fl); double omin(double om1, double om2);\n  if ((band == 1) || (band == 4)) { fl = f1; }\n  if ((band == 2) || (band == 3)) { fl = f2; }\n  if (band &lt;= 3) { fh = f3; }\n  if (band == 4) { fh = f4; }\n  if (ifilt &lt; 3)\n  {\n    switch (band)\n    {\n      case 1:\n      case 2: omega = warp(f2) \/ warp(f1); break;\n      case 3: omega = omin(bpsub(warp(f1), fh, fl), bpsub(warp(f4), fh, fl)); break;\n      case 4: omega = omin(1.0 \/ bpsub(warp(f2), fh, fl), 1.0 \/ bpsub(warp(f3), fh, fl)); break;\n    }\n    lamda = pow(10.0, (db \/ 20.0));\n    epslon = lamda \/ cosh(2 * ns * cosh1(omega));\n  }\n  for (k = 0; k &lt; ns; k++)\n  {\n    switch (ifilt)\n    {\n      case 1: chebyi(2 * ns, k, 4, epslon, d, c); break;\n      case 2: chebyii(2 * ns, k, 4, omega, lamda, d, c); break;\n      case 3: bwtf(2 * ns, k, 4, d, c); break;\n    }\n    fblt(d, c, n, band, fl, fh, &amp;b[k * (n + 1) + 0], &amp;a[k * (n + 1) + 0]);\n  }\n}\nstatic double cosh1(double x)\n{\n  double z;\n  z = log(x + sqrt(x * x - 1.0));\n  return (z);\n}\nstatic double warp(double f)\n{\n  double pi, z;\n  pi = 4.0 * atan(1.0);\n  z = tan(pi * f);\n  return (z);\n}\nstatic double bpsub(double om, double fh, double fl)\n{\n  double z;\n  z = (om * om - warp(fh) * warp(fl)) \/ ((warp(fh) - warp(fl)) * om);\n  return (z);\n}\nstatic double omin(double om1, double om2)\n{\n  double z, z1, z2;\n  z1 = fabs(om1);\n  z2 = fabs(om2);\n  z = (z1 &lt; z2) ? z1 : z2;\n  return (z);\n}\nstatic void bwtf(int ln, int k, int n, double* d, double* c)\n{\n  int i;\n  double pi, tmp;\n  pi = 4.0 * atan(1.0);\n  d[0] = 1.0;\n  c[0] = 1.0;\n  for (i = 1; i &lt;= n; i++)\n  {\n    d[i] = 0.0;\n    c[i] = 0.0;\n  }\n  tmp = (k + 1) - (ln + 1.0) \/ 2.0;\n  if (tmp == 0.0)\n  {\n    c[1] = 1.0;\n  }\n  else\n  {\n    c[1] = -2.0 * cos((2 * (k + 1) + ln - 1) * pi \/ (2 * ln));\n    c[2] = 1.0;\n  }\n}\nstatic void chebyi(int ln, int k, int n, double ep, double* d, double* c)\n{\n  int i;\n  double pi, gam, omega, sigma;\n  pi = 4.0 * atan(1.0);\n  gam = pow(((1.0 + sqrt(1.0 + ep * ep)) \/ ep), 1.0 \/ ln);\n  sigma = 0.5 * (1.0 \/ gam - gam) * sin((2 * (k + 1) - 1) * pi \/ (2 * ln));\n  omega = 0.5 * (1.0 \/ gam + gam) * cos((2 * (k + 1) - 1) * pi \/ (2 * ln));\n  for (i = 0; i &lt;= n; i++)\n  {\n    d[i] = 0.0;\n    c[i] = 0.0;\n  }\n  if (((ln % 2) == 1) &amp;&amp; ((k + 1) == (ln + 1) \/ 2))\n  {\n    d[0] = -sigma;\n    c[0] = d[0];\n    c[1] = 1.0;\n  }\n  else\n  {\n    c[0] = sigma * sigma + omega * omega;\n    c[1] = -2.0 * sigma;\n    c[2] = 1.0;\n    d[0] = c[0];\n    if (((ln % 2) == 0) &amp;&amp; (k == 0))\n    {\n      d[0] = d[0] \/ sqrt(1.0 + ep * ep);\n    }\n  }\n}\nstatic void chebyii(int ln, int k, int n, double ws, double att, double* d, double* c)\n{\n  int i;\n  double pi, gam, alpha, beta, sigma, omega, scln, scld;\n  pi = 4.0 * atan(1.0);\n  gam = pow((att + sqrt(att * att - 1.0)), 1.0 \/ ln);\n  alpha = 0.5 * (1.0 \/ gam - gam) * sin((2 * (k + 1) - 1) * pi \/ (2 * ln));\n  beta = 0.5 * (1.0 \/ gam + gam) * cos((2 * (k + 1) - 1) * pi \/ (2 * ln));\n  sigma = ws * alpha \/ (alpha * alpha + beta * beta);\n  omega = -1.0 * ws * beta \/ (alpha * alpha + beta * beta);\n  for (i = 0; i &lt;= n; i++)\n  {\n    d[i] = 0.0;\n    c[i] = 0.0;\n  }\n  if (((ln % 2) == 1) &amp;&amp; ((k + 1) == (ln + 1) \/ 2))\n  {\n    d[0] = -1.0 * sigma;\n    c[0] = d[0];\n    c[1] = 1.0;\n  }\n  else\n  {\n    scln = sigma * sigma + omega * omega;\n    scld = pow((ws \/ cos((2 * (k + 1) - 1) * pi \/ (2 * ln))), 2);\n    d[0] = scln * scld;\n    d[2] = scln;\n    c[0] = d[0];\n    c[1] = -2.0 * sigma * scld;\n    c[2] = scld;\n  }\n}\nstatic void fblt(double* d, double* c, int n, int band, double fln, double fhn, double* b, double* a)\n{\n  int i, k, m, n1, n2, ls;\n  double pi, w, w0, w1, w2, tmp, tmpd, tmpc, *work;\n  double combin(int i1, int i2);\n  void bilinear(double* d, double* c, double* b, double* a, int n);\n  pi = 4.0 * atan(1.0);\n  w1 = tan(pi * fln);\n  for (i = n; i &gt;= 0; i--)\n  {\n    if ((c[i] != 0.0) || (d[i] != 0.0))\n    {\n      break;\n    }\n  }\n  m = i;\n  switch (band)\n  {\n    case 1:\n    case 2:\n    {\n      n2 = m;\n      n1 = n2 + 1;\n      if (band == 2)\n      {\n        for (i = 0; i &lt;= m \/ 2; i++)\n        {\n          tmp = d[i];\n          d[i] = d[m - i];\n          d[m - i] = tmp;\n          tmp = c[i];\n          c[i] = c[m - i];\n          c[m - i] = tmp;\n        }\n      }\n      for (i = 0; i &lt;= m; i++)\n      {\n        d[i] = d[i] \/ pow(w1, i);\n        c[i] = c[i] \/ pow(w1, i);\n      }\n      break;\n    }\n    case 3:\n    case 4:\n    {\n      n2 = 2 * m;\n      n1 = n2 + 1;\n      work = malloc(n1 * n1 * sizeof(double));\n      w2 = tan(pi * fhn);\n      w = w2 - w1;\n      w0 = w1 * w2;\n      if (band == 4)\n      {\n        for (i = 0; i &lt;= m \/ 2; i++)\n        {\n          tmp = d[i];\n          d[i] = d[m - i];\n          d[m - i] = tmp;\n          tmp = c[i];\n          c[i] = c[m - i];\n          c[m - i] = tmp;\n        }\n      }\n      for (i = 0; i &lt;= n2; i++)\n      {\n        work[0 * n1 + i] = 0.0;\n        work[1 * n1 + i] = 0.0;\n      }\n      for (i = 0; i &lt;= m; i++)\n      {\n        tmpd = d[i] * pow(w, (m - i));\n        tmpc = c[i] * pow(w, (m - i));\n        for (k = 0; k &lt;= i; k++)\n        {\n          ls = m + i - 2 * k;\n          tmp = combin(i, i) \/ (combin(k, k) * combin(i - k, i - k));\n          work[0 * n1 + ls] += tmpd * pow(w0, k) * tmp;\n          work[1 * n1 + ls] += tmpc * pow(w0, k) * tmp;\n        }\n      }\n      for (i = 0; i &lt;= n2; i++)\n      {\n        d[i] = work[0 * n1 + i];\n        c[i] = work[1 * n1 + i];\n      }\n      free(work);\n    }\n  }\n  bilinear(d, c, b, a, n);\n}\nstatic double combin(int i1, int i2)\n{\n  int i;\n  double s;\n  s = 1.0;\n  if (i2 == 0)\n  {\n    return (s);\n  }\n  for (i = i1; i &gt; (i1 - i2); i--)\n  {\n    s *= i;\n  }\n  return (s);\n}\nstatic void bilinear(double* d, double* c, double* b, double* a, int n)\n{\n  int i, j, n1;\n  double sum, atmp, scale, *temp;\n  n1 = n + 1;\n  temp = malloc(n1 * n1 * sizeof(double));\n  for (j = 0; j &lt;= n; j++)\n  {\n    temp[j * n1 + 0] = 1.0;\n  }\n  sum = 1.0;\n  for (i = 1; i &lt;= n; i++)\n  {\n    sum = sum * (double)(n - i + 1) \/ (double)i;\n    temp[0 * n1 + i] = sum;\n  }\n  for (i = 1; i &lt;= n; i++)\n  {\n    for (j = 1; j &lt;= n; j++)\n    {\n      temp[j * n1 + i] = temp[(j - 1) * n1 + i] - temp[j * n1 + i - 1] - temp[(j - 1) * n1 + i - 1];\n    }\n  }\n  for (i = n; i &gt;= 0; i--)\n  {\n    b[i] = 0.0;\n    atmp = 0.0;\n    for (j = 0; j &lt;= n; j++)\n    {\n      b[i] = b[i] + temp[j * n1 + i] * d[j];\n      atmp = atmp + temp[j * n1 + i] * c[j];\n    }\n    scale = atmp;\n    if (i != 0)\n    {\n      a[i] = atmp;\n    }\n  }\n  for (i = 0; i &lt;= n; i++)\n  {\n    b[i] = b[i] \/ scale;\n    a[i] = a[i] \/ scale;\n  }\n  a[0] = 1.0;\n  free(temp);\n}<\/code><\/pre>\n\n\n\n<p>\u4e0b\u9762\u7ed9\u51fa\u4e3b\u51fd\u6570\u7a0b\u5e8f\uff0c\u5b83\u8c03\u7528 iirbcf.c \u5b50\u51fd\u6570\u3002\u901a\u8fc7\u4eba\u673a\u5bf9\u8bdd\u65b9\u5f0f\u8f93\u5165\u53c2\u6570\u540e\uff0c\u5b83\u53ef\u4ee5\u8bbe\u8ba1\u5df4\u7279\u6c83\u5179\u3001\u5207\u6bd4\u96ea\u592b\u548c\u9006\u5207\u6bd4\u96ea\u592b\u6ee4\u6ce2\u5668\uff0c\u6bcf\u79cd\u6ee4\u6ce2\u5668\u90fd\u5177\u6709\u4f4e\u901a\u3001\u9ad8\u901a\u3001\u5e26\u901a\u3001\u5e26\u963b\u8fd9 4 \u79cd\u5f62\u5f0f\u3002\u4e0b\u9762\u5bf9\u8f93\u5165\u53c2\u6570\u8fdb\u884c\u8bf4\u660e\uff1a<\/p>\n\n\n\n<p>ifilt\uff1a\u6ee4\u6ce2\u5668\u7684\u7c7b\u578b\uff1bband\uff1a\u6ee4\u6ce2\u5668\u7684\u901a\u5e26\uff1bns\uff1a\u6ee4\u6ce2\u5668\u7684 n \u9636\u8282\u6570\uff1bfs\uff1a\u91c7\u6837\u9891\u7387\uff1bdb\uff1a\u963b\u5e26\u8870\u51cf\uff1bfname\uff1a\u5e45\u9891\u54cd\u5e94\u7684\u6587\u4ef6\u540d\u3002<\/p>\n\n\n\n<p>\u5bf9\u4e8e\u4f4e\u901a\u548c\u9ad8\u901a\u6ee4\u6ce2\u5668\uff0cfc\uff1a\u901a\u5e26\u8fb9\u754c\u9891\u7387\uff1bfr\uff1a\u963b\u5e26\u8fb9\u754c\u9891\u7387\u3002<\/p>\n\n\n\n<p>\u5bf9\u4e8e\u5e26\u901a\u548c\u5e26\u963b\u6ee4\u6ce2\u5668\uff0cflc\uff1a\u901a\u5e26\u4e0b\u8fb9\u754c\u9891\u7387\uff1bfhc\uff1a\u901a\u5e26\u4e0a\u8fb9\u754c\u9891\u7387\uff1bfls\uff1a\u963b\u5e26\u4e0b\u8fb9\u754c\u9891\u7387\uff1bfhs\uff1a\u963b\u5e26\u4e0a\u8fb9\u754c\u9891\u7387\u3002<\/p>\n\n\n\n<p>\u6d4b\u8bd5\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">int main(void)\n{\n  int i, k, n, ns, ifilt, band;\n  static double a[50] = { 0 };\n  static double b[50] = { 0 };\n  static double x[300] = { 0 };\n  static double y[300] = { 0 };\n  double f1, f2, f3, f4, fc, fr, fs, flc, fls, fhc, fhs, freq, db;\n  static char fname[40] = {0};\n  FILE* fp;\n  db = 1;\n  printf(\"Enter 1 for Chebyshev I, 2 for Chebyshev II, 3 for Butterworth\\n\");\n  scanf(\"%d\", &amp;ifilt);\n  printf(\"Enter 1 for lowpass, 2 for highpass, 3 for bandpass, 4 for bandstop\\n\");\n  scanf(\"%d\", &amp;band);\n  n = (band &lt;= 2) ? 2 : 4;\n  printf(\"Enter the number of filter section ns\\n\");\n  scanf(\"%d\", &amp;ns);\n  printf(\"Enter sample frequence fs\\n\");\n  scanf(\"%lf\", &amp;fs);\n  if (ifilt &lt;= 2)\n  {\n    switch (band)\n    {\n      case 1:\n      case 2:\n      {\n        printf(\"Enter passband edge frequency fc\\n\");\n        scanf(\"%lf\", &amp;fc);\n        printf(\"Enter stopband edge frequency fr\\n\");\n        scanf(\"%lf\", &amp;fr);\n        if (band == 1)\n        {\n          f1 = fc;\n          f2 = fr;\n        }\n        else\n        {\n          f1 = fr;\n          f2 = fc;\n        }\n        f3 = f4 = 0.0;\n        break;\n      }\n      case 3:\n      case 4:\n      {\n        printf(\"Enter the lower passband edge frequency flc\\n\");\n        scanf(\"%lf\", &amp;flc);\n        printf(\"Enter the higher passband edge frequency fhc\\n\");\n        scanf(\"%lf\", &amp;fhc);\n        printf(\"Enter the lower stopband edge frequency fls\\n\");\n        scanf(\"%lf\", &amp;fls);\n        printf(\"Enter the higher stopband edge frequency fhs\\n\");\n        scanf(\"%lf\", &amp;fhs);\n        if (band == 3)\n        {\n          f1 = fls;\n          f2 = flc;\n          f3 = fhc;\n          f4 = fhs;\n        }\n        else\n        {\n          f1 = flc;\n          f2 = fls;\n          f3 = fhs;\n          f4 = fhc;\n        }\n      }\n    }\n    printf(\"Enter stopband attenuation (dB)\\n\");\n    scanf(\"%lf\", &amp;db);\n  }\n  else\n  {\n    switch (band)\n    {\n      case 1:\n      case 2:\n      {\n        printf(\"Enter passband edge frequency fc\\n\");\n        scanf(\"%lf\", &amp;fc);\n        f1 = f2 = f3 = f4 = 0.0;\n        if (band == 1)\n        {\n          f1 = fc;\n        }\n        else\n        {\n          f2 = fc;\n        }\n        break;\n      }\n      case 3:\n      case 4:\n      {\n        printf(\"Enter the lower passband edge frequency flc\\n\");\n        scanf(\"%lf\", &amp;flc);\n        printf(\"Enter the higher passband edge frequency fhc\\n\");\n        scanf(\"%lf\", &amp;fhc);\n        f1 = f2 = f3 = f4 = 0.0;\n        if (band == 3)\n        {\n          f2 = flc;\n          f3 = fhc;\n        }\n        else\n        {\n          f1 = flc;\n          f4 = fhc;\n        }\n      }\n    }\n  }\n  f1 = f1 \/ fs;\n  f2 = f2 \/ fs;\n  f3 = f3 \/ fs;\n  f4 = f4 \/ fs;\n  iirbcf(ifilt, band, ns, n, f1, f2, f3, f4, db, b, a);\n  for (k = 0; k &lt; ns; k++)\n  {\n    printf(\"\\nSection %d\\n\\n\", k + 1);\n    for (i = 0; i &lt;= n; i++)\n    {\n      printf(\"  b[%d][%d] = %10.7lf\", k, i, b[k * (n + 1) + i]);\n      if (((i % 2) == 0) &amp;&amp; (i != 0))\n      {\n        printf(\"\\n\");\n      }\n    }\n    printf(\"\\n\");\n    for (i = 0; i &lt;= n; i++)\n    {\n      printf(\"  a[%d][%d] = %10.7lf\", k, i, a[k * (n + 1) + i]);\n      if (((i % 2) == 0) &amp;&amp; (i != 0))\n      {\n        printf(\"\\n\");\n      }\n    }\n    printf(\"\\n\");\n  }\n  printf(\"\\nEnter file name of magnitude response\\n\");\n  scanf(\"%s\", fname);\n  fp = fopen(fname, \"w\");\n  Gainc(b, a, n, ns, x, y, 300, 2);\n  for (i = 0; i &lt; 300; i++)\n  {\n    freq = i * 0.5 \/ 300.0;\n    fprintf(fp, \"%lf,%lf\\n\", freq, x[i]);\n  }\n  fclose(fp);\n  return 0;\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E4%BD%BF%E7%94%A8_IIR_%E6%BB%A4%E6%B3%A2%E5%99%A8%E6%BB%A4%E9%99%A4%E5%BF%83%E7%94%B5%E4%BF%A1%E5%8F%B7%E5%B7%A5%E9%A2%91%E5%B9%B2%E6%89%B0\"><\/span>\u4f7f\u7528 IIR \u6ee4\u6ce2\u5668\u6ee4\u9664\u5fc3\u7535\u4fe1\u53f7\u5de5\u9891\u5e72\u6270<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u9996\u5148\uff0c\u4f7f\u7528\u4e0a\u4e00\u8282\u63d0\u4f9b\u7684\u4eba\u673a\u63a5\u53e3\u7a0b\u5e8f\u8bbe\u8ba1 IIR \u6ee4\u6ce2\u5668\u3002\u5fc3\u7535\u4fe1\u53f7\u91c7\u6837\u9891\u7387\u4e3a 2kHz\uff0c\u5728\u6587\u7ae0\u7684\u672b\u5c3e\u7ed9\u51fa\u3002\u4f7f\u7528 4 \u7ea7\u5df4\u7279\u6c83\u5179\u4f4e\u901a\u6570\u5b57\u6ee4\u6ce2\u5668\uff0c\u901a\u5e26\u8fb9\u754c\u9891\u7387\u4e3a 25Hz\u3002\u5373\u8f93\u5165\u53c2\u6570 ifilt = 3\uff0cband = 1\uff0cns = 4\uff0c fc = 25\uff0cfs = 2000\u3002\u5c06\u5e45\u9891\u7279\u6027\u66f2\u7ebf\u8f93\u51fa\u5230 result.csv\u3002\u7ec8\u7aef\u7684\u8f93\u5165\u8f93\u51fa\u5982\u4e0b\u6240\u793a\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">Enter 1 for Chebyshev I, 2 for Chebyshev II, 3 for Butterworth\n3\nEnter 1 for lowpass, 2 for highpass, 3 for bandpass, 4 for bandstop\n1\nEnter the number of filter section ns\n4\nEnter sample frequence fs\n2000\nEnter passband edge frequency fc\n25\n\nSection 1\n\n  b[0][0] =  0.0015181  b[0][1] =  0.0030362  b[0][2] =  0.0015181\n\n  a[0][0] =  1.0000000  a[0][1] = -1.9637759  a[0][2] =  0.9698483\n\n\nSection 2\n\n  b[1][0] =  0.0014770  b[1][1] =  0.0029539  b[1][2] =  0.0014770\n\n  a[1][0] =  1.0000000  a[1][1] = -1.9105545  a[1][2] =  0.9164623\n\n\nSection 3\n\n  b[2][0] =  0.0014469  b[2][1] =  0.0028939  b[2][2] =  0.0014469\n\n  a[2][0] =  1.0000000  a[2][1] = -1.8717298  a[2][2] =  0.8775176\n\n\nSection 4\n\n  b[3][0] =  0.0014312  b[3][1] =  0.0028624  b[3][2] =  0.0014312\n\n  a[3][0] =  1.0000000  a[3][1] = -1.8513690  a[3][2] =  0.8570938\n\n\nEnter file name of magnitude response\nresult.csv<\/code><\/pre>\n\n\n\n<p>\u8f93\u51fa\u7684\u6ee4\u6ce2\u5668\u7cfb\u6570\u4e3a 2 \u9636\u7ea7\u8054\u578b\u7684\uff0c\u5c06\u6ee4\u6ce2\u5668\u7cfb\u6570\u4fdd\u5b58\u5230\u6570\u7ec4\u540e\uff0c\u6548\u679c\u5982\u4e0b\u6240\u793a\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">static const double s_arrB[4][3] = {{0.0015181, 0.0030362, 0.0015181}, {0.0014770, 0.0029539, 0.0014770}, \n                                    {0.0014469, 0.0028939, 0.0014469}, {0.0014312, 0.0028624, 0.0014312}};\nstatic const double s_arrA[4][3] = {{1.0000000, -1.9637759, 0.9698483}, {1.0000000, -1.9105545, 0.9164623},\n                                    {1.0000000, -1.8717298, 0.8775176}, {1.0000000, -1.8513690, 0.8570938}};<\/code><\/pre>\n\n\n\n<p>\u6ee4\u6ce2\u5668\u7684\u5e45\u9891\u7279\u6027\u66f2\u7ebf\u5982\u4e0b\u6240\u793a\u3002\u7eb5\u5750\u6807\u7684\u5355\u4f4d\u662f dB\uff0c\u6a2a\u5750\u6807\u662f\u5f52\u4e00\u5316\u9891\u7387\uff0c\u4e58\u4ee5\u91c7\u6837\u7387\uff0c\u5373 2000Hz\uff0c\u5373\u53ef\u8f6c\u6362\u5230\u9891\u7387\u3002\u6ee4\u6ce2\u5668\u5728 0.013333\uff0c\u5373 26.67Hz \u5904\u7684\u589e\u76ca\u4e3a -5.983596dB\uff0c\u5c0f\u4e8e -3dB\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"538\" src=\"http:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6ee4\u6ce2\u5668\u7684\u5e45\u9891\u7279\u6027\u66f2\u7ebf-20231009-1024x538.png\" alt=\"\" class=\"wp-image-2130\" srcset=\"https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6ee4\u6ce2\u5668\u7684\u5e45\u9891\u7279\u6027\u66f2\u7ebf-20231009-1024x538.png 1024w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6ee4\u6ce2\u5668\u7684\u5e45\u9891\u7279\u6027\u66f2\u7ebf-20231009-300x158.png 300w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6ee4\u6ce2\u5668\u7684\u5e45\u9891\u7279\u6027\u66f2\u7ebf-20231009-768x403.png 768w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6ee4\u6ce2\u5668\u7684\u5e45\u9891\u7279\u6027\u66f2\u7ebf-20231009-548x288.png 548w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u6ee4\u6ce2\u5668\u7684\u5e45\u9891\u7279\u6027\u66f2\u7ebf-20231009.png 1310w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u672c\u6587\u672b\u5c3e\u63d0\u4f9b\u7684\u5fc3\u7535\u4fe1\u53f7\u662f\u7eaf\u51c0\u7684\uff0c\u4e0d\u5e26 50Hz \u5de5\u9891\u5e72\u6270\u7684\u3002\u6211\u4eec\u9700\u8981\u5148\u624b\u52a8\u6dfb\u52a0 50Hz \u5de5\u9891\u5e72\u6270\uff0c\u7136\u540e\u518d\u5bf9\u5fc3\u7535\u4fe1\u53f7\u8fdb\u884c\u6ee4\u6ce2\u3002\u53c8\u56e0\u4e3a\u6ee4\u6ce2\u5668\u7c7b\u578b\u4e3a\u7ea7\u8054\u578b\uff0c\u6240\u4ee5\u9700\u8981\u4f7f\u7528 Filterc \u51fd\u6570\u8fdb\u884c\u6ee4\u6ce2\u3002\u5177\u4f53\u5982\u4e0b\u6240\u793a\u3002\u5728\u8fd9\u91cc\u4f7f\u7528 Filterc \u5bf9 4000 \u4e2a\u70b9\u7684\u5fc3\u7535\u4fe1\u53f7\u8fdb\u884c\u6ee4\u6ce2\uff0c\u5f53\u7136\u4e5f\u53ef\u4ee5\u4f7f\u7528\u5206\u5757\u7684\u65b9\u5f0f\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  static double s_arrInput[4000] = {0};\n  static double s_arrOutput[4000] = {0};\n  static const double s_arrB[4][3] = {{0.0015181, 0.0030362, 0.0015181}, {0.0014770, 0.0029539, 0.0014770}, \n                                      {0.0014469, 0.0028939, 0.0014469}, {0.0014312, 0.0028624, 0.0014312}};\n  static const double s_arrA[4][3] = {{1.0000000, -1.9637759, 0.9698483}, {1.0000000, -1.9105545, 0.9164623},\n                                      {1.0000000, -1.8717298, 0.8775176}, {1.0000000, -1.8513690, 0.8570938}};\n  static double s_arrPx[12] = {0};\n  static double s_arrPy[12] = {0};\n  int i, len;\n  long seed;\n  double pi, time;\n  FILE* fp;\n\n  \/\/\u5b9a\u4e49\u6570\u636e\u91cf\n  len = 4000;\n\n  \/\/\u83b7\u53d6\u8f93\u5165\u6570\u636e\uff0c\u52a0 50Hz \u5de5\u9891\u5e72\u6270\n  seed = 13579l;\n  pi = 3.1415926535;\n  time = 0;\n  for (i = 0; i &lt; len; i++)\n  {\n    s_arrInput[i] = g_arrEcgWave[i] + 0.1 * sin(time * 2 * pi \/ (1.0 \/ 50.0));\n    time = time + 0.0005;\n    s_arrOutput[i] = s_arrInput[i];\n  }\n\n  \/\/IIR \u6ee4\u6ce2\n  Filterc(s_arrB, s_arrA, 2, 4, s_arrInput, len, s_arrOutput, s_arrPx, s_arrPy);\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(\"IIRFilter.csv\", \"w\");\n  for (i = 0; i &lt; len; i++)\n  {\n    fprintf(fp, \"%d,%10.7lf,%10.7lf,%10.7lf\\n\", i, s_arrInput[i], g_arrEcgWave[i], s_arrOutput[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\u9ec4\u8272\u4e3a\u8f93\u5165\u4fe1\u53f7\uff0c\u7eff\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\/10\/\u4f7f\u7528-IIR-\u6ee4\u6ce2\u5668\u6ee4\u9664\u5fc3\u7535\u4fe1\u53f7-50Hz-\u5de5\u9891\u5e72\u6270-20231009-1024x496.png\" alt=\"\" class=\"wp-image-2129\" srcset=\"https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u4f7f\u7528-IIR-\u6ee4\u6ce2\u5668\u6ee4\u9664\u5fc3\u7535\u4fe1\u53f7-50Hz-\u5de5\u9891\u5e72\u6270-20231009-1024x496.png 1024w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u4f7f\u7528-IIR-\u6ee4\u6ce2\u5668\u6ee4\u9664\u5fc3\u7535\u4fe1\u53f7-50Hz-\u5de5\u9891\u5e72\u6270-20231009-300x145.png 300w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u4f7f\u7528-IIR-\u6ee4\u6ce2\u5668\u6ee4\u9664\u5fc3\u7535\u4fe1\u53f7-50Hz-\u5de5\u9891\u5e72\u6270-20231009-768x372.png 768w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u4f7f\u7528-IIR-\u6ee4\u6ce2\u5668\u6ee4\u9664\u5fc3\u7535\u4fe1\u53f7-50Hz-\u5de5\u9891\u5e72\u6270-20231009-548x265.png 548w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/10\/\u4f7f\u7528-IIR-\u6ee4\u6ce2\u5668\u6ee4\u9664\u5fc3\u7535\u4fe1\u53f7-50Hz-\u5de5\u9891\u5e72\u6270-20231009.png 1433w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>Filterc \u51fd\u6570\u662f\u57fa\u4e8e\u5206\u5757\u5904\u7406\u7684\u601d\u7ef4\uff0c\u66f4\u9002\u7528\u4e8e\u91c7\u96c6\u5b8c\u4e00\u6279\u6570\u636e\u540e\uff0c\u6279\u91cf\u505a\u5904\u7406\u3002\u4e3a\u4e86\u65b9\u4fbf\u6ce2\u5f62\u663e\u793a\uff0c\u6211\u4eec\u4e5f\u53ef\u4ee5\u5c06 Filterc \u51fd\u6570\u6539\u6210\u4e0b\u9762\u7684\u5f62\u5f0f\uff0c\u8fd9\u6837\u4e00\u6765\u5c31\u53ef\u4ee5\u5b9e\u73b0\u6765\u4e00\u4e2a\u70b9\u5904\u7406\u4e00\u4e2a\u70b9\uff0c\u66f4\u5229\u4e8e\u5b9e\u65f6\u663e\u793a\u7b49\u5e94\u7528\u573a\u666f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">\/*********************************************************************************************************\n* \u51fd\u6570\u540d\u79f0\uff1a IIRFilterc\n* \u51fd\u6570\u529f\u80fd\uff1a \u7ea7\u8054\u578b IIR \u6570\u5b57\u6ee4\u6ce2\u5668\n* \u8f93\u5165\u53c2\u6570\uff1a b  \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e8c\u7ef4\u6570\u7ec4\uff0c\u4f53\u79ef\u4e3a ns*\uff08n+1\uff09\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u5206\u5b50\u591a\u9879\u5f0f\u7684\u7cfb\u6570\uff0c\n*                 b[j][i] \u8868\u793a\u7b2c j \u4e2a n \u9636\u8282\u7684\u5206\u5b50\u591a\u9879\u5f0f\u7684\u7b2c i \u4e2a\u7cfb\u6570\u3002\n*            a  \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e8c\u7ef4\u6570\u7ec4\uff0c\u4f53\u79ef\u4e3a ns*\uff08n+1\uff09\u3002\u5b58\u653e\u6ee4\u6ce2\u5668\u5206\u6bcd\u591a\u9879\u5f0f\u7684\u7cfb\u6570\uff0c\n*                 a[j][i] \u8868\u793a\u7b2c j \u4e2a n \u9636\u8282\u7684\u5206\u6bcd\u591a\u9879\u5f0f\u7684\u7b2c i \u4e2a\u7cfb\u6570\u3002\n*            n  \uff1a\u6574\u578b\u53d8\u91cf\u3002\u7ea7\u8054\u578b\u6ee4\u6ce2\u5668\u6bcf\u8282\u7684\u9636\u6570\u3002\n*            ns \uff1a\u6574\u5f62\u53d8\u91cf\u3002\u7ea7\u8054\u578b\u6ee4\u6ce2\u5668\u7684 n \u9636\u8282\u6570 L\u3002\n*            px \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e8c\u7ef4\u6570\u7ec4\uff0c\u4f53\u79ef\u4e3a ns*\uff08n+1\uff09\u3002\u5b58\u653e\u5386\u53f2\u8f93\u5165\u6570\u636e\uff0c\u521d\u59cb\u72b6\u6001\u5fc5\u987b\u4e3a\u96f6\u3002\n*            py \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u4e8c\u7ef4\u6570\u7ec4\uff0c\u4f53\u79ef\u4e3a ns*\uff08n+1\uff09\u3002\u5b58\u653e\u5386\u53f2\u8f93\u5165\u6570\u636e\uff0c\u521d\u59cb\u72b6\u6001\u5fc5\u987b\u4e3a\u96f6\u3002\n*            x  \uff1a\u53cc\u7cbe\u5ea6\u5b9e\u578b\u53d8\u91cf\u3002\u65b0\u7684\u91c7\u6837\u503c\uff1b\n* \u8f93\u51fa\u53c2\u6570\uff1a void\n* \u8fd4 \u56de \u503c\uff1a \u6ee4\u6ce2\u540e\u7684\u91c7\u6837\u503c\n* \u521b\u5efa\u65e5\u671f\uff1a 2023\u5e7410\u670810\u65e5\n* \u6ce8    \u610f\uff1a \n*********************************************************************************************************\/\ndouble IIRFilterc(double* b, double* a, int n, int ns, double* px, double* py, double x)\n{\n  int i, j, n1;\n  n1 = n + 1;\n  for (j = 0; j &lt; ns; j++)\n  {\n    px[j * n1 + 0] = x;\n    x = b[j * n1 + 0] * px[j * n1 + 0];\n    for (i = 1; i &lt;= n; i++)\n    {\n      x += b[j * n1 + i] * px[j * n1 + i] - a[j * n1 + i] * py[j * n1 + i];\n    }\n    for (i = n; i &gt;= 2; i--)\n    {\n      px[j * n1 + i] = px[j * n1 + i - 1];\n      py[j * n1 + i] = py[j * n1 + i - 1];\n    }\n    px[j * n1 + 1] = px[j * n1 + 0];\n    py[j * n1 + 1] = x;\n  }\n  return x;\n}<\/code><\/pre>\n\n\n\n<p>\u5e94\u7528\u793a\u4f8b\u4ee3\u7801\u5982\u4e0b\uff0c\u540c\u6837\u53ef\u4ee5\u76f4\u63a5\u6ee4\u9664\u6389\u5fc3\u7535\u4fe1\u53f7\u4e2d\u7684 50Hz \u5de5\u9891\u5e72\u6270\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  static double s_arrInput[4000] = {0};\n  static double s_arrOutput[4000] = {0};\n  static const double s_arrB[4][3] = {{0.0015181, 0.0030362, 0.0015181}, {0.0014770, 0.0029539, 0.0014770}, \n                                      {0.0014469, 0.0028939, 0.0014469}, {0.0014312, 0.0028624, 0.0014312}};\n  static const double s_arrA[4][3] = {{1.0000000, -1.9637759, 0.9698483}, {1.0000000, -1.9105545, 0.9164623},\n                                      {1.0000000, -1.8717298, 0.8775176}, {1.0000000, -1.8513690, 0.8570938}};\n  static double s_arrPx[12] = {0};\n  static double s_arrPy[12] = {0};\n  int i, len;\n  long seed;\n  double pi, time;\n  FILE* fp;\n\n  \/\/\u5b9a\u4e49\u6570\u636e\u91cf\n  len = 4000;\n\n  \/\/\u83b7\u53d6\u8f93\u5165\u6570\u636e\uff0c\u52a0 50Hz \u5de5\u9891\u5e72\u6270\n  seed = 13579l;\n  pi = 3.1415926535;\n  time = 0;\n  for (i = 0; i &lt; len; i++)\n  {\n    s_arrInput[i] = g_arrEcgWave[i] + 0.1 * sin(time * 2 * pi \/ (1.0 \/ 50.0));\n    time = time + 0.0005;\n  }\n\n  \/\/IIR \u6ee4\u6ce2\n  for (i = 0; i &lt; len; i++)\n  {\n    s_arrOutput[i] = IIRFilterc(s_arrB, s_arrA, 2, 4, s_arrPx, s_arrPy, s_arrInput[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(\"IIRFilter.csv\", \"w\");\n  for (i = 0; i &lt; len; i++)\n  {\n    fprintf(fp, \"%d,%10.7lf,%10.7lf,%10.7lf\\n\", i, s_arrInput[i], g_arrEcgWave[i], s_arrOutput[i]);\n  }\n  return 0;\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%BF%83%E7%94%B5%E6%95%B0%E6%8D%AE\"><\/span>\u5fc3\u7535\u6570\u636e<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u672c\u6587\u4e2d\u4f7f\u7528\u5230\u7684\u5fc3\u7535\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>\u672c\u6587\u4e2d\u5c06\u4ecb\u7ecd\u5728 C \u8bed\u8a00\u73af\u5883\u4e0b\u5982\u4f55\u90e8\u7f72 IIR \u6ee4\u6ce2\u5668\u3002\u6700\u540e\u7528\u4e00\u4e2a\u5b9e\u4f8b\u5c55\u793a\u5982\u4f55\u8bbe\u8ba1\u4e00\u4e2a IIR \u6ee4\u6ce2\u5668\u7528\u6765\u6ee4\u9664\u5fc3\u7535\u4fe1\u53f7\u7684 50Hz \u5de5\u9891\u5e72\u6270\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"[]"},"categories":[6],"tags":[],"_links":{"self":[{"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=\/wp\/v2\/posts\/2036"}],"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=2036"}],"version-history":[{"count":61,"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=\/wp\/v2\/posts\/2036\/revisions"}],"predecessor-version":[{"id":2153,"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=\/wp\/v2\/posts\/2036\/revisions\/2153"}],"wp:attachment":[{"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2036"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2036"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2036"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}