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 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
Kshitij Singh answered .
2025-11-20
srate = 5000;
[b,a] = butter(n, Wn); % Calculate Filter Coefficients [sos,g] = tf2sos(b,a); % Convert To Second-Order Sections For Stability
[z.p,k]] = butter(n, Wn); % Calculate Filter Coefficients [sos,g] = zp2sos(b,a); % Convert To Second-Order Sections For Stability