R语言中函数的Z变换
我有一个函数f(x),它给出了时域的结果。我想得到这个函数的z变换,这样我可以比较两者。我知道这在MATLAB中很容易计算。然而,我想知道是否有一种方法可以在R中通过一个包或从头开始编写代码来实现这一点。之所以使用R,是因为我已经在R中完成了大部分必需的工作和其他计算。(加上R是免费的) 我搜索并找到了一些使用R语言中函数的Z变换,r,matlab,signal-processing,R,Matlab,Signal Processing,我有一个函数f(x),它给出了时域的结果。我想得到这个函数的z变换,这样我可以比较两者。我知道这在MATLAB中很容易计算。然而,我想知道是否有一种方法可以在R中通过一个包或从头开始编写代码来实现这一点。之所以使用R,是因为我已经在R中完成了大部分必需的工作和其他计算。(加上R是免费的) 我搜索并找到了一些使用scale的建议。然而,我认为这与数据有关,而不是函数。此外,我还发现了一个包GeneNet,它有一个名为z-transform的函数。然而,它给出了一个数字向量。我想得到z变换作为z的函
scale
的建议。然而,我认为这与数据有关,而不是函数。此外,我还发现了一个包GeneNet
,它有一个名为z-transform的函数。然而,它给出了一个数字向量。我想得到z变换作为z的函数
根据定义,z变换由以下公式计算:
为简便起见,请更新:
如果我们有f(x)=x,其中x=0,1,2,3,4,….100。
我想得到给定函数f(x)的z变换
基于上述z变换的定义,通过替换:
x(z) = SUM from n=0 to n=100 of (Xn) *(Z ^-n)
对于n=0=>x(z)=(0)(z^-0)
对于n=1=>x(z)=0+(1)(z^-1)
对于n=2=>x(z)=0+(1)(z^-1)+(2)(z^-2)
…
。
有什么建议吗 似乎有两个问题:计算
f(x)=XOR 16,然后计算结果的z变换
这里有一个(更新的)z变换函数,它将在定义的x上工作,可选地是任意的n
向量(默认假设n
从0开始,对于x
的每个值增加1)。现在,它返回一个可用于计算各种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
我相信有一种方法可以在R中实现这一点,如果它很容易编码到Matlab中的话。你试过使用数据帧吗?在Matlab中,它们有内置函数。不,我没有,我也不确定它是否可行,因为我们需要在求和中有变量z!使用scale
的建议是术语上的混淆,因为R主要用于统计数据,无论是谁假设你在计算a。这在R中应该很容易,但我很难将使用x、z和n的z变换定义与使用f(t)、t和y的小R代码相匹配。看起来可能是y
是xi
并且总是16,而t=0:100
相当于n
?f(t)=t XOR y与什么有什么关系?我同意,一般形式的定义,t等于n,n的x等于f(t)。Y始终是一个常量值=16。我将更新这个问题。Chirp的z变换与快速傅里叶变换直接相关,其中有一个包fft
。你能做到这一点吗?n Xor 16对我来说不是问题,我可以计算出来。是的,主要问题是z变换。我注意到你的回答中使用了z=16。不是。期望的答案应该是(z)的函数。也许你可以用简短的示例输入和输出更新你的问题?目标是否是一个函数对象,以便您可以执行my_z_trans=ztransform(x,n)
,然后针对z的任何值对结果进行评估,例如,my_z_trans(5)
?@simplenesy将其更改为与我描述的行为相匹配。在你的问题中不清楚为什么你要把n
上的每一个词都拼出来,而它们都只是求和。@SimpleEasy最后一个错误修复:忘记从ztransform
的参数列表中删除z
。现在修好了,谢谢。我试图遵循一般的定义。更新后忘记更改它!。