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
私は、持っていないImageProcessingToolboxの一部としてpadarrayを知っています。