Восстановление исходного сигнала из частот, амплитуды и фазы, полученных после выполнения fft

#matlab #fft #equation-solving

#matlab #БПФ #решение уравнений

Вопрос:

Восстановление исходного сигнала из частот, амплитуды и фазы, полученных после выполнения fft.

Приветствую

Я пытаюсь восстановить сигнал на основе частоты, амплитуды и фазы, полученных после выполнения БПФ сигнала, но когда я пытаюсь объединить данные БПФ (частоту, амплитуду и фазу) обратно, чтобы посмотреть, получу ли я аналогичный сигнал, шаблон немного отклоняется. Я думаю, что это связано с моей формулой, которая может быть немного неверной.

Формула, которую я использую для объединения данных, является:

 amplitude*sin(2*pi*time*frequency phase) amplitude*cos(2*pi*time*frequency phase);
  

Пожалуйста, обратите внимание:
На данный момент я не хочу использовать IFFT из-за того, что я буду редактировать амплитуду и частоты до завершения вычислений

Изображение графика приведено ниже. Верхний — это исходный сигнал, а нижний — сигнал, созданный с помощью уравнения. Если вы хотите знать, я использую matlab, но я думаю, что проблема в уравнении. введите описание изображения здесь

tia

Комментарии:

1. Можете ли вы объяснить это немного лучше? Уравнение даст только одну синусоидальную волну, но здесь явно происходит что-то более сложное. Есть ли у вас серия БПФ, чтобы амплитуда, частота и фаза постоянно менялись?

2. Амплитуда @AAT, частота и т.д., Вероятно, являются матрицами

3. @tstenner — хорошая идея, это очень вероятно — возможно, Рик подтвердит.

4. вы хотя бы пробовали ifft, чтобы посмотреть, что вы получаете (для сравнения с вашей процедурой)?

5. @AAT да, амплитуда, частота и фаза являются матрицами.

Ответ №1:

IFFT является эффективной реализацией следующего преобразования:

        N-1
x[n] = SUM X[k] exp(j*2*pi*n*k/N)
       k=0
  

где X[k] ваши результаты FFT (комплексные амплитуды) и x[n] ваши выборки во временной области. Для входных данных только реального типа это можно переписать в терминах cos и sin (или в терминах cos с phase термином), но обычно проще просто придерживаться сложного представления.

[Это может быть сильно векторизовано, но я оставлю это на ваше усмотрение!]

Комментарии:

1. Технически это вообще не выполняется. Но это приводит к тому же результату, что и этот. 🙂

Ответ №2:

Я не понимаю, почему вы хотите, чтобы в вашем уравнении были как sin, так и cos-члены: этого должно хватить…

 amplitude*sin(2*pi*time*frequency phase);
  

Использование терминов sin и cosine, если в FFT нет чего-то странного, вызовет проблемы с масштабированием и сдвигом фазы. Однако я не знаю, объяснило бы это искажение, которое вы видели. Это может быть связано с размерами блоков FFT, которые вы использовали.

Комментарии:

1. На самом деле, он, вероятно, хочет просто cos .

2. @Oli все, что было нужно, это изменить его с sin на cos thanks…it кажется, это всегда простые вещи 🙂

3. @Rick — рад слышать, что это сработало. @Oli — хорошее решение, я всегда начинаю с sin() , а затем понимаю, что cos() — это то, чего я хотел!

4. все, что было необходимо, это изменить его с sin на cos благодаря амплитуде cos(2 * pi время * частота фаза)