Как выбрать частоту ряда Фурье

Verochka

Есть функция, она дискретная, значения известны в моменты времени t1...tn (t2 - t1 = t3 - t2 =...).
Есть надобность приблизить её рядом Фурье, только вот не совсем понятно, какую частоту выбирать.
Как вариант — рассмотреть сумму (или сумму квадратов)
S = | g(t_1) - f(t_1) | + | g(t_2) - f(t_2) | + ... + | g(t_n) - f(t_n) |
g(t) = сумма[ a_k * sin(w * k * t) + b_k * cos(w * k * t)] — ряд Фурье, а
f(t) = наша функция,
после чего численно найти w, для которой сумма S принимает наименьшее значение. Только вот возникают следующие 2 вопроса:
1) Будет ли экстремум единственный (не буду ли появляться локальные экстремумы)?
2) Каким методом это лучше всего (быстрее всего) сделать (таких операций будет много, комп должен считать быстро)?

Lene81

[math]$\Delta \omega = \dfrac{2\pi}{N \Delta t}$[/math], где [math]$\Delta t = \dfrac{t_\text{max} - t_0}{N - 1}$[/math].
Такой выбор частот отвечает оптимальной дискретизации дельта-функции. N — число семплов по времени.

Verochka

Спасибо, буду знать.
А где можно прочесть обоснование того, что такая частота — наилучшая? И какая частота будет наилучшей, если я захочу приблизить всё только 1-ой, 2-ой и 3-ей гармоникой?

Lene81

Не очень понятен вопрос. Ряды Фурье, в каком-то смысле всегда дают оптимальное приближение — если тебе надо приблизить с частотам вдвое меньшими — прорежай каждую вторую точку, если втрое — оставляй каждую третью.
Ты поблему аппроксимации или сглажвания решаешь?

Verochka

Нет, если меня интересуют только w, 2w и 3w, а 4w, 5w... меня не интересует. 2-ой — это не каждая вторая гармоника, а только гармоника 2w. Интересует лишь ряд
a_1 * sin(wt) + b_1 * cos(w * t) + a_2 * sin(2wt) + b_2 * cos(2w * t) + a_3 * sin(3wt) + b_3 * cos(3w * t)
Наверняка будет другое приближение, когда немного изменятся коэффициенты перед гармониками w, 2w и 3w, а также будет ждругая частота w.
Я решаю проблему приближения, а не сглаживания(если под сглаживанием имеется ввиду попытка продолжить ф-ю до непрерывной).

Lene81

Какой смысл оставлять только первые гармоники тогда? Если у тебя есть N семплов по времени, то использование их всех даст наилучшее в среднеквадратичном смысле приближение. Тем более, что что вычислять коэффициенты Фурье, что обратно суммировать ряд требует NlogN операций (если FFT использовать).
Единственно, когда может быть не нужно "полное" приближение — когда есть цель сгладить, например, при наличии в данных случайных шумов. Тут уж я не могу особо ничего сказать.
Опять-таки, если тебе "некуда девать" лишние сэмплы, то можно суммировать, например, по Чезаро — полученная аппроксимация сходится для непрерывных функций вообще равномерно. Но ошибка для каждого фиксированного N будет выше, чем при суммировании в лоб — плата за равномерность.

Verochka

Какой смысл оставлять только первые гармоники тогда?

Есть подозрение, что только они и дают сигнал, всё остальное — лишь шум. Отсюда и вопрос: для выделения гармоник нужен Фурье(которые выделяет все-все гармоники) или что-то ещё?
Опять-таки, если тебе "некуда девать" лишние сэмплы, то можно суммировать, например, по Чезаро

сэмплы — это гармоники?

Lene81

Ага, т.е. тебе фильтрация нужна. Тогда проще считать "полный" ряд и просто отбрасывать высокочастотные компоненты. Или отбрасывать компоненты с коэффициентами меньше заданного порога.
 
сэмплы — это гармоники?

Это значения функции при данном t_i — ведь только они известны, так?

Verochka

Ага, т.е. тебе фильтрация нужна. Тогда проще считать "полный" ряд и просто отбрасывать высокочастотные компоненты.
   Да, она самая, родимая . Только вот вся проблема в том, что я не знаю, какая именно должна быть частота, поэтому главный вопрос состоит в нахождении этой самой частоты.
сэмплы — это гармоники? Это значения функции при данном t_i — ведь только они известны, так?
Да, все значения известны. Тогда, раз сэмплы — это не гармоники, то я не понял эту твою фразу
Опять-таки, если тебе "некуда девать" лишние сэмплы, то можно суммировать, например, по Чезаро
Зачем и как тут надо применять Чезаро?

Lene81

Только вот вся проблема в том, что я не знаю, какая именно должна быть частота, поэтому главный вопрос состоит в нахождении этой самой частоты.
Теория рядов Фурье тут тоже вряд ли поможет, я так понимаю — нужно что-то более специфическое.
Зачем и как тут надо применять Чезаро?

Если бы хотелось получать равномерные приближения, но раз это не твоя задача — значит оно тебе не нужно.

Sensor4ik

Только вот вся проблема в том, что я не знаю, какая именно должна быть частота, поэтому главный вопрос состоит в нахождении этой самой частоты.
Ну так объясни понятным языком, что ты хочешь от нас.
Начнем с самого начала. Имеем: "Есть функция, она дискретная, значения известны в моменты времени t1...tn (t2 - t1 = t3 - t2 =...)", т.е. имеем набор значений функции через равные известные промежутки времени.
Безотносительно рядов Фурье что ты хочешь получить в самом конце из этого набора чисел?

kapello07

Я тебе советую построить график, взглядом окинуть бороду, оценить на глаз ее частоту и выбрать для Фурье в 3, 5, 10 раз большую

Verochka

Безотносительно рядов Фурье что ты хочешь получить в самом конце из этого набора чисел?
Есть значение ф-и f(t) через равные промежутки времени, есть подозрение, что физический процесс для этого графика можно приблизить ф-ей вида
g(t) = a_1 * sin(wt) + b_1 * cos(wt) + a_2 * sin(2wt) + b_2 * cos(2wt) + a_3 * sin(3wt) + b_3 * cos(3wt) + шум
Но надо правильно выбрать частоту w. Как это сделать и как оценить, насколько удачной оказалась выбранная частота?
Я тебе советую построить график, взглядом окинуть бороду, оценить на глаз ее частоту и выбрать для Фурье в 3, 5, 10 раз большую

Что такое борода? Это основной, чаще всего встречающийся пик? Почему выбирать в 3, 5 и 10 раз бОльшую?

Sensor4ik

Я тебя просил дать не выжимку из треда, читать я умею, а корректно сформулировать изначальную задачу.
есть подозрение, что физический процесс для этого графика можно приблизить ф-ей вида
Откуда есть такое подозрение? Почему используются только три первых члена в этом гармоническом разложении? Зачем с помощью множителя w ты пытаешься растянуть/сжать частотную ось в этом разложении?
как оценить, насколько удачной оказалась выбранная частота?
Это у тебя есть подозрения, какой функцией аппроксимируется твой временной ряд. Значит, у тебя же и должны быть идеи, как проверить твое подозрение. Мы тебе тут помочь не можем никак, ты с нами не поделился своими соображениями, информации недостаточно.
Я тебя еще раз спрашиваю: безотносительно твоих подозрений, что это может быть такая функция, или какая-либо другая, безотносительно разложения в какие-либо ряды, какую конечную цель ты преследуешь?

Verochka

Почему используются только три первых члена в этом гармоническом разложении? Зачем с помощью множителя w ты пытаешься растянуть/сжать частотную ось в этом разложении?
Просто захотел именно так разложить эту функцию, можно сказать, гадалка подсказала.
Зачем с помощью множителя w ты пытаешься растянуть/сжать частотную ось в этом разложении?
Потому, что считаю, что именно этот параметр является наиболее удачным. Не амплитуды же менять.
Значит, у тебя же и должны быть идеи, как проверить твое подозрение. Мы тебе тут помочь не можем никак, ты с нами не поделился своими соображениями, информации недостаточно.Я тебя еще раз спрашиваю: безотносительно твоих подозрений, что это может быть такая функция, или какая-либо другая, безотносительно разложения в какие-либо ряды, какую конечную цель ты преследуешь?
Сделать что-нибудь типа МНК и оценить, вот и все мои идеи, может, кто что потолковее подскажет.
Цель — заменить свою функцию, заданную дискретно, несколькими гармониками(первой, второй и третьей).

KpyTou_yokep

у вас какие-то типа экспериментальные данные и вы хотите их в ряд разложить и аппроксимировать?
то есть теорию-науку на эксперимент навести?
я верно поняла?

lenmas

Есть функция, она дискретная, значения известны в моменты времени t1...tn (t2 - t1 = t3 - t2 =...).
Есть надобность приблизить её рядом Фурье, только вот не совсем понятно, какую частоту выбирать.
Как вариант — рассмотреть сумму (или сумму квадратов)
S = | g(t_1) - f(t_1) | + | g(t_2) - f(t_2) | + ... + | g(t_n) - f(t_n) |
g(t) = сумма[ a_k * sin(w * k * t) + b_k * cos(w * k * t)] — ряд Фурье, а
f(t) = наша функция,
после чего численно найти w, для которой сумма S принимает наименьшее значение. Только вот возникают следующие 2 вопроса:
1) Будет ли экстремум единственный (не буду ли появляться локальные экстремумы)?
2) Каким методом это лучше всего (быстрее всего) сделать (таких операций будет много, комп должен считать быстро)?
А вычислить преобразование Фурье и глянуть амплитудно-частотную характеристику не судьба? По спектральной
плотности должно быть видно какие гармоники решающие.

Sensor4ik

Опять не сказал ничего нового.
Значит будем включать телепатический приемник. Если тебе надо из ограниченной выборки временных последовательностей выделить на фоне некоторого шума частоты, принадлежащие сигналу, а потом придумать алгоритм обработки большого количества схожих последовательностей с теми же частотными характеристиками сигнала (но тут встает вопрос: а ты доказал, что они те же? то в простейшем варианте последуй совету . Более сложные варианты перечислены здесь: http://en.wikipedia.org/wiki/Frequency_estimation

Verochka

у вас какие-то типа экспериментальные данные и вы хотите их в ряд разложить и аппроксимировать?то есть теорию-науку на эксперимент навести?я верно поняла?
Да, верно. Можно даже проще сказать: ф-я должна иметь вид:
f(t) = const + A * sin(wt) + B * cos(wt) + C * sin(2wt) + D * cos(2wt) + E * sin(3wt) + F * cos(3wt)
Стоит вопрос в том, как выбрать w.
Можно на ты, на форуме все свои ;)
 
А вычислить преобразование Фурье и глянуть амплитудно-частотную характеристику не судьба? По спектральной
плотности должно быть видно какие гармоники решающие.
А для какой частоты его следует вычислить? Как выбрать частоту?
но тут встает вопрос: а ты доказал, что они те же?

Пока ничего не доказал, просто есть догадки.

lenmas

А для какой частоты его следует вычислить?
Преобразование Фурье вычисляется для всех частот. Потом строится график этого преобразования Фурье (модуль его) от частоты, это называется амплитудно-частотной характеристикой. Если твоя частота существует, то на этом графике должен быть достаточно резкий пик около этой частоты (и более мелкие пики около кратных частот 2ω, 3ω и т/д).
Покопайся в хэлпе Matlab'а, там должны быть готовые средства по преобразованию Фурье.
Оставить комментарий
Имя или ник:
Комментарий: