Matlab练习:我只是不明白

时间:2013-10-15 06:15:27

标签: matlab signal-processing

鉴于信号:

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];

我非常感谢有关如何解决此问题的任何提示/理想。 :)

1 个答案:

答案 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}}

我会把剩下的留给你了