Good morning, I am performing a FFT on my accelerometer data, but I am having issues with the 2nd-order Butterworth filter and pca interpretation. Please find a snippet of my code below.
RE the 2nd-order Butterworth filter, I am trying to first, downsample to 100 Hz (haven't managed to do this yet), and then bandpass filter using a second-order Butterworth filter between 3-15 Hz. However, I keep getting the error: "The cutoff frequencies must be within the interval of (0,1). Would anyone be able to assist me with this – specifically, highlight where in the code I am going wrong?
Regarding the pca, the anwser below (bolded) is the anwser from the pca. The columns represent 'x, z, y' – does this suggest that the Y is the most dominant (movement-centred) axis of tremor acceleration? From plotting, this seems correct but I'd like some confirmation (plot not included in the code provided below).
PCA ans = 0.9780 -0.1221 0.1694
-0.0357 0.7013 0.7120
0.2057 0.7023 -0.6815
Code:
t = data(:,1); % column corresponding to time (block of 60s)
Accel = data(:,2:end); % three columns corresponding to x, y, z (accelerometer data)
srate = 5000; % Hz (need to figure out how to downsample to 100Hz)
Fs = 1/srate; % Sampling Rate (in Hz)
Fn =Fs/2; % Nyquist Frequency (in Hz)
coeff = pca(Accel); % Need to obtain the most dominant (movement-centred) axis of tremor acceleration; use first component for all subsequent analyses
%2nd order Butterworth filter between 3-15 Hz
Wp = [3 15]/Fn; % Norrmalised Passband Frequencies
Ws = [1.5 15.99]/Fn; % Normalised Stopband Frequencies
Rp = 1; % Passband Ripple (dB)
Rs = 25; % Stopband Ripple (dB)
[n,Wn] = buttord(Wp, Ws, Rp, Rs); % Optimal Filter Order
[b,a] = butter(n, Wn); % Calculate Filter Coefficients
[sos,g] = tf2sos(b,a); % Convert To Second-Order Sections For Stability
figure(1)
freqz(sos, 4096, Fs) % Filter Bode Plot
Many thanks in advance for any assistance 🙂
Best Answer