鉴于信号:
f1[n] = sinc[n] {1[n+5]-1[n-5]}
f2[n] = 1-rect[n]
f3[n] = 1[n]-1[n-5]
在matlab中编写一个程序,您将在其中检查以下属性:
1)sinc[n]:=sin(phi*n)/phi*n;
2)(f1*f2)[n] = (f2*f1)[n];
3)f1[n]*{ f2[n] + f3[n] } = f1[n]*f2[n] + f1[n]*f3[n];
4)(f1*delta)[n] = (delta*f1)[n] = f1[n];
我非常感谢有关如何解决此问题的任何提示/理想。 :)
答案 0 :(得分:1)
sinc[n]:=sin(phi*n)/phi*n;
这肯定不是Matlab语法,最后的;
使它看起来也不像是一个问题。无论如何,你有两个选择。绘制函数以直观地评估等效性或者检查向量。我会用这个证明,然后你可以尝试其他所有。
首先,您需要创建一个样本n
向量,该向量将成为您测试等效性的域(即图的x值)。我要随意选择:
n = -10:0.01:10;
此外,根据Matlab对phi
的定义pi
sinc
,我实际上是假设a = sinc(n);
b = sin(n)./n;
:a
所以现在我们必须履行职责:
b
n
和.
现在是/
每个元素具有相应“y”值的向量。您还会注意到我在plot(n, a, n, b, 'r')
之前使用了all(a == b)
,这意味着元素明智的划分,即将每个元素除以每个对应的元素,而不是矩阵除法,然后是矩阵乘法。
现在让我们绘制它们:
all((a - b) < 0.000001)
最后检查数值等价,我们可以这样做:
{{1}}
但是(这可能有点超出你的问题的范围,但重要的是要知道)你实际上永远不应该检查浮点数的绝对等价,因为内部计算中由于不同的截断而得到精度错误(因为你的计算机如何存储浮点数)。因此,最好还是检查两个数字之间的差异是否小于某个微小的阈值。
{{1}}
我会把剩下的留给你了