How does resample exactly work?

조회 수: 13 (최근 30일)
Tanja Dorst
Tanja Dorst 2020년 11월 17일
답변: Mathieu NOE 2020년 11월 17일
Hi,
I try to find out, what resample is exactly doing.
Therefore, I calculate the filter coefficients with resample.
Then, I construct a constant signal and calculate the steady state zi with the filter, the constant signal and the filter coefficients. After that, I use the filter with the data and zi to get the filtered signal.
I assumed, that the filtered signal and the resampled signal should be the same, but it is not the case. What do I wrong?
[y,b] = resample(data', 1, factor);
const_signal = data(1)*ones(1,length(b));
[~,zi] = filter(b,1.0,const_signal);
x = filter(b,1.0,data,zi);
x = x(1:factor:end);
In this code, x and y are not the same. But I do not understand, why?
Best regards :)

답변 (1개)

Mathieu NOE
Mathieu NOE 2020년 11월 17일
hello
everything is explained if you type help resample
resample Resample uniform or nonuniform data to a new fixed rate.
Y = resample(X,P,Q) resamples the values, X, of a uniformly sampled
signal at P/Q times the original sample rate using a polyphase
antialiasing filter. If X is a matrix, then resample treats each
column as an independent channel.
have you tried the examples ?
% Example 1:
% Resample a sinusoid at 3/2 the original rate.
tx = 0:3:300-3; % Time vector for original signal
x = sin(2*pi*tx/300); % Define a sinusoid
ty = 0:2:300-2; % Time vector for resampled signal
y = resample(x,3,2); % Change sampling rate
plot(tx,x,'+-',ty,y,'o:')
legend('Original','Resampled');
xlabel('Time')
% Example 2:
% Resample a non-uniformly sampled sinusoid to a uniform 50 Hz rate.
Fs = 50;
tx = linspace(0,1,21) + .012*rand(1,21);
x = sin(2*pi*tx);
[y, ty] = resample(x, tx, Fs);
plot(tx,x,'+-',ty,y,'o:')
legend('Original','Resampled');
xlabel('Time')

카테고리

Help CenterFile Exchange에서 Multirate Signal Processing에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by