ifft returns NaN when plotting the impulse response function
18 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello, I seem to be having issues using MATLAB's fft and ifft functions.
An impulse response function h(t) has the following formula: inj(t) * h(t) = AIF(t). We know that the graphs of inj(t) and AIF(t) are as followed. I wrote the following code to do the deconvolution but h(t) in the output graph is zero.
I realized that the h returns from ifft is NaN but I don't know how to correct the code. Thanks!



load("AIF_1.mat");
load("inj_1.mat");
inj_1 = inj(201:2400);
inj1_FFT = fft(inj_1);
AIF_1 = AIF(201:2400);
AIF1_FFT = fft(AIF_1);
h_FFT = AIF1_FFT ./ inj1_FFT;
h_FFT(isnan(h_FFT)==1) = 0;
h = ifft(h_FFT);
X = zeros(1,200)
ht = [X,h];
plot(time,real(ht));title('h(t)');
0 commentaires
Réponse acceptée
Paul
le 10 Avr 2023
Hi 粤轩 杨,
It looks like h_FFT also has a few values that are inf, in addition to the NaNs
load("AIF_1.mat");
load("inj_1.mat");
inj_1 = inj(201:2400);
inj1_FFT = fft(inj_1);
AIF_1 = AIF(201:2400);
AIF1_FFT = fft(AIF_1);
h_FFT = AIF1_FFT ./ inj1_FFT;
sum(isnan(h_FFT))
sum(isinf(h_FFT))
% quick correction to get things to run, not sure if this is really what
% should be done
inj1_FFT(inj1_FFT == 0) = eps;
h_FFT = AIF1_FFT ./ inj1_FFT;
sum(isnan(h_FFT))
sum(isinf(h_FFT))
h = ifft(h_FFT);
X = zeros(1,200);
ht = [X,h];
plot(time,real(ht));title('h(t)');
Plus de réponses (1)
Voir également
Catégories
En savoir plus sur Transforms dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

