-3

给定信号:

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

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

4

1 回答 1

1
sinc[n]:=sin(phi*n)/phi*n;

这当然不是 Matlab 语法,;最后的 也使它看起来不像一个问题。无论如何,你有两个选择。绘制函数以直观地评估等效性或检查向量。我会用这个来演示,然后你可以尝试所有其他的。

首先,您需要创建一个样本n向量,该向量将作为您测试等价性的域(即您的绘图的 x 值)。我会随意选择:

n = -10:0.01:10;

此外,我将假设phi您实际上是pi基于 Matlab 的定义sinc: http: //www.mathworks.com/help/signal/ref/sinc.html

所以现在我们必须函数:

a = sinc(n);
b = sin(n)./n;

a现在b是向量,对于 的每个元素都有一个对应的“y”值n。您还会注意到我在.之前使用了 a /,这意味着元素明智除法,即每个元素除以每个对应元素,而不是矩阵除法,矩阵除法是先求逆,然后是矩阵乘法。

现在让我们绘制它们:

plot(n, a, n, b, 'r')

最后要检查数值等价性,我们可以这样做:

all(a == b)

但是(这可能有点超出您的问题的范围,但重要的是要知道)您实际上不应该检查浮点数的绝对等价,因为由于内部计算中的不同截断而导致精度错误(因为如何您的计算机存储浮点数)。因此,最好检查两个数字之间的差异是否小于某个微小的阈值。

all((a - b) < 0.000001)

剩下的交给你

于 2013-10-15T06:57:02.370 回答