上采样和绘制频域信号

时间:2016-04-20 22:58:29

标签: matlab fft sample

我想在频域上对5个信号进行上采样,然后绘制(干)它。我想到了如何上采样,

Fk=(1/5)*upsample(ak_new,5);

现在这会创建一个比原始矢量大5倍的矢量,我需要采用此信号的逆傅里叶级数

Fn=(Fk*(exp((1i*2*pi/N*n'*n))));

其中n是示例向量(-1000:1000),正如您所看到的,我无法进行转换,因为nFk的大小不再相同。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您需要在频域上以类似的“上采样”频率矢量绘制上采样信号。

如果您的初始频率向量是-1000, -999, -998 ...,那么现在应该是-1000, -999.8, -999.6

这是一个简单的例子:

Fs = 2000;              % Sampling frequency                    
T = 1/Fs;               % Sampling period       
L = 2000;               % Length of signal
t = (0:L-1)*T;          % Time vector

S = sin(2*pi*400*t);    % Signal

Y = fft(S);
ak_new = fftshift(abs(Y/L));        % Initial signal in frequency domain
Fk = upsample(ak_new,5);            % Upsampled signal

f   = (Fs/L)*(-L/2:  1  :L/2-1);    % Initial frequency vector
fup = (Fs/L)*(-L/2:(1/5):L/2-1/5);  % Upsampled frequency vector

subplot(2, 1, 1);
stem(f, ak_new);
title('Before upsampling');

subplot(2, 1, 2);
stem(fup, Fk);
title('After upsampling');

upsampling