R语言中函数的Z变换

时间:2015-10-29 16:41:44

标签: r matlab signal-processing

我有一个函数f(x),它给出了时域结果。我想获得该函数的z变换,以便我可以比较它们。我知道在MATLAB中很容易计算出来。但是,我想知道是否有办法在R中通过包或从头开始编写代码。使用R的原因是因为我在R中完成了大部分所需的工作和其他计算(Plus R是免费的)

我搜索并找到了一些使用scale的建议。但是,我认为这与数据有关而不是功能。另外,我找到了一个包GeneNet,它有一个叫做z-transform的函数。但是,它给出了一个数字向量。我想将z变换作为z的函数。

根据定义z-transform计算自: enter image description here

简化更新: 如果我们有f(x)= x, where x= 0,1,2,3,4,....100.我想得到给定函数f(x)的z变换。

基于上述z变换的定义和替换:

   x(z) = SUM from n=0 to n=100 of (Xn) *(Z ^-n) 

for n=0 => x(z)= (0) (Z^-0)

for n=1 => x(z)= 0 + (1) (z^-1)

for n=2 => x(z)= 0 + (1) (z^-1) + (2) (z^-2)

...

..

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

好像你有两个问题:计算f(x) = x XOR 16,然后计算结果的z变换。

这是一个(更新的)z变换函数,它可以对定义的x任意一个n向量起作用(默认假设n从0开始,每个值向上一个x)。它现在返回一个可用于评估各种z值的函数:

ztransform = function(x, n = seq_along(x) - 1) {
    function(z) sum(x * z ^ -n)
}

my_z_trans = ztransform(x = 0:100, n = 0:100)
my_z_trans(z = 1)
# [1] 5050
my_z_trans(z = 2)
# [1] 2
my_z_trans(z = 3)
# [1] 0.75