Top 10 de los artículosYouTubeGmail Goole GayRomeo Números chinos Números romanos Orkut Costco Sistema porta hepático El mundo Factbook |
News: |
| Fourier transforma |
|---|
| Fourier continuo transforma |
| Serie de Fourier |
| Fourier discreto transforma |
| El tiempo discreto Fourier transforma |
|
|
En matemáticas, Fourier discreto transforma (DFT) es una de las formas específicas de Análisis de Fourier. Como tal, transforma una función en otra, que se llama dominio de la frecuencia representación, o simplemente DFT, de la función original (que es a menudo una función en dominio de tiempo). Pero el DFT requiere una función de entrada que sea discreto y que valores diferentes a cero tienen limitado (finito) duración. Tales entradas se crean a menudo cerca muestreo una función continua, como la voz de una persona. Y desemejante de el tiempo discreto Fourier transforma (DTFT), evalúa solamente bastantes componentes de la frecuencia para reconstruir el segmento finito que era analizado. Su lo contrario transforma no puede reproducir el dominio de tiempo entero, a menos que la entrada suceda ser periódica (por siempre). Por lo tanto se dice a menudo que el DFT es un transformar para el análisis de Fourier de las funciones del tiempo discreto del finito-dominio. Las funciones sinusoidales de la base de la descomposición tienen las mismas características.
Puesto que la función de entrada es una finita ordene de verdadero o números complejos, el DFT es ideal para procesar la información almacenada adentro computadoras. Particularmente, el DFT se emplea extensamente adentro proceso de señal y campos relacionados para analizar las frecuencias contenidas en muestreado señal, para solucionar ecuaciones diferenciales parciales, y realizar otras operaciones por ejemplo circunvoluciones. El DFT se puede computar eficientemente en la práctica usando a Fourier rápido transforma Algoritmo (FFT).
Puesto que los algoritmos de FFT se emplean tan comúnmente para computar el DFT, los dos términos son de uso frecuente alternativamente en ajustes familiares, aunque hay una distinción clara: “DFT” refiere a una transformación matemática, sin importar cómo se computa, mientras que “FFT” refiere de varios algoritmos eficientes para el DFT. Esta distinción es velada más a fondo, sin embargo, por el sinónimo Fourier finito transforma para el DFT, que predates al parecer el término “que Fourier rápido transforma” (Cooley y otros., 1969) pero tiene igual initialism.
La secuencia de N números complejos x0, ..., xN−1 se transforma en la secuencia de N números complejos X0, ..., XN−1 por el DFT según el fórmula:
donde es un N'th primitivo raíz de la unidad.
El transformar es denotado a veces por el símbolo , como adentro o o .
Fourier discreto inverso transforma (IDFT) se da cerca
Una descripción simple de estas ecuaciones es que los números complejos Xk represente la amplitud y la fase de los diversos componentes sinusoidales de la entrada “señal” xn. El DFT computa Xk de xn, mientras que el IDFT demuestra cómo computar xn como suma de componentes sinusoidales Xkexp (2πikn / N) / N con frecuencia k / N ciclos por muestra. Escribiendo las ecuaciones en esta forma, estamos haciendo uso extenso de Fórmula de Euler para expresar sinusoids en términos de exponentials complejos, que son mucho más fáciles de manipular. (De la misma forma, por la escritura Xk en forma polar, obtenemos inmediatamente la amplitud del sinusoid de | Xk | y la fase del discusión compleja.) Una delicadeza importante de esta representación, aliasing, se discute abajo.
Observe que el factor de la normalización que multiplica el DFT y el IDFT (aquí 1 y 1N) y las muestras de los exponentes están simplemente las convenciones, y diferencian en algunos tratamientos. Los únicos requisitos de estas convenciones son que los DFT y los IDFT tienen exponentes de la opuesto-muestra y que el producto de sus factores de la normalización sea 1N. Una normalización de para las marcas de DFT y de IDFT transforma unitario, que tiene algunas ventajas teóricas, solamente es a menudo más práctico en el cómputo numérico realizar el escalamiento de una vez como arriba (y un escalamiento de la unidad puede ser conveniente de otras maneras).
(La convención de una muestra negativa en el exponente es a menudo conveniente porque significa eso Xk es la amplitud de una “frecuencia positiva” 2πk / N. Equivalente, el DFT se piensa a menudo en como a filtro emparejado: al buscar una frecuencia de +1, una correlaciona la señal entrante con una frecuencia de −1.)
En la discusión siguiente los términos “ordenan” y el “vector” será considerado permutable.
El Fourier discreto transforma es un inversible, transformación linear
con denotar el sistema de números complejos. Es decir para cualesquiera N > 0, N- el vector complejo dimensional tiene un DFT y un IDFT que están alternadamente N- vectores complejos dimensionales.
Los vectores forme orthogonal excedente de la base el sistema de N- vectores complejos dimensionales:
donde es Delta de Kronecker. Esta condición del orthogonality se puede utilizar para derivar el fórmula para el IDFT de la definición del DFT, y es equivalente a la característica del unitarity abajo.
Si Xk y Yk es el DFTs de xn y yn respectivamente entonces Teorema de Plancherel estados:
donde la estrella denota conjugación compleja. Teorema de Parseval es una caja especial del teorema y de los estados de Plancherel:
Estos teoremas son también equivalente a la condición unitaria abajo.
Si la expresión que define el DFT se evalúa para todos los números enteros k en vez de apenas para , entonces la secuencia infinita que resulta es una extensión periódica del DFT, periódica con período N.
La periodicidad se puede demostrar directamente de la definición:
donde hemos utilizado el hecho eso e − 2πi = 1. Puede ser demostrado de la misma forma que el fórmula de IDFT conduce a una extensión periódica.
El multiplicarse xn por a fase linear para un cierto número entero m corresponde a a cambio circular de la salida Xk: Xk se substituye cerca Xk − m, donde se interpreta el subíndice modulo N (es decir, periódicamente). Semejantemente, una cambio circular de la entrada xn corresponde a multiplicar la salida Xk por una fase linear. Matemáticamente, si {xn} representa el vector x entonces
teorema de la circunvolución para el continuo y el tiempo discreto Fourier transforma indica que una circunvolución de dos secuencias infinitas se puede obtener como lo contrario transforma del producto del individuo transforma. Con secuencias y transforma de la longitud N, a circularidad se presenta:
La cantidad entre paréntesis es 0 para todos los valores de m excepto los de la forma n − l − pN, donde p es cualquier número entero. En esos valores, es 1. Puede por lo tanto ser substituido por una suma infinita de Delta de Kronecker las funciones, y nosotros continuamos por consiguiente. Observe que podemos también ampliar los límites de m al infinito, con la comprensión que x y y las secuencias se definen como 0 exteriores [0, N-1]:
cuál es la circunvolución del secuencia con a periódicamente extendido secuencia definida cerca:
Semejantemente, puede ser demostrado eso:
cuál es correlación cruzada de y
Una evaluación directa de la circunvolución o de la adición de la correlación (arriba) requiere O(N2) operaciones para una secuencia de la salida de la longitud N. Un método indirecto, usando transforma, puede aprovecharse de O(NregistroN) eficacia del Fourier rápido transforma (FFT) alcanzar un funcionamiento mucho mejor. Además, las circunvoluciones se pueden utilizar para computar eficientemente DFTs vía Algoritmo de FFT de Rader y Algoritmo de FFT de Bluestein.
Los métodos también se han desarrollado para utilizar la circunvolución circular como parte de un proceso eficiente que alcanza la circunvolución (no-circular) normal con o ordene potencialmente mucho más de largo que el prácticos transforman tamaño (N). Se llaman dos tales métodos traslapar-ahorre y traslapar-agregue[1].
polinomio trigonometric de la interpolación
donde los coeficientes Xk /N son dados por el DFT de xn sobre, satisface la característica de la interpolación p(2πn / N) = xn para .
Para uniforme N, note que Componente de Nyquist se dirige especialmente.
Esta interpolación es no único: el aliasing implica que uno podría agregar N a las frecuencias complejas-sinusoid unas de los (e.g. el cambiar e − it a ei(N − 1)t ) sin cambiar la característica de la interpolación, pero dar diferente valores entre xn puntos. La opción arriba, sin embargo, es típica porque tiene dos características útiles. Primero, consiste en los sinusoids que frecuencias tienen las magnitudes posibles más pequeñas, y por lo tanto reduce al mínimo la media cuadrada cuesta de la función de interpolación. En segundo lugar, si xn son los números verdaderos, entonces p(t) es verdadero también.
En cambio, el polinomio trigonometric más obvio de la interpolación es el en a el cual la gama de frecuencias a partir de la 0 N − 1 (en vez de áspero − N / 2 a + N / 2 como arriba), similar al fórmula inverso de DFT. Esta interpolación no reduzca al mínimo la cuesta, y es no generalmente real-valued para verdadero xn; su uso es un error común.
Otra manera de mirar el DFT es observar que en la discusión antedicha, el DFT se puede expresar como a Matriz de Vandermonde:
donde
es un primitivo Nth raíz de la unidad. Lo contrario transforma entonces es dado por lo contrario de la matriz antedicha:
Con unitario constantes de la normalización , el DFT se convierte en a transformación unitaria, definido por una matriz unitaria:
donde det () es determinante función. El determinante es el producto de los valores propios, que están siempre o como descrito más abajo. En un espacio verdadero del vector, una transformación unitaria se puede pensar en como simplemente rotación rígida del sistema coordinado, y todas las características de una rotación rígida se pueden encontrar en el DFT unitario.
El orthogonality del DFT ahora se expresa como orthonormality condición (que se presenta en muchas áreas de las matemáticas según lo descrito adentro raíz de la unidad):
Si se define como el DFT unitario del vector entonces
y Teorema de Plancherel se expresa como:
Si vemos el DFT como apenas transformación coordinada que especifique simplemente los componentes de un vector en un nuevo sistema coordinado, entonces el antedicho es justo la declaración que el producto de punto de dos vectores está preservado bajo transformación unitaria de DFT. Para el caso especial , esto implica que la longitud de un vector está preservada pues bien-este es justo Teorema de Parseval:
Una característica útil del DFT es que el DFT inverso se puede expresar fácilmente en términos de DFT (delantero), vía varios “trucos bien conocidos”. (Por ejemplo, en cómputos, es a menudo conveniente poner solamente un Fourier en ejecución rápido transforma corresponder a uno transforma la dirección y entonces conseguir el otro transforme la dirección del primera.)
Primero, podemos computar el DFT inverso invirtiendo las entradas:
(Como de costumbre, se interpretan los subíndices modulo N; así, para n = 0, tenemos xN − 0 = x0.)
En segundo lugar, uno puede también conjugar las entradas y las salidas:
Tercero, una variante de este truco de la conjugación, que es a veces preferible porque no requiere ninguna modificación de los valores de los datos, implica el intercambiar de las piezas verdaderas e imaginarias (que se pueden hacer en una computadora simplemente modificándose indicadores). Defina el intercambio (xn) como xn con sus piezas verdaderas e imaginarias intercambiadas- that está, si xn = a + bi entonces intercambio (xn) es b + ai. Equivalente, intercambio (xn) iguales . Entonces
Es decir, lo contrario transforma es igual que el delanteros transforman con las piezas verdaderas e imaginarias intercambiadas por entrado y salida, hasta una normalización (Duhamel y otros., 1988).
El truco de la conjugación se puede también utilizar para definir un nuevo transforma, relacionado de cerca con el DFT, que es involutaryque es, que es su propio lo contrario. Particularmente, está claramente su propio lo contrario: . Una transformación involutary de cerca relacionada (por un factor de (1+i)/√2) es , desde (1 + i) factores adentro cancele los 2. Para las entradas verdaderas , la parte real de está ninguno con excepción de Hartley discreto transforma, que es también involutary.
valores propios de la matriz de DFT sea simple y bien sabido, mientras que vectores propios es complicado, no único, y es el tema de la investigación en curso.
Considere la forma unitaria definido arriba para el DFT de la longitud N, donde . Esta matriz satisface la ecuación:
Esto se puede ver de las características inversas arriba: funcionamiento da dos veces los datos originales en la orden reversa, funcionando tan cuatro veces dan detrás los datos originales y son así matriz de la identidad. Esto significa que los valores propios λ satisfaga a ecuación característica:
Por lo tanto, los valores propios de es el cuarto raíces de la unidad: λ es +1, −1, +i, o −i.
Puesto que hay solamente cuatro valores propios distintos para esto matriz, tienen alguno multiplicidad. La multiplicidad da el número de linear independiente vectores propios que corresponden a cada valor propio. (Nota que hay N vectores propios independientes; una matriz unitaria nunca está defectuoso.)
El problema de su multiplicidad fue solucionado por McClellan y Parks (1972), aunque era más adelante demostrado a ha sido equivalente a un problema solucionado cerca Gauss (Dickinson y Steiglitz, 1982). La multiplicidad depende del valor de N modulo 4, y es dado por la tabla siguiente:
| tamaño N | λ = +1 | λ = −1 | λ = -i | λ = +i |
|---|---|---|---|---|
| 4m | m + 1 | m | m | m − 1 |
| 4m + 1 | m + 1 | m | m | m |
| 4m + 2 | m + 1 | m + 1 | m | m |
| 4m + 3 | m + 1 | m + 1 | m + 1 | m |
Desafortunadamente, no se sabe ningún fórmula analítico simple para los vectores propios. Por otra parte, los vectores propios no son únicos porque cualquier combinación linear de los vectores propios para el mismo valor propio es también un vector propio para ese valor propio. Los varios investigadores han propuesto diversas opciones de vectores propios, seleccionadas para satisfacer características útiles como orthogonality y para tener formas “simples” (e.g., McClellan y Parks, 1972; Dickinson y Steiglitz, 1982; Grünbaum, 1982; Atakishiyev y Wolf, 1997; Candan y otros., 2000; Hanna y otros., 2004).
La opción de los vectores propios de la matriz de DFT ha llegado a ser importante estos últimos años para definir un análogo discreto del Fourier fraccionario transforma- la matriz de DFT se puede llevar las energías fraccionarias exponentiating los valores propios (e.g., Rubio y Santhanam, 2005). Para Fourier continuo transforma, las funciones propias orthogonal naturales son Funciones de Hermite, así que los varios análogos discretos de éstos se han empleado como los vectores propios del DFT, tales como Polinomios de Kravchuk (Atakishiyev y Wolf, 1997). La “mejor” opción de los vectores propios para definir un Fourier discreto fraccionario transforma una pregunta abierta del restos, sin embargo.
Si sea números verdaderos, mientras que están a menudo en usos prácticos, después el DFT obedece la simetría:
donde la estrella denota conjugación compleja y los subíndices son modulo interpretado N.
Por lo tanto, el DFT hecho salir para las entradas verdaderas es a medias redundante, y una obtiene la información completa solamente mirando áspero la mitad de las salidas . En este caso, el elemento de la “C.C.” X0 es puramente verdadero, y para uniforme N el elemento de “Nyquist” XN / 2 hay también verdadero, tan es exactamente N números verdaderos no-redundantes en la primera mitad + el elemento de Nyquist de la salida compleja X.
El usar Fórmula de Euler, el polinomio trigonometric de interpolación se puede entonces interpretar como suma de funciones del seno y de coseno.
Es posible cambiar de puesto el muestreo del transformar a tiempo y/o el dominio de la frecuencia por algunas cambios verdaderas a y b, respectivamente. Esto se conoce a veces como a DFT generalizado (o GDFT), también llamado DFT cambiado de puesto o DFT compensado, y tiene características análogas al DFT ordinario:
Lo más a menudo posible, cambios de 1 / 2 (mitad de una muestra) se utilizan. Mientras que el DFT ordinario corresponde a una señal periódica en dominios del tiempo y de la frecuencia, a = 1 / 2 produce una señal que sea contra-periódica en dominio de la frecuencia (Xk + N = − Xk) y viceversa para b = 1 / 2. Así, el caso específico de a = b = 1 / 2 se conoce como impar-frecuencia del impar-tiempo Fourier discreto transforma (u O2 DFT). Tal cambiado de puesto transforma es el más de uso frecuente para los datos simétricos, representar diversas simetrías del límite, y para los datos verdadero-simétricos corresponden a diversas formas del discreto coseno y seno transforma.
Otra opción interesante es a = b = − (N − 1) / 2, que se llama DFT centrado (o CDFT). El DFT centrado tiene la característica útil que, cuando N es un múltiplo de cuatro, los cuatro de sus valores propios (véase arriba) tener multiplicities iguales (Rubio y Santhanam, 2005).
El Fourier discreto transforma se puede ver como caso especial del z-transforme, evaluado en el círculo de la unidad en el plano complejo; más general z-transforma corresponden a complejo cambios a y b sobre.
El DFT ordinario computa el transformar de un dataset “unidimensional”: una secuencia (o arsenal) xn ésa es una función de una variable discreta n. Más generalmente, uno puede definir multidimensional DFT de un arsenal multidimensional ésa es una función de d variables discretas para en :
donde como arriba y d los índices de la salida funcionan de . Esto más compacto se expresa adentro vector notación, donde definimos y como d- vectores dimensionales de índices a partir de la 0 a , que definimos como :
donde la división se define como ser elemento-sabio realizado, y la suma denota el sistema de adiciones jerarquizadas arriba.
Lo contrario del DFT multidimensional es, análogo al caso unidimensional, dado cerca:
El DFT multidimensional tiene una interpretación simple. Apenas como el DFT unidimensional expresa la entrada xn como superposición de sinusoids, el DFT multidimensional expresa la entrada como superposición de ondas planas, o sinusoids que oscilan a lo largo de la dirección en espacio y amplitud el tener . Tal descomposición es de gran importancia para todo de proceso de imagen digital (d = 2) a solucionar ecuaciones diferenciales parciales en tres dimensiones (d = 3) rompiendo la solución para arriba en ondas planas.
De cómputo, el DFT multidimensional es simplemente composición de una secuencia de DFTs unidimensional a lo largo de cada dimensión. Por ejemplo, en el caso de dos dimensiones uno puede primero computar N1 DFTs independiente de las filas (es decir, adelante n2) para formar un nuevo arsenal , y entonces compute N2 DFTs independiente de y a lo largo de las columnas (a lo largo n1) para formar el resultado final . O, uno puede transformar las columnas y entonces la orden de las filas- es inmaterial porque las adiciones jerarquizadas arriba conmute.
Debido a esto, dado una manera de computar un DFT unidimensional (e.g. un algoritmo unidimensional ordinario de FFT), uno tiene inmediatamente una manera de computar eficientemente el DFT multidimensional. Esto se conoce como a fila-columna algoritmo, aunque hay también intrínseco algoritmos multidimensionales de FFT.
Si las entradas sea números verdaderos, mientras que están a menudo en usos prácticos, después las salidas de DFT tienen una simetría conyugal similar al caso unidimensional arriba:
donde la estrella denota la conjugación compleja y - el subíndice del th es modulo interpretado (para ).
El DFT ha visto uso amplio a través de una gran cantidad de campos; bosquejamos solamente algunos ejemplos abajo (véase también las referencias en el extremo). Todos los usos del DFT dependen crucial de la disponibilidad de un algoritmo rápido para computar Fourier discreto transforman y sus lo contrario, a Fourier rápido transforma.
Cuando el DFT se utiliza para análisis espectral, la secuencia representa generalmente un sistema finito de tiempo-muestras uniforme-espaciadas de una cierta señal , donde t representa tiempo. La conversión a partir del tiempo continuo a las muestras (tiempo discreto) cambia el subyacente Fourier transforma de x (t) en a el tiempo discreto Fourier transforma (DTFT), que exige generalmente un tipo de distorsión llamó aliasing. Opción de una muestra-tarifa apropiada (véase Frecuencia de Nyquist) está la llave a reducir al mínimo esa distorsión. Semejantemente, la conversión de una secuencia muy larga (o infinita) a un tamaño manejable exige un tipo de distorsión llamado salida, que se manifiesta como pérdida de detalle (resolución del aka) en el DTFT. La opción de una longitud apropiada de la secundario-secuencia es la llave primaria a reducir al mínimo ese efecto. Cuando los datos disponibles (y la hora de procesarlos) es más que la cantidad necesitada para lograr la resolución deseada de la frecuencia, una técnica estándar es realizar DFTs múltiple, por ejemplo para crear a espectrograma. Si el resultado deseado es un espectro de energía y el ruido o la aleatoriedad está presente en los datos, hacer un promedio de los componentes de la magnitud del DFTs múltiple es un procedimiento útil para reducir variación del espectro (también llamado a periodogram en este contexto); dos ejemplos de tales técnicas son Método galés y el método de Bartlett.
Una fuente final de la distorsión (o quizás ilusión) es el DFT sí mismo, porque es justo un muestreo discreto del DTFT, que es una función de un dominio continuo de la frecuencia. Eso puede ser atenuada aumentando la resolución del DFT. Ese procedimiento se ilustra en el tiempo discreto Fourier transforma artículo.
El campo del proceso de la señal numérica confía pesadamente en operaciones en el dominio de la frecuencia (es decir. en el Fourier transforme). Por ejemplo, varios lossy los métodos de la compresión de la imagen y del sonido emplean el Fourier discreto transforman: la señal se corta en segmentos cortos, se transforma cada uno, y entonces los coeficientes de Fourier de los de alta frecuencia, que se asumen para ser unnoticeable, se desechan. El descompresor computa lo contrario transforma basado en este número reducido de los coeficientes de Fourier. (Los usos de la compresión utilizan a menudo una forma especializada del DFT, el coseno discreto transforma o a veces el coseno discreto modificado transforma.)
Fourier discreto transforma es de uso frecuente solucionar ecuaciones diferenciales parciales, donde el DFT se utiliza otra vez como aproximación para Serie de Fourier (que se recupera en el límite de infinito N). La ventaja de este acercamiento es que amplía la señal en exponentials complejos einx, que son funciones propias de la diferenciación: d/dx einx = en einx. Así, en la representación de Fourier, la diferenciación es simple-nosotros apenas se multiplica cerca i n. Una ecuación diferencial linear con coeficientes constantes se transforma en una ecuación algebraica fácilmente soluble. Uno entonces utiliza el DFT inverso para transformar el resultado nuevamente dentro de la representación espacial ordinaria. Tal acercamiento se llama a método espectral.
Suponga que deseamos computar el producto polinómico c(x) = a(x) · b(x). La expresión ordinaria del producto para los coeficientes de c implica una circunvolución (acíclica) linear, donde los índices “no se envuelven alrededor.” Esto se puede reescribir como circunvolución cíclica tomando los vectores del coeficiente para a(x) y b(x) con término constante primero, entonces añadiendo ceros de modo que los vectores del coeficiente del resultado a y b tenga dimensión d > grado (a(x)) + grado (b(x)). Entonces,
Donde c es el vector de los coeficientes para c(x), y el operador de la circunvolución se define tan
Pero la circunvolución se convierte en multiplicación debajo del DFT:
Aquí el producto del vector se toma el elementwise. Así los coeficientes del polinomio del producto c(x) son justos los términos 0,…, grado (a(x)) + grado (b(x)) del vector del coeficiente
Con a Fourier rápido transforma, el algoritmo que resulta toma O (N registro N) operaciones aritméticas. Debido a su simplicidad y velocidad, Algoritmo de Cooley-Tukey FFT, a que se limita compuesto los tamaños, se eligen a menudo para la operación del transformar. En este caso, d se debe elegir como el número entero más pequeño mayor que la suma de los grados polinómicos de la entrada que es factorizable en factores primeros pequeños (e.g. 2, 3, y 5, dependiendo de la puesta en práctica de FFT).
Lo más rápidamente posible sabido algoritmos para la multiplicación de muy grande números enteros utilice el método polinómico de la multiplicación contorneado arriba. Los números enteros se pueden tratar como el valor de un polinomio evaluado específicamente en la base de número, con los coeficientes de corresponder polinómico a los dígitos en esa base. Después de la multiplicación polinómica, un paso de la llevar-propagación de la bajo-complejidad termina relativamente la multiplicación.
| Nota | ||
|---|---|---|
| Cambie de puesto el teorema | ||
| DFT verdadero | ||
| de progresión geométrica fórmula | ||
| de teorema binomial | ||
| xn es un rectangular función de la ventana de W los puntos se centraron encendido x0, donde W es número entero impar, y Xk es a sinc- como la función |
El DFT se puede derivar como truncamiento del Serie de Fourier de una secuencia periódica de impulsos.
Muchas de las características del DFT dependen solamente del hecho eso es a raíz primitiva de la unidad, denotado a veces ωN o WN (de modo que ). Tales características incluyen lo completo, el orthogonality, el Plancherel/Parseval, la periodicidad, la cambio, la circunvolución, y las características del unitarity arriba, así como muchos algoritmos de FFT. Por esta razón, el Fourier discreto transforma puede ser definido usando raíces de la unidad adentro campos con excepción de los números complejos; para más información, vea Fourier discreto transforma (el general).
|
||||||||||||||
|
Custom Search
|
© Copyright 2011 WorldLingo. Reservados todos los derechos.