how to do zero padding for a vector?
조회 수: 109 (최근 30일)
이전 댓글 표시
please help. i have just started learning matlab .
댓글 수: 0
채택된 답변
추가 답변 (1개)
John BG
2016년 8월 8일
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
참고 항목
카테고리
Help Center 및 File Exchange에서 Transforms에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!