(零)填充matlab数组的最简单方法是什么?
即给定[1,2,3,4]
和长度6返回[1,2,3,4,0,0]
背景
我有一个数据数组,我想在对数据运行 fft 之前应用一个窗口函数。
我曾经将数据直接传递给 fft,这会将零填充到 2 的下一个幂,但现在我需要在 fft 之前将它的零填充,这样我就可以乘以窗口函数。
fs = 100; % Sample frequency (Hz)
t = 0:1/fs:10-1/fs; % 10 sec sample
x = (1.3)*sin(2*pi*15*t) ... % 15 Hz component
+ (1.7)*sin(2*pi*40*(t-2)) ... % 40 Hz component
+ (2.5)*randn(size(t)); % Gaussian noise;
m = length(x); % Window length
n = pow2(nextpow2(m)); % Transform length
w = barthannwin( n ); % FFT Window
y = fft(data, n); % DFT
windowed_data = x*w ; % Dimensions do not match as x not padded
y = fft(windowed_data, n); % DFT
我知道padarray作为图像处理工具箱的一部分,我没有。