Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R语言中函数的Z变换_R_Matlab_Signal Processing - Fatal编程技术网

R语言中函数的Z变换

R语言中函数的Z变换,r,matlab,signal-processing,R,Matlab,Signal Processing,我有一个函数f(x),它给出了时域的结果。我想得到这个函数的z变换,这样我可以比较两者。我知道这在MATLAB中很容易计算。然而,我想知道是否有一种方法可以在R中通过一个包或从头开始编写代码来实现这一点。之所以使用R,是因为我已经在R中完成了大部分必需的工作和其他计算。(加上R是免费的) 我搜索并找到了一些使用scale的建议。然而,我认为这与数据有关,而不是函数。此外,我还发现了一个包GeneNet,它有一个名为z-transform的函数。然而,它给出了一个数字向量。我想得到z变换作为z的函

我有一个函数f(x),它给出了时域的结果。我想得到这个函数的z变换,这样我可以比较两者。我知道这在MATLAB中很容易计算。然而,我想知道是否有一种方法可以在R中通过一个包或从头开始编写代码来实现这一点。之所以使用R,是因为我已经在R中完成了大部分必需的工作和其他计算。(加上R是免费的)

我搜索并找到了一些使用
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
。现在修好了,谢谢。我试图遵循一般的定义。更新后忘记更改它!。