如何零填充matlab数组?

Mor*_*gan 7 matlab

(零)填充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
Run Code Online (Sandbox Code Playgroud)

我知道padarray是图像处理工具箱的一部分,我没有.

Den*_*din 9

编辑

这种方法对于矢量来说可能更好,因为它们在转置时不会中断,请注意它会改变原始矢量,这可能是不可取的:

myVec = 1:7;
myVec(end+3)=0
Run Code Online (Sandbox Code Playgroud)

或者,您可以只连接零和您拥有的向量,并使用它创建一个新变量.

myVec = 1:7;
requiredpadding = 10-7;
myVecPadded=[myVec zeros(1,requiredpadding)]
Run Code Online (Sandbox Code Playgroud)