.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "csi/add_noise_tutorial.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_csi_add_noise_tutorial.py: CSI Augmentation.adding_noise Tutorial ============================================================== .. GENERATED FROM PYTHON SOURCE LINES 6-9 .. code-block:: Python # !pip install pysensing .. GENERATED FROM PYTHON SOURCE LINES 10-12 In this tutorial, we will be implementing a simple csi.augmentation.adding_noise tutorial using the pysensing library. .. GENERATED FROM PYTHON SOURCE LINES 12-20 .. code-block:: Python import sys sys.path.append('../..') import pysensing.csi.augmentation.adding_noise as adding_noise import pysensing.csi.dataset.get_dataloader as load_data import matplotlib.pyplot as plt import numpy as np from scipy import signal .. GENERATED FROM PYTHON SOURCE LINES 21-23 Load the data ----------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 23-68 .. code-block:: Python # Define the plot function def plot_csi_heatmap(csi_data): """ Plot WiFi CSI heatmap. """ data_shape = csi_data.shape if len(data_shape) == 2: csi_to_plot = csi_data elif len(data_shape) > 2: csi_to_plot = csi_data.reshape(-1, data_shape[-1]) else: raise ValueError("The input data should have at least 2 dimensions.") plt.figure(figsize=(15, 8)) plt.imshow(csi_to_plot, aspect='auto', cmap='viridis') plt.colorbar(label='CSI Amplitude') plt.title('WiFi CSI Heatmap') plt.xlabel('Time Index') plt.ylabel('Subcarrier Index / Flattened Antenna-Subcarrier Index') plt.show() def plot_spec(csi): _, _, csi_spectrogram = signal.stft(csi, window='hann', nperseg=256, noverlap=128) specgram = np.abs(csi_spectrogram) plt.figure(figsize=(10,5)) plt.imshow(specgram.squeeze(), aspect='auto', origin='lower', cmap='inferno') plt.colorbar(label='CSI Amplitude') plt.xlabel('Time (s)') plt.ylabel('Frequency (Hz)') # Load the data _, test_loader = load_data.load_classification_dataset('UT_HAR',batch_size=1) example_csi_data_list = [] for data in test_loader: data, label = data example_csi_data_list.append(data) example_csi_data = np.concatenate(example_csi_data_list, axis=-1) plot_csi_heatmap(example_csi_data) .. image-sg:: /csi/images/sphx_glr_add_noise_tutorial_001.png :alt: WiFi CSI Heatmap :srcset: /csi/images/sphx_glr_add_noise_tutorial_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none /data1/msc/zyj/yunjiao_csi/1028/yunjiao_csi/tutorials/csi_source/data/csi using dataset: UT-HAR DATA .. GENERATED FROM PYTHON SOURCE LINES 69-72 1. dropout ------------------------ Use dropout augmentation .. GENERATED FROM PYTHON SOURCE LINES 72-80 .. code-block:: Python csi_process = adding_noise.dropout(dropout_prob=0.2) plot_spec(example_csi_data.squeeze()[2]) reduced_csi_data = csi_process(example_csi_data) plot_spec(reduced_csi_data.squeeze()[2]) plot_csi_heatmap(reduced_csi_data) .. rst-class:: sphx-glr-horizontal * .. image-sg:: /csi/images/sphx_glr_add_noise_tutorial_002.png :alt: add noise tutorial :srcset: /csi/images/sphx_glr_add_noise_tutorial_002.png :class: sphx-glr-multi-img * .. image-sg:: /csi/images/sphx_glr_add_noise_tutorial_003.png :alt: add noise tutorial :srcset: /csi/images/sphx_glr_add_noise_tutorial_003.png :class: sphx-glr-multi-img * .. image-sg:: /csi/images/sphx_glr_add_noise_tutorial_004.png :alt: WiFi CSI Heatmap :srcset: /csi/images/sphx_glr_add_noise_tutorial_004.png :class: sphx-glr-multi-img .. GENERATED FROM PYTHON SOURCE LINES 81-84 2. guassian noise ------------------------ add gaussian noise .. GENERATED FROM PYTHON SOURCE LINES 84-90 .. code-block:: Python csi_process = adding_noise.add_noise(noise_std=0.02) reduced_csi_data = csi_process(example_csi_data) plot_csi_heatmap(reduced_csi_data) .. image-sg:: /csi/images/sphx_glr_add_noise_tutorial_005.png :alt: WiFi CSI Heatmap :srcset: /csi/images/sphx_glr_add_noise_tutorial_005.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 91-92 And that's it. We're done with our CSI augmentation.adding_noise tutorials. Thanks for reading. .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 6.199 seconds) .. _sphx_glr_download_csi_add_noise_tutorial.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: add_noise_tutorial.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: add_noise_tutorial.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_