Engineering summary
What SNR means, how to read dB ranges from unusable (under 0 dB) to excellent (over 40 dB), seven practical ways to improve it, and a Python script to compute SNR from a signal file.
In short: SNR in seismic monitoring matters because it sets how much of a recording is signal rather than noise: SNR = 10·log10(P_signal/P_noise) in dB. Below 10 dB the data are poor and need heavy noise reduction, 10–20 dB is usable with filtering, and above 20 dB gives reliable records. Improve it with bandpass filtering, quieter sensor sites, low-noise sensors and shielded cables, calibrated preamplification, isolation, averaging and regular calibration.
Signal-to-Noise Ratio (SNR) plays a crucial role in data quality, especially in fields like seismic monitoring and structural health monitoring. Let’s break down what SNR means, the ranges of SNR values, and how improving SNR can ensure reliable measurements.
What is SNR?
Signal-to-Noise Ratio (SNR) measures the strength of a signal relative to the background noise. It is expressed in decibels (dB), which is a logarithmic unit used to compare two power levels: the signal and the noise.
SNR = 10 ⋅ log ( P signal / P noise )
- Low SNR means noise interferes with the signal, making it harder to extract useful information.
- High SNR means the signal is much stronger than the noise.
SNR Ranges and Their Interpretations
| SNR (dB) | Signal Quality | Interpretation |
|---|---|---|
| Below 0 dB | Very Poor | Noise is stronger than the signal. Data is likely unusable without significant noise reduction. |
| 0 to 10 dB | Poor | Signal is weak and heavily affected by noise, making analysis challenging. |
| 10 to 20 dB | Acceptable | Signal can be used with caution, but some noise filtering may be required. |
| 20 to 40 dB | Good | Signal is strong with manageable noise. Reliable data extraction is possible. |
| Above 40 dB | Excellent | Minimal noise interference, ideal for high-quality measurements. |
Why Is SNR Critical in Seismic and Structural Health Monitoring?
In seismic monitoring and structural health monitoring, accurate data is essential for understanding the behavior of structures under stress or seismic activity. Noise can interfere with measurements, leading to false readings or missed events. High SNR ensures that seismic signals and vibrations are captured clearly, providing reliable data for analysis.
How to Improve SNR in Seismic and Structural Health Monitoring
Here are some key strategies to enhance SNR for reliable measurements in these fields:
1. Filtering Techniques
- Use bandpass filters to isolate the frequency range of interest and eliminate irrelevant noise.
- Apply low-pass or high-pass filters to suppress environmental or electrical interference outside the target frequency.
2. Better Sensor Placement
- Position sensors away from sources of interference, such as motors, transformers, or heavy machinery.
- Install sensors at locations with minimal environmental noise (e.g., underground vaults for seismic instruments).
3. Use High-Quality Sensors and Dataloggers
- Choose sensors with low noise floors and high sensitivity to improve data acquisition.
- Use shielded cables and connectors to reduce electromagnetic interference (EMI).
4. Increase Signal Strength
- Amplify the signal using preamplifiers or signal conditioners to improve SNR.
- Ensure the amplification is well-calibrated to avoid introducing additional noise.
5. Environmental Shielding
- Use vibration isolation systems or enclosures to reduce environmental noise.
- Shield sensitive equipment from electromagnetic interference with conductive materials.
6. Averaging Multiple Signals
- Average repeated measurements to reduce the impact of random noise on the final signal.
7. Maintenance and Calibration
- Regularly calibrate sensors and equipment to ensure optimal performance.
- Inspect cables and connectors for wear and tear that could introduce noise.
How to Compute SNR?
Create a file named input.txt. Each line in input.txt should contain a single float value representing the signal amplitude (e.g., seismic data or time-series measurements).
Python Code for SNR Calculation (snr_calculator.py):
import numpy as np
from scipy.signal import butter, filtfilt
def read_signal(file_path):
"""Reads the signal data from the input file."""
signal = []
try:
with open(file_path, 'r') as f:
for line in f:
try:
value = float(line.strip())
signal.append(value)
except ValueError:
print(f"Warning: Skipping malformed line: {line.strip()}")
except FileNotFoundError:
print(f"Error: File {file_path} not found.")
return None
return np.array(signal)
def butter_bandpass(lowcut, highcut, fs, order=4):
"""Creates a Butterworth bandpass filter."""
nyquist = 0.5 * fs
low = lowcut / nyquist
high = highcut / nyquist
b, a = butter(order, [low, high], btype='band')
return b, a
def apply_bandpass_filter(data, lowcut, highcut, fs, order=4):
"""Applies the Butterworth bandpass filter to the signal."""
b, a = butter_bandpass(lowcut, highcut, fs, order=order)
return filtfilt(b, a, data)
def calculate_snr(original, filtered):
"""Calculates the SNR (Signal-to-Noise Ratio) in dB."""
noise = original - filtered
signal_power = np.mean(filtered ** 2)
noise_power = np.mean(noise ** 2)
snr = 10 * np.log10(signal_power / noise_power)
return snr
def main():
# Input parameters
file_path = 'input.txt' # Path to input signal file
lowcut = 0.1 # Low cutoff frequency (Hz)
highcut = 30.0 # High cutoff frequency (Hz)
sampling_rate = 100.0 # Sampling rate (Hz), adjust as needed
filter_order = 4 # Filter order
# Read the signal from the input file
signal = read_signal(file_path)
if signal is None or len(signal) == 0:
print("No valid signal data found.")
return
# Apply bandpass filter to the signal
filtered_signal = apply_bandpass_filter(
signal, lowcut, highcut, sampling_rate, filter_order
)
# Calculate SNR
snr_value = calculate_snr(signal, filtered_signal)
print(f"SNR: {snr_value:.2f} dB")
if __name__ == "__main__":
main()
How to Use the Code:
- Save the above code in a file named
snr_calculator.py. - Create an
input.txtfile with the signal data (one value per line). - Adjust the filter parameters (cutoff frequencies, sampling rate) in the
main()function if needed. - Run the script from the terminal or command prompt:
python snr_calculator.py
Summary
Achieving a good Signal-to-Noise Ratio (SNR) is essential for reliable seismic monitoring and structural health assessments. Here’s a quick recap:
- SNR below 10 dB indicates poor signal quality, requiring significant noise reduction.
- SNR between 10 and 20 dB is usable but may need some filtering.
- SNR above 20 dB ensures reliable data with minimal noise interference.
Improving SNR through better sensor placement, high-quality equipment, and effective filtering techniques will enhance the accuracy of your seismic and structural health monitoring data, enabling more informed decisions and analyses.
Need help selecting equipment or improving your monitoring setup? QuakeLogic would be happy to provide guidance!
About QuakeLogic
QuakeLogic is a leading provider of advanced seismic monitoring solutions, offering a range of products and services designed to enhance the accuracy and efficiency of seismic data acquisition and analysis. Our innovative technologies and expert support help organizations worldwide to better understand and mitigate the impacts of seismic events.
Contact Information
- Email: sales@quakelogic.net
- Phone: +1-916-899-0391
- WhatsApp: +1-650-353-8627
- Website: www.quakelogic.net
For more information about our products and services, please visit our website or contact our sales team. We are here to help you with all your seismic monitoring needs.
Key Takeaways
- SNR = 10·log10(P_signal / P_noise), expressed in decibels.
- Below 0 dB noise exceeds signal; 0–10 dB poor; 10–20 dB acceptable; 20–40 dB good; above 40 dB excellent.
- Place sensors away from motors, transformers and machinery; underground vaults cut environmental noise.
- Shielded cables and connectors reduce electromagnetic interference; preamplifiers must be calibrated to avoid adding noise.
- The provided Python script bandpass-filters 0.1–30 Hz at 100 Hz sampling and reports SNR in dB.
Frequently Asked Questions
For seismic and structural health monitoring, an SNR above 20 dB is good: the signal is strong, noise is manageable and reliable extraction is possible. Above 40 dB is excellent with minimal interference. Between 10 and 20 dB the data are acceptable but usually need some filtering, 0 to 10 dB is poor, and below 0 dB the noise exceeds the signal and the record is likely unusable without significant noise reduction.
Signal-to-noise ratio compares signal power with noise power on a logarithmic scale: SNR = 10·log10(P_signal / P_noise), giving a value in decibels. Equal signal and noise power gives 0 dB; a signal ten times stronger gives 10 dB; a hundred times stronger gives 20 dB. In practice, signal power is estimated from the filtered waveform and noise power from the residual that filtering removed, or from a quiet pre-event window.
Seven measures raise SNR in structural health monitoring: apply bandpass, low-pass or high-pass filters to keep only the frequency band of interest; place sensors away from motors, transformers and heavy machinery; choose sensors with low noise floors and use shielded cables to cut electromagnetic interference; amplify with well-calibrated preamplifiers or signal conditioners; isolate and shield equipment from vibration and EMI; average repeated measurements; and calibrate and inspect sensors, cables and connectors regularly.
Noise enters a seismic or vibration record mainly from the environment around the sensor. Motors, transformers, HVAC equipment and traffic inject mechanical vibration and electromagnetic interference that raise the noise floor regardless of sensor quality. Moving sensors away from such sources, or installing seismic instruments in underground vaults where temperature, wind and cultural noise are lower, reduces P_noise directly and so raises SNR before any filtering is applied.
The snr_calculator.py script reads one amplitude per line from input.txt, applies a 4th-order Butterworth bandpass filter from 0.1 to 30 Hz at a 100 Hz sampling rate using scipy.signal.filtfilt, and treats the filtered trace as the signal. Noise is the difference between the original and filtered traces. It then computes mean-square power of each and prints SNR = 10·log10(P_signal/P_noise) in dB. Cutoffs and sampling rate are adjustable in main().
Related Articles
- Calculating Background Seismic Noise Levels: A Step-by-Step Guide
- Linearity, Repeatability and Phase Lag in Digital Sensors
- How to Compute the PGA, PGV, PGD and Response Spectrum of Ground Motion Using Python
- The Doppler Effect: A Powerful Tool for Structural Health Monitoring
Need help with a project? QuakeLogic designs and supplies seismic monitoring, earthquake early warning, structural health monitoring, infrasound, and shake table systems. Browse QuakeLogic products or contact our engineering team with your site, structure, or test requirements.
Related
Discover more from QuakeLogic
Subscribe to get the latest posts sent to your email.
Reviewed by
QuakeLogic
Published by QuakeLogic engineers and seismic monitoring specialists. QuakeLogic designs earthquake early warning, structural health monitoring, infrasound, vibration monitoring, and shake table testing systems for infrastructure, research, public safety, and industrial engineering teams.
Topic cluster
Related engineering knowledge areas
- Earthquake EngineeringSeismic hazard, ground motion, structural response, fragility, and resilience guidance.
- Structural Health MonitoringMonitoring for bridges, buildings, dams, tunnels, industrial facilities, and resilient infrastructure.
- Earthquake Early WarningOn-site detection, alerting workflows, seismic switches, and critical infrastructure warning systems.
- Infrasound MonitoringLow-frequency acoustic sensing for environmental noise, blast, UAV, volcano, and defense applications.
Definitions and references
Terms, standards, and source cues
- seismic hazard: related to Earthquake Engineering in this QuakeLogic knowledge cluster.
- ground motion: related to Earthquake Engineering in this QuakeLogic knowledge cluster.
- SHM: related to Structural Health Monitoring in this QuakeLogic knowledge cluster.
- damage detection: related to Structural Health Monitoring in this QuakeLogic knowledge cluster.
- earthquake early warning: related to Earthquake Early Warning in this QuakeLogic knowledge cluster.
- seismic switch: related to Earthquake Early Warning in this QuakeLogic knowledge cluster.
- infrasound sensors: related to Infrasound Monitoring in this QuakeLogic knowledge cluster.
- low-frequency noise: related to Infrasound Monitoring in this QuakeLogic knowledge cluster.
Standards mentioned
- ISO documentation only when supported by source material
Next reading
Related engineering articles
Need project support?
Talk with QuakeLogic about monitoring, testing, or warning systems.
Get engineering guidance for seismic monitoring, structural health monitoring, infrasound, vibration, earthquake early warning, and shake table applications.

