[pks locs] = findpeaks(data_compact(:,2),'MinPeakHeight',0.992*max(data_compact(:,2)),'MinPeakDistance',5000e-3); % peaks data_inverted(:,1) = data_compact(:,1); data_inverted(:,2) = -data_compact(:,2); %[valley valleys_locs] = findpeaks(data_inverted(:,2),'MinPeakDistance',0.2e-3); % valleys
To address your challenge of finding a single peak and valley in a noisy signal, you can try using a smoothing technique to reduce noise before detecting peaks and valleys. Here's an approach using Python and the SciPy library:
Smooth the Data: Use a moving average or a Savitzky-Golay filter to smooth the noisy signal.
Find Peaks and Valleys: Use the find_peaks
function from the scipy.signal
module with appropriate parameters.
Here's an example of how to do this:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.signal import find_peaks, savgol_filter
# Load your data
data = pd.read_csv('path_to_your_data.csv', header=None)
x = data[0]
y = data[1]
# Smooth the data using Savitzky-Golay filter
window_size = 51 # Choose an appropriate window size
poly_order = 3 # Polynomial order
y_smooth = savgol_filter(y, window_size, poly_order)
# Find peaks
peaks, _ = find_peaks(y_smooth, distance=50) # Adjust 'distance' as needed
# Find valleys (by finding peaks in the inverted signal)
valleys, _ = find_peaks(-y_smooth, distance=50) # Adjust 'distance' as needed
# Plot the results
plt.figure(figsize=(10, 6))
plt.plot(x, y, label='Original Signal')
plt.plot(x, y_smooth, label='Smoothed Signal')
plt.plot(x[peaks], y_smooth[peaks], 'ro', label='Peaks')
plt.plot(x[valleys], y_smooth[valleys], 'go', label='Valleys')
plt.legend()
plt.xlabel('Time')
plt.ylabel('Signal')
plt.title('Peak and Valley Detection')
plt.show()
You can adjust the window_size
, poly_order
, and distance
parameters to better suit your data. The window_size
should be chosen based on the width of features in your signal, and distance
should be set to avoid detecting multiple peaks/valleys around the same point.
Matlabsolutions.com provides guaranteed satisfaction with a
commitment to complete the work within time. Combined with our meticulous work ethics and extensive domain
experience, We are the ideal partner for all your homework/assignment needs. We pledge to provide 24*7 support
to dissolve all your academic doubts. We are composed of 300+ esteemed Matlab and other experts who have been
empanelled after extensive research and quality check.
Matlabsolutions.com provides undivided attention to each Matlab
assignment order with a methodical approach to solution. Our network span is not restricted to US, UK and Australia rather extends to countries like Singapore, Canada and UAE. Our Matlab assignment help services
include Image Processing Assignments, Electrical Engineering Assignments, Matlab homework help, Matlab Research Paper help, Matlab Simulink help. Get your work
done at the best price in industry.