Matlab中的离散函数

我有以下功能和值集:
z(t):   {R → [-2,3] | z(t) = sin(0.5×π×t) + cos(2×π×t) + 1

t = [-1 : 0.001 : 1]
我需要确定
z(n×Ts) = z(n)
,使用采样周期
Ts=0.01
,因此离散化该功能。 我尝试使用d2d,但是我所理解的只能应用于zpk函数。 还有其他办法吗?     
已邀请:
如果您想要零序保持近似信号,可以通过以下代码完成:
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.对于非整数子采样因子,这将无法正常工作。     

要回复问题请先登录注册