Advanced Examples¶
More advanced usage examples and workflows.
Complete Experimental Modal Analysis¶
See the Modal Analysis page for a complete EMA workflow example.
Custom Signal Processing¶
import pydvma as dvma
import numpy as np
from scipy import signal
# Record data
settings = dvma.MySettings()
dataset = dvma.log_data(settings)
time_data = dataset.time_data_list[0]
# Design custom filter
sos = signal.butter(4, [50, 500], 'bandpass',
fs=settings.fs, output='sos')
# Apply filter
filtered = signal.sosfiltfilt(sos, time_data.time_data, axis=0)
# Analyze filtered data
import copy
time_data_filtered = copy.copy(time_data)
time_data_filtered.time_data = filtered
freq_data = dvma.calculate_fft(time_data_filtered)
Batch Processing Multiple Files¶
import pydvma as dvma
import os
# Process all measurements in a directory. Files are pydvma's native
# .npy format produced by dvma.save_data(...).
data_dir = 'measurements'
files = [f for f in os.listdir(data_dir) if f.endswith('.npy')]
results = []
for filename in files:
# Load data (DataSet from .npy via the standard helper)
dataset = dvma.load_data(filename=os.path.join(data_dir, filename))
time_data = dataset.time_data_list[0]
# Analyze
freq_data = dvma.calculate_fft(time_data)
tf_data = dvma.calculate_tf(time_data, ch_in=0)
# Store results
results.append({
'filename': filename,
'freq_data': freq_data,
'tf_data': tf_data
})
Integration with Other Tools¶
import pydvma as dvma
import pandas as pd
# Convert to pandas DataFrame for analysis
time_data = dataset.time_data_list[0]
df = pd.DataFrame(
time_data.time_data,
index=time_data.time_axis,
columns=[f'Channel_{i}' for i in range(time_data.time_data.shape[1])]
)
# Use pandas tools
print(df.describe())
df.plot()