目的
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を計算します。