%% 4点DFTを丁寧に作ってみる
%まず、４つの基底ベクトルP0, P1, P2, P3を作る、それぞれを横ベクトルとする
fprintf('４つの基底ベクトルP0, P1, P2, P3を作る\n');
n=0:3
P0=exp(j*2*pi*0/4*n)
P1=exp(j*2*pi*1/4*n)
P2=exp(j*2*pi*2/4*n)
P3=exp(j*2*pi*3/4*n)

%% ノルムを確認する
fprintf('ノルムを確認する\n');
norm0=sqrt((P0*P0')/4)
norm1=sqrt((P1*P1')/4)
norm2=sqrt((P2*P2')/4)
norm3=sqrt((P3*P3')/4)

%% 直交性を確認する
fprintf('直交性を確認する\n');
cyoku01=(P0*P1')/4
cyoku02=(P0*P2')/4
cyoku03=(P0*P3')/4
cyoku12=(P1*P2')/4
cyoku13=(P1*P3')/4
cyoku23=(P1*P3')/4

%% DFT行列を作る
fprintf('DFT行列\n');
DFT=1/4*[conj(P0);conj(P1);conj(P2);conj(P3)]

%% ディジタル信号　{0, -4, 0, +4}のDFT値を求める
fprintf('DFT値を求める\n');
x=[0;-4;0;4]
Y=DFT*x

%% IDFT行列を作り、逆変換する
fprintf('IDFT行列を作り、逆変換する\n');
IDFT=[P0;P1;P2;P3]
xx=IDFT*Y

%% おわり