Para obtener y[n]= x1[n] U128 x2[n] ,realizo obtengo la DTF Y(k) = X1(k) X2(k) y luego
Realizo la IDT para obtener y[n].
La X1(W) del triángulo (ventana de Barlett) , va a ser un sync2 con 32 lóbulos y la X1(k) va a consistir de 128 muestras de X1(W).
La X2(W) , va a estar constitudida por dos d y y la X2(k) va a consistir de 128 muestras de X2(W), entonces a lo sumo me quedarán las dos mismas d .
Luego la multiplicación de las dos d de X2(k) por las d que forman X1(k) me va a dar Y(k), que serán las d de X1(k) ,escaladas por la amplitud de las d de X1(k) que se encuentren en la mismas posiciones.
Luego realizo la IDFT de esos dos valores (los 126 restantes son nulos).
Entonces vemos que las d de X2(k) coinciden con 0 (ceros) de X1(k), lo cual resulta
Y(k) = 0 ¼ k. u y(n) = 0 ¼ n.
Pero, al considerar que el coseno esta ventaneado (pues para realizar la DFT tengo que tomar 128 muestras) X1(k)X2(k) no da cero ¼ k u no se cumple y(n)=0 ¼ n
"Para obtener y[n]= x1[n] U128 x2[n] ,realizo obtengo la DTF Y(k) = X1(k) X2(k) y luego
Realizo la IDT para obtener y[n].
La X1(W) del triángulo (ventana de Barlett) , va a ser un sync2 con 32 lóbulos y la X1(k) va a consistir de 128 muestras de X1(W)."
(esto está todo bien)
"La X2(W) , va a estar constitudida por dos d y y la X2(k) va a consistir de 128 muestras de X2(W), entonces a lo sumo me quedarán las dos mismas d ."
Esto está mal. La segunda señal era una sección de un coseno, no el coseno infinito. Esto se van a dar cuenta cuando practiquen un poco más, porque nunca en la vida se te va a ocurrir considerar que una señal de longitud infinita pueda tener DFT. Es más, en la realidad, las señales de longitud infinita ni siquiera existen. Si aprendimos la transformada continua de señales de longitud infinita, es porque son idealizaciones que nos ayuda a entender ciertas cosas, nada más.
Entonces, el espectro de X2(W) es la convolución de las deltas con el espectro de la ventana que recorta en el tiempo la señal, que es una sinc de 127 ceros, como vos decís. Las 128 muestras de ese espectro caen efectivamente en los ceros de la sinc, así que no hay problema. Las únicas muestras que no caen en ceros de esta transformada son los lugares donde estaban las deltas, pero ahí hay un cero de la tranformada de X1(W), con lo cual toda la DFT vale cero.
Esta pregunta que hacés es muy importante, y no hacerlo bien es un error conceptual grave. Es menos grave equivocarse en hacer la DFT, o que el resultado no te haya dado todos ceros, o que te equivoques en una convolución circular. Eso es hacer mal una cuenta. Lo otro es falta de conocimiento. Saludos,
Patricia
Patricia:
Gracias por tu comentarios. La duda me surgió al realizar la convolución circular con Mathlab ,no da y(n)=0 para todo n (Como se supone que daria si toda la DFT Y(k) es nula).
for index = 1:1:32
x1(index)=index
end
for index = 33:1:63
x1(index)=64-index
end
for index = 64:1:128
x1(index)=0
end
for index = 1:1:128
x2(index)=cos(2*pi*(index-1)/16)
end
plot(x1)
hold all
plot(x2)
y = cconv(x1,x2,128)
plot(y)
title('y = cconv(x1,x2,128)')
y = cconv(x1,x2,128)
plot(y)
title('y = cconv(x1,x2,128)')
tampoco da y(n) = 0 con
for index = 1:1:32
x1(index)=index-1
end
for index = 33:1:63
x1(index)=63-index
end
for index = 64:1:128
x1(index)=0
end
for index = 1:1:128
x2(index)=cos(2*pi*(index-1)/16)
end
plot(x1)
hold all
plot(x2)
y = cconv(x1,x2,128)
plot(y)
title('y = cconv(x1,x2,128)')
ni tampoco con
for index = 1:1:33
x1(index)=index-1
end
for index = 34:1:64
x1(index)=65-index
end
for index = 65:1:128
x1(index)=0
end
for index = 1:1:128
x2(index)=cos(2*pi*(index-1)/16)
end
plot(x1)
hold all
plot(x2)
y = cconv(x1,x2,128)
plot(y)
title('y = cconv(x1,x2,128)')
x1 = [1:32 31:-1:0 zeros(1,64)];
x2 = cos(2*pi/16*[0:127]);
subplot(411);stem([0:127],x1);title('x_1');
subplot(412);stem([0:127],x2);title('x_2');
subplot(413);stem([0:127],real(ifft(fft(x1).*fft(x2))));title('conv circular por multip. de DFTs')
y = conv(x1,x2);
ycirc = y(1:128) + [y(129:end) 0];
subplot(414);stem([0:127],ycirc);title('conv circular periodizando conv. lineal')
(yo no tengo en el octave una función cconv, así que no sé qué hace).
Eso que da es cero para un cálculo de precisión finita.
Saludos,
Patricia
gracias de nuevo, me es muy util el código que enviaste,pues muestra claramente la periodización de la convolución lineal.
Despues, contraste cconv haciendo la convolución circular con una planilla excell .Entonces me di cuenta que lo que estaba viendo era el error de truncamiento y que puede resultar util saber que nivel tiene ese "ruido" .
Gracias.
Carlos.