Grundläggande Signalbehandling
Svep för att visa menyn
Signalbehandling är ett centralt område inom vetenskaplig databehandling, med fokus på analys, bearbetning och tolkning av signaler—såsom ljud, elektriska eller sensordata. I Python tillhandahåller delmodulen scipy.signal ett omfattande verktygsutbud för signalbehandling. Dessa verktyg inkluderar filtrering, toppdetektering, konvolution och mer, vilket möjliggör effektiv och noggrann bearbetning av signaler från verkliga tillämpningar.
1234567891011121314151617181920212223242526import numpy as np import matplotlib.pyplot as plt from scipy.signal import butter, filtfilt # Create a time array and a noisy signal t = np.linspace(0, 1.0, 200) clean_signal = np.sin(2 * np.pi * 5 * t) noise = np.random.normal(0, 0.5, t.shape) noisy_signal = clean_signal + noise # Design a low-pass Butterworth filter b, a = butter(N=4, Wn=0.2) # Apply the filter to the noisy signal filtered_signal = filtfilt(b, a, noisy_signal) # Plot the results plt.figure(figsize=(10, 4)) plt.plot(t, noisy_signal, label="Noisy Signal") plt.plot(t, filtered_signal, label="Filtered Signal", linewidth=2) plt.legend() plt.xlabel("Time [s]") plt.ylabel("Amplitude") plt.title("Low-pass Filtering with scipy.signal") plt.tight_layout() plt.show()
123456789101112131415161718192021import numpy as np import matplotlib.pyplot as plt from scipy.signal import find_peaks # Generate a signal with peaks x = np.linspace(0, 6 * np.pi, 200) signal = np.sin(x) + 0.5 * np.random.randn(200) # Find peaks in the signal peaks, _ = find_peaks(signal, height=0) # Plot signal and detected peaks plt.figure(figsize=(10, 4)) plt.plot(x, signal, label="Signal") plt.plot(x[peaks], signal[peaks], "x", label="Peaks", markersize=10) plt.xlabel("x") plt.ylabel("Amplitude") plt.title("Peak Detection with scipy.signal.find_peaks") plt.legend() plt.tight_layout() plt.show()
Filtrering är en vanlig operation inom signalbehandling som tar bort oönskade komponenter, såsom brus, från en signal. Med filter som Butterworth-filtret kan du isolera de frekvenser som är av intresse och förbättra datakvaliteten för analys. Toppdetektering hjälper å andra sidan till att identifiera lokala maxima i en signal—dessa motsvarar viktiga händelser eller egenskaper. Inom vetenskapliga tillämpningar är filtrering och toppdetektering avgörande för uppgifter som att analysera experimentella mätningar, upptäcka avvikelser och extrahera användbar information från komplex data.
1. Vilken SciPy-submodul används för signalbehandling?
2. Vad är syftet med att filtrera en signal?
3. Hur kan du detektera toppar i en signal med SciPy?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal