how to do zero padding for a vector?
141 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
please help. i have just started learning matlab .
0 Commenti
Risposta accettata
Più risposte (1)
John BG
il 8 Ago 2016
Grupeet
the padding you may have in mind is the actual interpolation of zeros blocks after each symbol.
A=[1 2 3]
B=[A zeros(1,3)]
length of the padding
N=4
then
B=zeros(1,N*length(A))
=
0 0 0 0 0 0 0 0 0 0 0 0
B([1:N:end])
=
0 0 0
B([1:N:end])=A
=
1 0 0 0 2 0 0 0 3 0 0 0
In the example, appeneded DTFT code
it is clearly mentioned, the fft(x,2000) one-off zero padding in frequency domain helps reach the correct fft amplitude plot
Without FFT frequency zero padding
Fs = 1e3;
t = 0:0.001:1-0.001;
x = cos(2*pi*100*t)+sin(2*pi*202.5*t);
xdft = fft(x);
xdft = xdft(1:length(x)/2+1);
xdft = xdft/length(x);
xdft(2:end-1) = 2*xdft(2:end-1);
freq = 0:Fs/length(x):Fs/2;
figure(1);plot(freq,abs(xdft))
hold on;
figure(1);plot(freq,ones(length(x)/2+1,1),'LineWidth',2)
xlabel('Hz');ylabel('Amplitude');hold off;

with FFT frequency zero padding
xdft = fft(x,2000);
xdft = xdft(1:length(xdft)/2+1);
xdft = xdft/length(x);
xdft(2:end-1) = 2*xdft(2:end-1);
freq = 0:Fs/(2*length(x)):Fs/2;
figure(2);plot(freq,abs(xdft));
hold on;
figure(2);plot(freq,ones(2*length(x)/2+1,1),'LineWidth',2)
xlabel('Hz'); ylabel('Amplitude');
hold off;

Gurpreet would you please be so kind to mark my answer as Accepted Answer?
To any other reader, please if you find this answer of any help solving your question,
please click on the thumbs-up vote link,
thanks in advance
John BG
Vedere anche
Categorie
Scopri di più su Transforms in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!