-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の構文ではなく;、最後の は質問のようにも見えません。とにかく、2 つのオプションがあります。関数をプロットして等価性を視覚的に評価するか、ベクトルをチェックします。これでデモを行います。その後、他のすべてを試すことができます。

n最初に、同等性をテストするドメインとなるサンプル ベクトルを作成する必要があります (つまり、プロットの x 値)。私は任意に選択するつもりです:

n = -10:0.01:10;

また、Matlab の定義に基づいてphi実際に意図されていると仮定します: http://www.mathworks.com/help/signal/ref/sinc.htmlpisinc

したがって、関数を使用する必要があります。

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

abは、 の各要素に対応する「y」値を持つベクトルになりましたn.の前にa を使用したことにも気付くでしょう。/これは要素ごとの除算、つまり逆行列とそれに続く行列乗算である行列除算ではなく、対応する各要素で各要素を除算することを意味します。

それらをプロットしましょう:

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

最後に、数値の等価性を確認するには、次のようにします。

all(a == b)

しかし(これはおそらくあなたの質問の範囲外ですが、知っておくことが重要です)内部計算での切り捨てが異なるために精度エラーが発生するため、実際にはそのような浮動小数点数の絶対等価性を決してチェックしないでください(あなたのコンピュータは浮動小数点数を保存します)。したがって、代わりに、2 つの数値の差が小さなしきい値よりも小さいことを確認することをお勧めします。

all((a - b) < 0.000001)

あとはお任せします

于 2013-10-15T06:57:02.370 に答える