Я новичок в R, и я попытался найти информацию о следующем, ничего не найдя.
Зеленый график на картинке состоит из красных и желтых графов. Но позвольте сказать, что у меня есть только точки данных чего-то вроде зеленого графа. Как извлечь низкие/высокие частоты (т.е. Примерно красные/желтые графики) с помощью low pass/фильтр высоких частот?
Обновление: график был сгенерирован с помощью
number_of_cycles = 2
max_y = 40
x = 1:500
a = number_of_cycles * 2*pi/length(x)
y = max_y * sin(x*a)
noise1 = max_y * 1/10 * sin(x*a*10)
plot(x, y, type="l", col="red", ylim=range(-1.5*max_y,1.5*max_y,5))
points(x, y + noise1, col="green", pch=20)
points(x, noise1, col="yellow", pch=20)
Обновление 2: Используя фильтр Баттерворта в пакете signal
, я предлагаю следующее:
library(signal)
bf <- butter(2, 1/50, type="low")
b <- filter(bf, y+noise1)
points(x, b, col="black", pch=20)
bf <- butter(2, 1/25, type="high")
b <- filter(bf, y+noise1)
points(x, b, col="black", pch=20)
Вычисления были немного полезны, signal.pdf не дал никаких подсказок о том, какие значения должны иметь значения W
, но оригинальная октавная документация по крайней мере упомянутый radians, который заставил меня идти. Значения в моем исходном графе не были выбраны с учетом какой-либо конкретной частоты, поэтому я получил следующие не очень простые частоты: f_low = 1/500 * 2 = 1/250
, f_high = 1/500 * 2*10 = 1/25
и частоту дискретизации f_s = 500/500 = 1
. Затем я выбрал f_c где-то между низкими и высокими частотами для фильтров низких/высоких частот (1/100 и 1/50 соответственно).