Я выполняю БПФ для данных акселерометра, но у меня возникают проблемы с фильтром Баттерворта 2-го порядка и интерпретацией PCA. Пожалуйста, найдите фрагмент моего кода ниже.

RE фильтр Баттерворта 2-го порядка, я пытаюсь сначала понизить дискретизацию до 100 Гц (пока не удалось это сделать), а затем полосовой фильтр с использованием фильтра Баттерворта второго порядка между 3-15 Гц. Однако я продолжаю получать ошибку: «Частоты среза должны быть в пределах интервала (0,1). Может ли кто-нибудь помочь мне с этим, в частности, выделить, где в коде я ошибаюсь?

Что касается PCA, ответ ниже (выделен полужирным шрифтом) — это ответ PCA. Столбцы представляют x, z, y — предполагает ли это, что Y является наиболее доминирующей (центрированной в движении) осью ускорения тремора? Из графика это кажется правильным, но я хотел бы получить некоторое подтверждение (график не включен в приведенный ниже код).

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

ОТВЕЧАТЬ

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech , ME, M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

Что касается понижения дискретизации, используйте функцию повторной выборки. Я бы не стал понижать дискретизацию сигнала, если по какой-то причине это абсолютно необходимо. В большинстве случаев я использую повторную выборку для создания равномерно дискретизированного сигнала из неравномерно дискретизированного сигнала, поскольку вся обработка сигнала требует равномерной дискретизации. Если вы решите понизить дискретизацию, обязательно измените Fs, чтобы отразить это, если вы выполняете фильтрацию после понижения частоты дискретизации.

Я не понимаю этого задания:

srate = 5000;

Если «srate» — это ваша частота дискретизации, на самом деле это «Fs», частота дискретизации, поэтому вместо этого назначьте ее «Fs». Это также косвенная причина ошибки, которую вы получаете.

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ