How do I invert nested functions in MATLAB?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Ak K
el 14 de Ag. de 2019
Editada: Walter Roberson
el 15 de Ag. de 2019
If I have a variable (let's call it a) and then I apply the following multiple functions to transform it into a second variable, (b), how would I reverse it?
b = fftshift(fftn(fftshift(a)));
I tried doing the following:
c = ifftshift(ifftn(ifftshift(b)));
If this had worked, c would have been equal to a (the initial, non-transformed data set). Why doesn't it? Is there a better, more universal way of reversing the function initially applied to A? I tried finverse, but it didn't work in the way I used it because fftshift works on doubles, and I was using a sym-type variable when I tried getting the inverse.
Any help is appreciated
0 comentarios
Respuesta aceptada
KALYAN ACHARJYA
el 14 de Ag. de 2019
Editada: KALYAN ACHARJYA
el 14 de Ag. de 2019
"If I have a variable (let's call it a) and then I apply the following multiple functions to transform it into a second variable, (b), how would I reverse it?"
a=magic(3)
b = fftshift(fftn(fftshift(a)));
c = ifftshift(ifftn(ifftshift(b)))
Result:
a =
8 1 6
3 5 7
4 9 2
c =
8.0000 1.0000 6.0000
3.0000 5.0000 7.0000
4.0000 9.0000 2.0000
3 comentarios
Walter Roberson
el 14 de Ag. de 2019
Editada: Walter Roberson
el 15 de Ag. de 2019
Floating point roundoff. I suggest that you subtract the two versions and look at the difference.
fft involves the use of transcendental trig functions, so in order for the inverse to be always bit for bit exact, you would need to use indefinite precision.
You can use counting arguments to prove that if you use finite floating point that asin(sin(x)) cannot always exactly equal x even within the primary period.
Más respuestas (0)
Ver también
Categorías
Más información sobre Fourier Analysis and Filtering en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!