Если вы хотите аппроксимировать сигнал нулевым порядком, это можно сделать с помощью следующего кода:
Ts = 0.01;
t = -1:0.001:1;
n = t./Ts;
nSampled = nan(size(t));
nSampled(1:10:end) = n(1:10:end);
zCont = @(t)(sin(pi*t/2)+cos(2*pi*t)+1);
zZOH = @(n,Ts)(zCont(floor(n).*Ts));
zDisc = @(n,Ts)(zCont(n.*Ts));
figure;
plot(t,zCont(t),'b','DisplayName','Continuous'); hold on;
plot(t,zZOH(n,Ts),'r','DisplayName','ZOH');
stem(t,zDisc(nSampled,Ts),'k','DisplayName','Discrete');
legend('show');
Это даст вам вывод, как на прилагаемом рисунке.
Вы можете попытаться играть с ceil () или round () вместо floor (), чтобы получить немного другое поведение. Если вам нужны сэмплы только при целочисленных значениях n, это вообще что-то другое и совсем другое для общего случая (из-за ошибки округления в числах с плавающей запятой). Тем не менее: для вашего случая это будет работать путем простой подвыборки индекса, как это делается в nSampled, так как коэффициент подвыборки равен 10. Для нецелочисленного коэффициента подвыборки это не будет работать должным образом.