我有一个函数f(x),它给出了时域结果。我想获得该函数的z变换,以便我可以比较它们。我知道在MATLAB中很容易计算出来。但是,我想知道是否有办法在R中通过包或从头开始编写代码。使用R的原因是因为我在R中完成了大部分所需的工作和其他计算(Plus R是免费的)
我搜索并找到了一些使用scale
的建议。但是,我认为这与数据有关而不是功能。另外,我找到了一个包GeneNet
,它有一个叫做z-transform的函数。但是,它给出了一个数字向量。我想将z变换作为z的函数。
简化更新:
如果我们有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)
...
..
有什么建议吗?
答案 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