Fast Fourier Transform Zero Padding
显示 更早的评论
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 个评论
Matt J
2021-1-23
I cannot see anywhere in your code where you have attempted zero-padding.
采纳的回答
更多回答(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 个评论
Walter Roberson
2021-1-23
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
2021-1-23
Walter Roberson
2021-1-23
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.
类别
在 帮助中心 和 File Exchange 中查找有关 Fourier Analysis and Filtering 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



