Этот пример показывает несколько способов симулировать выход системы дискретизации и удержания путем увеличения дискретизации и фильтрации сигнала.
Создайте синусоидальный сигнал. Задайте частоту дискретизации так, чтобы 16 выборки соответствовали в точности одному периоду сигнала. Нарисуйте диаграмму лист-ствол сигнала. Наложите ступенчатый график для визуализации sample-and-hold.
fs = 16; t = 0:1/fs:1-1/fs; x = .9*sin(2*pi*t); stem(t,x) hold on stairs(t,x) hold off
Увеличьте частоту сигнала в четыре раза. Постройте график результата вместе с исходным сигналом. upsample
увеличивает частоту дискретизации сигнала путем добавления нулей между существующими выборками.
ups = 4; fu = fs*ups; tu = 0:1/fu:1-1/fu; y = upsample(x,ups); stem(tu,y,'--x') hold on stairs(t,x) hold off
Фильтр с конечной импульсной характеристикой фильтром скользящего среднего, чтобы заполнить нули значениями sample-and-hold.
h = ones(ups,1); z = filter(h,1,y); stem(tu,z,'--.') hold on stairs(t,x) hold off
Такое же поведение можно получить с помощью функции MATLAB ® interp1
с интерполяцией по ближайшему соседу. В этом случае необходимо переместить источник, чтобы выстроить последовательность.
zi = interp1(t,x,tu,'nearest'); dl = floor(ups/2); stem(tu(1+dl:end),zi(1:end-dl),'--.') hold on stairs(t,x) hold off
Функция resample
приводит к тому же результату, когда задается нуль последнего входного параметра.
q = resample(x,ups,1,0); stem(tu(1+dl:end),q(1:end-dl),'--.') hold on stairs(t,x) hold off