Fast Fourier Transform Zero Padding
Ältere Kommentare anzeigen
Hi all,
I am using the code shown below to plot the FFT of some data. My issue is that the "resolution" seems poor, as the x axis is in increments of 0.2. I would like much finer plotting of points, and have recently seen the Zero Padding method. However, everytime I try to implement other solutions on MATLAB answers, I cannot seem to increase the resolution. Could anyone help me with the necessary code for my specific case?
O2_exp = [0.0247
0.2372
1.9171
1.5570
0.8016
0.5572
1.2185
1.3601
1.0067
0.7767
1.0244
1.1619
1.0210
0.8791
0.9595
1.0592
1.0274
0.9507
0.9735
1.0303
1.0286
0.9912
0.9924
1.0137
1.0143
0.9982
0.9996
1.0097
1.0174
1.0062
1.0052
1.0115
1.0177
1.0131
1.0150
1.0117
1.0182
1.0153
1.0206
1.0177
1.0243
1.0200
1.0221
1.0207
1.0235
1.0256
1.0275
1.0237
1.0248
1.0264];
figure
Fs = 1;
L = length(O2_exp);
Y = fft(O2_exp);
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
f = Fs*(0:(L/2))/L;
plot(f(2:end),P1(2:end)/max(P1(2:end)),'color','red','linewidth',4)
2 Kommentare
Matt J
am 23 Jan. 2021
I cannot see anywhere in your code where you have attempted zero-padding.
Akzeptierte Antwort
Weitere Antworten (1)
Pad_factor = 5;
O2_exp = [0.0247
0.2372
1.9171
1.5570
0.8016
0.5572
1.2185
1.3601
1.0067
0.7767
1.0244
1.1619
1.0210
0.8791
0.9595
1.0592
1.0274
0.9507
0.9735
1.0303
1.0286
0.9912
0.9924
1.0137
1.0143
0.9982
0.9996
1.0097
1.0174
1.0062
1.0052
1.0115
1.0177
1.0131
1.0150
1.0117
1.0182
1.0153
1.0206
1.0177
1.0243
1.0200
1.0221
1.0207
1.0235
1.0256
1.0275
1.0237
1.0248
1.0264];
plot(O2_exp); title('original');
nO2 = numel(O2_exp);
reconstructed = ifft(fft(O2_exp,2*nO2));
plot(reconstructed); title('reconstructed nfft')
%caution: the details that follow are only valid when the
%length of the signal is even, and the signal is purely real.
F = fft(O2_exp);
Fpad = [F(1); F(2:end/2+1); zeros(Pad_factor*nO2-1,1); flipud(conj(F(2:end/2+1)))];
reconstructed_center_padded = ifft(Fpad);
plot(reconstructed_center_padded); title('reconstructed center padded')
3 Kommentare
Walter Roberson
am 23 Jan. 2021
Note that zero padding in the frequency domain is equivalent to convolution of the signal with a sync function, so it is no illusion that the reconstructed center padded version has more bumps: it really does have more bumps, introduced by the sync signal convolution.
Truly increasing the resolution involves introducing extra information. Otherwise you are at best smoothing the signal to make it look nice, which does the opposite, removes information.
kyle mani
am 23 Jan. 2021
Walter Roberson
am 23 Jan. 2021
You can change how you process to get it to plot at most any increment. The problem is that your output stops becoming meaningful. If you need finer resolution then you need more data.
Kategorien
Mehr zu Fourier Analysis and Filtering finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



