デジタル信号処理実験2:共役対称性とDFTの応用

目的

1.実数列のDFT共役対称性の特性を習得します。

2.実数シーケンスDFTの共役対称性を適用して、時間領域シーケンスが実数であることを確認することにより、周波数領域シーケンスを構築する方法を学びます。

実験原理

1.DFTの共役対称性

 

の:

2.有限長の実数列のDFTの共役対称性

長さNの有限長の実数列として設定円共役対称列ですこの対称性は次のように表すことができます 。

実験内容

1. DFTの共役対称性を使用して、2つの効率的なアルゴリズムを設計します。これにより、N点DFTを計算して、2つの実数列のN点DFTを取得できます。推定:

(1)アルゴリズム1:、、その16点離散フーリエ変換を計算します(ヒント:N = 16の場合、

得られた結果が正しいかどうかは、合計を個別に計算し、IDFTメソッドを合計することによって 検証されます。

clc,clear,close all
N=16;
n=0:1:N-1;
x1=cos(pi/4*n);
x2=sin(pi/8*n);
xn=x1+x2;
Xk=fft(xn,16);
X1=real(Xk);
X2=imag(Xk);
x11=ifft(X1,16);
x22=ifft(1i*X2,16);

subplot(611)
stem(n,X1)
xlabel('k');
ylabel('real(X1)');

subplot(612)
stem(n,X2)
xlabel('k');
ylabel('real(X2)');

subplot(613)
stem(n,x1);
xlabel('n');
ylabel('x1');

subplot(614)
stem(n,x11);
xlabel('n');
ylabel('x1恢复');

subplot(615)
stem(n,x2);
xlabel('n');
ylabel('x2');

subplot(616)
stem(n,x22);
xlabel('n');
ylabel('x2恢复');

実験的結論1-1の関係

答え:

(2)アルゴリズム2:(1)を繰り返します。

clc,clear,close all
N=16;
n=0:1:N-1;
k=0:1:N-1;
x1=cos(pi/4*n);
x2=sin(pi/8*n);
xn=x1+1i*x2;
Xk=fft(xn,16);
Xkx=conj(Xk);%取共轭
X1=1/2*(Xk+[Xkx(1),fliplr(Xkx(2:16))]);
X2=1/2*(Xk-[Xkx(1),fliplr(Xkx(2:16))]);
x11=ifft(X1,16);
x22=ifft(X2,16)*(-1i);

subplot(611)
stem(n,real(X1))
xlabel('k');
ylabel('real(X1)');

subplot(612)
stem(n,real(X2))
xlabel('k');
ylabel('real(X2)');

subplot(613)
stem(n,x1);
xlabel('n');
ylabel('x1');

subplot(614)
stem(n,x11);
xlabel('n');
ylabel('x1恢复');

subplot(615)
stem(n,x2);
xlabel('n');
ylabel('x2');

subplot(616)
stem(n,x22);
xlabel('n');
ylabel('x2恢复');

実験的結論1-2:、関係

答え:

2.有限長の実数列のDFTの共役対称性

有限長実数シーケンスのDFTの共役対称性から、周波数領域で共役対称性を持つシーケンスがIDFTとして使用されていることがわかります。

後者は実数シーケンスであり、実数の送信は送信デバイスを大幅に簡素化できます。OFDMはこの機能を使用して、チャネルに送信されるシーケンスが実際のシーケンスであることを確認します。

必要に応じて、以下をプログラムします。

XK_inを周波数領域の複素数シーケンス、XK_in = [1 + j、-3-j、-3 + 3 * j、-1-3*j]とします。

周波数領域シーケンスを変換するために、実際のシーケンスのDFTの共役対称式を使用してみてください

XK_inは、対応する時間領域シーケンスxn = ifft(Xk、16)が実数シーケンスであることを保証するために、共役対称形式Xkに展開されます。

(1)周波数領域シーケンスXkを見つけ、Xkの実数部と虚数部を与えます。

clc,clear,close all
format compact
N=16;
n=0:1:N-1;
k=0:1:7;
XK_in=[1+1i,-3-1i,-3+3*1i,-1-3*1i];
XKf=conj(fliplr(XK_in)); 
Xk=[0,XK_in,0,0,0,0,0,0,0,XKf];

subplot(211)
stem(n,real(Xk));
xlabel('k');
ylabel('real(Xk)');
subplot(212)
stem(n,imag(Xk));
xlabel('k');
ylabel('imag(Xk)');

実験的結論2-1:Xkの実数部と虚数部の特性を説明します。

回答:実数部はN / 2偶数に関して対称であり、虚数部はN/2奇数に関して対称です。

2)求xn = ifft(Xk、16);  

clc,clear,close all
format compact
N=16;
n=0:1:N-1;
k=0:1:7;
XK_in=[1+1i,-3-1i,-3+3*1i,-1-3*1i];
XKf=conj(fliplr(XK_in)); 
Xk=[0,XK_in,0,0,0,0,0,0,0,XKf];
xn =ifft(Xk,16)

subplot(211)
stem(n,real(xn));
xlabel('n');
ylabel('real(xn)');
subplot(212)
stem(n,imag(xn));
xlabel('n');
ylabel('imag(xn)');

実験的結論2-2:xnが実数のシーケンスであるかどうかは、xnの実数部と虚数部のグラフで説明できます。

回答:上の図からわかるように、xnの虚数部は常に0であり、これは実数のシーケンスです。

実験的思考

1.シーケンスx(n)の場合、N / 2ポイントDFTを計算してNポイントDFTを取得するにはどうすればよいですか?

答え:

  (1)シーケンスx(n)の場合、基数2FFTアルゴリズムを使用してx(n)のパリティシーケンスを分割し、N / 2ポイントDFTを取得して、NポイントDFTを取得できます。

(2)特に、x(n)が実数列の場合、N =偶数の場合はX(k)の前部N / 2 + 1ポイントを計算するだけでよく、N=奇数の場合は次のようになります。 (k)の前のX(N + 1)/ 2ポイントを計算するためにのみ必要であり、したがってNポイントDFTを計算します。

おすすめ

転載: blog.csdn.net/yyfloveqcw/article/details/124188895