【问题标题】:Matlab exercise: i just don't get it [closed]Matlab练习:我只是不明白[关闭]
【发布时间】:2013-10-22 20:33:11
【问题描述】:

鉴于信号:

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

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

【问题讨论】:

    标签: matlab signal-processing


    【解决方案1】:
    sinc[n]:=sin(phi*n)/phi*n;
    

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

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

    n = -10:0.01:10;
    

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

    所以现在我们要函数:

    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)
    

    剩下的交给你

    【讨论】:

      猜你喜欢
      • 2022-11-21
      • 1970-01-01
      • 2013-04-05
      • 2023-02-02
      • 2014-04-02
      • 2020-10-23
      • 1970-01-01
      • 1970-01-01
      • 2015-03-25
      相关资源
      最近更新 更多