denoise_RC/stand. noise show.ipynb

201 lines
533 KiB
Plaintext
Raw Permalink Normal View History

2025-03-22 14:01:33 +08:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"def add_noise(time_series, noise_type=\"random\", noise_level=0.1):\n",
" \"\"\"\n",
" 对输入的时间序列添加噪声。\n",
" \n",
" 参数:\n",
" time_series (numpy.ndarray): 输入的时间序列。\n",
" noise_type (str): 噪声类型,可选值为 \"random\"(随机噪声), \"sin\"(正弦噪声), 或 \"gaussian\"(正态分布噪声)。\n",
" noise_level (float): 噪声强度,决定噪声幅度。\n",
" \n",
" 返回:\n",
" numpy.ndarray: 添加噪声后的时间序列。\n",
" \"\"\"\n",
" if noise_type == \"random\":\n",
" noise = np.random.uniform(-noise_level, noise_level, len(time_series))\n",
" elif noise_type == \"sin\":\n",
" noise = noise_level * np.sin(50 * np.pi * np.arange(len(time_series)) / len(time_series))\n",
" elif noise_type == \"gaussian\":\n",
" noise = np.random.normal(0, noise_level, len(time_series))\n",
" else:\n",
" raise ValueError(\"Unsupported noise_type. Choose from 'random', 'sin', or 'gaussian'.\")\n",
" \n",
" return time_series + noise"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"# 示例:复合正弦函数\n",
"x = np.linspace(0, 2 * np.pi, 500)\n",
"time_series = np.sin(x) + 0.5 * np.sin(2 * x)\n",
"\n",
"# 添加噪声\n",
"time_series_random_noise = add_noise(time_series, noise_type=\"random\", noise_level=0.2)\n",
"time_series_sin_noise = add_noise(time_series, noise_type=\"sin\", noise_level=0.2)\n",
"time_series_gaussian_noise = add_noise(time_series, noise_type=\"gaussian\", noise_level=0.2)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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ueUWDh8+zNNPP82oUaP44Ycfsq/94Ycf6NWrFx06dOChhx4iKCiIt99+mwsuuICff/6Zs88+2+/71q1bl4yMDN577z2GDx+ea4wn+z75/Xo//vjj/N///R9XX301119/Pfv37+ell17i/PPP548//qBChQqkpqbSs2dPUlJSuPXWW4mLi2PXrl18/fXXJCQkEBMTk58/ZhERkYCxEzUVK1bM3peYmMibb77JoEGDuOGGGzh69ChvvfUWPXv2ZMWKFbRt29bjNT744AOOHj3KTTfdhMPh4Omnn+bKK69ky5YthISEAGbqWv/+/WnRogWTJk3i4MGDjBw5klq1anm8lmVZXH755SxatIjrrruOtm3bMm/ePO6++2527drFlClTPM4/nXuV3NSvX59hw4bxxhtvcO+99+Z6D3b99dfzzjvvcNVVVzFu3DiWL1/OpEmTWL9+fa6JlTfeeIPbbruNq666ittvv53k5GTWrFnD8uXLGTx4MAB79+7lnHPOyU7AxcbG8t1333HdddeRmJjIHXfckedn+fLLLzl27BjXXHMNcXFxdOvWjZkzZ2a/h+3BBx/kscceo3fv3vTu3Zvff/+diy++mNTUVI/z4uPj6d69O+np6dx7772UK1eOadOmERERkeO97Xu5nj178tRTT3HixAlee+01unTpwh9//JFdvZ/f7w+RMsESkRIlISHBAqwrrrgi1/Muv/xyC7ASExMty7Kshx56yAKsQYMG5TjXPmZbtWqVBVh33HGHx3kjRoywAOuhhx7K3vf2229bgLV169bsfXXr1rUAa/Hixdn79u3bZ4WFhVnjxo3L3pecnGxlZGR4vMfWrVutsLAw69FHH/XYB1hvv/12rp/Z3eTJk3PE5e/zWpZlAVZYWJjH+a+//roFWHFxcdl/jpZlWRMmTPB47czMTKtx48ZWz549rczMzOzzTpw4YdWvX9+66KKLco01Pj7eio2NtQCrWbNm1s0332x98MEHVkJCgsd5J/M+J/P13rZtm+V0Oq3HH3/c47y1a9dawcHB2fv/+OMPC7BmzZqV6+cREREJNPv+ZMGCBdb+/futnTt3Wp9++qkVGxtrhYWFWTt37sw+Nz093UpJSfG4/vDhw1a1atWsUaNGZe+z70cqV65sHTp0KHv/F198YQHWV199lb2vbdu2VvXq1T3+L//+++8twKpbt272vjlz5liA9dhjj3m8/1VXXWU5HA5r06ZN2ftO514lrz+nlStXWps3b7aCg4Ot2267Lft4165drZYtW2Y/X716tQVY119/vcfr3HXXXRZg/fDDDx7Xdu3aNfv5FVdc4fFavlx33XVW9erVrQMHDnjsv+aaa6yYmBjrxIkTuV5vWZZ16aWXWp07d85+Pm3aNCs4ONjat29f9r59+/ZZoaGhVp8+fTzuqe677z4LsIYPH56974477rAAa/ny5R7Xx8TEePwZHz161KpQoYJ1ww03eMQTHx9vxcTEeOzP7/eHSFmg6XsiJczRo0cBKF++fK7n2ccTExM99t988815vsfcuXMBuOWWWzz233rrrfmOs0WLFh6VXLGxsTRt2pQtW7Zk7wsLCyMoyPwzlJGRwcGDB4mKiqJp06b8/vvv+X6vgnLhhRd69J/q2LEjAP379/f487b3259l9erVbNy4kcGDB3Pw4EE
"text/plain": [
"<Figure size 1200x800 with 4 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# 绘图\n",
"plt.figure(figsize=(12, 8))\n",
"\n",
"plt.subplot(2, 2, 1)\n",
"plt.plot(x, time_series, label=\"Original\", color=\"blue\")\n",
"plt.title(\"Original Time Series\")\n",
"plt.legend()\n",
"\n",
"plt.subplot(2, 2, 2)\n",
"plt.plot(x, time_series_random_noise, label=\"Random Noise\", color=\"orange\")\n",
"plt.title(\"Random Noise Added\")\n",
"plt.legend()\n",
"\n",
"plt.subplot(2, 2, 3)\n",
"plt.plot(x, time_series_sin_noise, label=\"Sin Noise\", color=\"green\")\n",
"plt.title(\"Sin Noise Added\")\n",
"plt.legend()\n",
"\n",
"plt.subplot(2, 2, 4)\n",
"plt.plot(x, time_series_gaussian_noise, label=\"Gaussian Noise\", color=\"red\")\n",
"plt.title(\"Gaussian Noise Added\")\n",
"plt.legend()\n",
"\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1800x1000 with 3 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# 噪声函数可视化\n",
"def plot_noise_functions(length=500, noise_level=0.2):\n",
" \"\"\"\n",
" 绘制各种噪声函数。\n",
" \n",
" 参数:\n",
" length (int): 噪声序列长度。\n",
" noise_level (float): 噪声强度。\n",
" \"\"\"\n",
" x = np.arange(length)\n",
" \n",
" # 随机噪声\n",
" random_noise = np.random.uniform(-noise_level, noise_level, length)\n",
" \n",
" # 正弦噪声\n",
" sin_noise = noise_level * np.sin(50 * np.pi * x / length)\n",
" \n",
" # 高斯噪声\n",
" gaussian_noise = np.random.normal(0, noise_level, length)\n",
" \n",
" # 绘制图像\n",
" plt.figure(figsize=(18, 10))\n",
" \n",
" plt.subplot(3, 1, 1)\n",
" plt.plot(x, random_noise, label=\"Random Noise\", color=\"orange\")\n",
" plt.title(\"Random Noise\")\n",
" plt.xlabel(\"Index\")\n",
" plt.ylabel(\"Amplitude\")\n",
" plt.legend()\n",
" \n",
" plt.subplot(3, 1, 2)\n",
" plt.plot(x, sin_noise, label=\"Sin Noise\", color=\"green\")\n",
" plt.title(\"Sin Noise\")\n",
" plt.xlabel(\"Index\")\n",
" plt.ylabel(\"Amplitude\")\n",
" plt.legend()\n",
" \n",
" plt.subplot(3, 1, 3)\n",
" plt.plot(x, gaussian_noise, label=\"Gaussian Noise\", color=\"red\")\n",
" plt.title(\"Gaussian Noise\")\n",
" plt.xlabel(\"Index\")\n",
" plt.ylabel(\"Amplitude\")\n",
" plt.legend()\n",
" \n",
" plt.tight_layout()\n",
" plt.show()\n",
"\n",
"# 调用函数\n",
"plot_noise_functions(length=500, noise_level=0.2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.9"
}
},
"nbformat": 4,
"nbformat_minor": 4
}