信号如何与窗函数相乘?

信息处理 fft 窗函数 窗户
2022-02-04 17:18:04

输入信号如何与 Hamming、Hanning、Blackman 等窗口函数相乘?

我尝试使用 Blackmann 窗函数将 MHz}处采样输出图是 10 MHz100 MHz在此处输入图像描述

  • 乘法是如何进行的?

输入信号是行矩阵,Blackman 窗口在列矩阵中生成样本。乘法生成一个矩阵,即输入信号的一个样本与窗函数的 64 个样本相乘。对于一个特定的点样本,有 64 个样本值。我打算用填充零计算 128 点 FFT。1×6464×164×64

  • 那么对于一个特定的样本点,应该考虑哪个值来计算 FFT?

这是我的代码:

N = 64; % signal length (power of 2)
T = 10*(10^-9) ; % sampling period (and rate) is set to 1
A = 1; % sinusoid amplitude
phi = 0; % phase of zero
f = 10*(10^6); % frequency (under Nyquist limit)
nT = [0:N-1]*T; % discrete time axis
w = blackman(N,'periodic');
x1 = A*cos(2*pi*f*nT);
x = w*x1  ; % windowed signal
subplot (311);
stem (x1);
wp = [w;zeros((zpf-1)*N,1)];
subplot (313);
stem (x);
subplot (312);
stem (w);
disp (x1);
disp (w);
disp (x);
1个回答

hamming(N)等 Matlab 窗函数矩阵(列向量)中返回点 Hamming 窗序列Nw[n]N×1

因此,如果您的序列以大小为的行向量表示,那么为了获得逐个样本的产品,您应该转置或其他,因此它们的尺寸允许在两者之间进行正确的逐个样本相乘,并产生输出序列表示在大小为的矩阵中或取决于你转置了哪一个。x[n]1×Nx[n]w[n]w[n]x[n]v[n]=w[n]x[n]N×11×N

v0 = x.*w      % x: Nx1, w: Nx1, v0: Nx1
v1 = x .* w'   % x: 1xN, w: Nx1, transpose w => v1: 1xN
v3 = x' .* w   % x: 1xN, w: Nx1, transpose x => v3: Nx1

请注意,如果转置信号是值,则应使用共轭转置

v1 = conj(x').* w  % x[n] was complex valued...

另请注意,逐个样本产品是由 Matlab 下的操作执行的;.

  v = x .* w    % is a sample by sample product implementing v[n] = x[n]w[n]

如果省略句点并单独 ,则在涉及向量的情况下,您将得到矩阵积点积。

对于这种情况,当您有两个向量,大小为大小为时,它们的矩阵乘积将产生大小为xN×1w1×NN×N

v = x * w    % x: N x 1, w: 1 x N => v: N x N