2013-06-23 3 views
-2

Я искал фильтр нижних частот 3dB с частотой среза 12 Гц. Я знаю, что у Matlab есть эта функция fdesign.lowpass, и должно быть возможно быть 3dB с F3db (source/additional), но я пока не уверен, как их реализовать, то есть: какие функции я должен включить, а какие нет. Меня путают все другие переменные, которые, я думаю, мне не нужны - мне просто нужны Fc и 3dB. Я также нашел fdatool, но также не знаю, как установить такой фильтр.Matlab 3 дБ 12 герц фильтр нижних частот

Данные содержат правильные значения x и y, в то время как это будет график скорости и времени записанного движения.

+0

Что должно представлять 3dB? Частота среза определяется как та, где затухание фильтра равно 3dB, поэтому требование 3dB не добавляет дополнительной информации. – plesiv

+0

Я действительно не знаю, я читал об этом где-то. И есть то, что вы можете добавить F3db, а по умолчанию - 6 дБ (?), См. Help 'fdesign.lowpass'. Но скажем, это не имеет значения: какие значения/переменные следует вводить для фильтрации моей матрицы? – Robert

+0

Для фильтрации вашей матрицы вы должны знать частоту дискретизации для обоих измерений. Фактически эта информация о 6dB может иметь смысл: 1D-фильтр будет иметь частоты отсечки с затуханием 3dB, а когда два фильтра такого типа используются для создания 2D-фильтра, точка в частотном отклике (fco_1, fco_2) будет иметь ослабление 6 дБ. Чтобы получить ослабление 3dB в этот момент, вам придется взять квадратный корень из исходного 2D-фильтра ... Но это слишком много угадывает с моей стороны, и вы должны попытаться изучить проблему немного больше. – plesiv

ответ

1

Для вашего приложения я настоятельно рекомендую попробовать простой фильтр Баттерворта, синтаксис Matlab является:

[b,a]=butter(n,Wn) 

Где Wn является цифровая частота, так вот как я задал бы его:

% assume x is time and y is speed 
Ts = mean(diff(x)); 
Fs = 1/Ts; 
% for butter, we need Wn, which is the cutoff frequency 
% where 0.0 < Wn < 1.0, where 1.0 is half the sample rate 
% The cutoff is the -3 dB point of the filter 
% Wn = fCutOff/(Fs/2) 
% for a cutoff of 12 Hz 
fCutOff = 12/(Fs/2); 
% we'll start with an order of 1 which should give us about 20 db/decade attenuation 
[b,a] = butter(1,fCutoff); 
% plot the filter frequency response to see what it looks like 
% use 512 points to plot it 
freqz(b,a,512,Fs) 

Однако, если, я правильно понимаю, вы отбираете данные с частотой около 66 Гц, что примерно в 5 раз быстрее, чем нужно. Правило большого пальца часто 10 раз, поэтому вы не можете быть счастливы с тем, что получаете в качестве вывода. Вот мой вывод: results