La forma más fácil de modular una señal es multiplicándola con la frecuencia portadora, esta es la idea básica detrás de la modulación en anillo. Sin embargo, si desea utilizar la transformación de Fourier, esto es relativamente fácil.
Lo primero a tener en cuenta es que la multiplicación por algo es una operación lineal, lo que significa que:
(a + b) * c = a * c + b * c
- ¿Qué proyecto se puede hacer en el último año de ingeniería aeronáutica basado en un túnel de viento que cuesta menos?
- Soy un recién graduado de ingeniería eléctrica. No tengo experiencia. ¿Soy elegible para solicitar la certificación Six Sigma Green Belt? ¿Qué debo hacer para prepararme para el examen?
- ¿Por qué todos se burlan de los ingenieros mecánicos?
- ¿Cuáles son los verdaderos colores de su institución de ingeniería?
- ¿Qué son los logaritmos y qué aplicación (si es que tienen) tienen en el campo de la ingeniería?
Esto significa que puede descomponer su señal inicial en diferentes componentes de frecuencia y luego ensamblar la salida sumando la contribución de cada componente de frecuencia.
Necesita saber cómo se transforma cada componente de frecuencia una vez que se modula. Esto es bastante fácil, ya que:
(A * cos (a)) * cos (c) = 0.5 * A * (cos (a + b) + cos (ab))
(B * sin (a)) * cos (c) = 0.5 * B * (sin (a + b) + sin (ab))
cos (a + b) tendrá una frecuencia igual a la frecuencia de su componente más la frecuencia de la portadora, cos ab tendrá una frecuencia igual a la frecuencia de su componente menos la frecuencia de la portadora. Dependiendo de cómo calcule la transformada de Fourier, puede descuidar las frecuencias negativas (se prescriben al forzar que su señal modulada sea real).
Por lo tanto, primero debe comenzar con un búfer a cero para sus datos de salida y asegurarse de que sea lo suficientemente grande (debe poder ir a 2 * Fmax, donde Fmax es la frecuencia máxima de su señal modulada, que es igual a su frecuencia de modulación más la frecuencia máxima de la señal portadora).
Luego, para cada componente de frecuencia a la frecuencia Fc en su transformada de Fourier, y suponiendo que su frecuencia de modulación es Fmod, debe:
Agregue 0.5 * A al componente coseno (real) a la frecuencia Fc + Fmod y Fc-Fmod. Donde A es la amplitud real (coseno) en Fc.
Agregue 0.5 * B al componente seno (complejo) a la frecuencia Fc + Fmod y Fc-Fmod.
Si su transformación de Fourier contiene solo frecuencias positivas (las que contienen frecuencias negativas se ven reflejadas en el centro), puede olvidarse de los componentes que contienen sustracciones. El código para lograr esto sería:
// struct complex {double re, im; };
modular vacío (complejo * in, complejo * out, int n, int fmod)
{
int i;
para (i = 0; i <(n-fmod); i ++)
{
out [i + fmod] .re = 0.5 * in [i] .re;
out [i + fmod] .im = 0.5 * en [i] .im;
}
}
Donde in es la transformada de Fourier de la señal de entrada, out es la transformada de fourier de la señal modulada, n es el número de muestras y fmod es la frecuencia de modulación.
Tenga en cuenta que este código supone que su vector de entrada y salida tiene el mismo tamaño, lo que significa que debe aumentar la muestra de la señal de entrada para que tenga la resolución suficiente para contener la señal modulada. Además, los componentes en la frecuencia de entrada que tienen una frecuencia demasiado alta se descartarán, ya que de lo contrario se produciría un alias. Al trabajar un poco en el código, puede sortear estas limitaciones.
En cualquier caso, este método agrega 2 * n * log (n) operaciones debido a las transformadas de Fourier directas e inversas requeridas en comparación con el método de multiplicación y, por lo tanto, no lo recomendaría.