2011.1.7 横浜、都筑区からみた富士山
clear
#Original Signal
t=0:0.001:0.512; # サンプリング周波数1000Hz
y=sin(2*pi*50*t)+0.5*sin(2*pi*400*t); #50Hzの信号,400Hzのノイズ
figure(1);
subplot(2,1,1)
plot(y(1:512))
axis([0, 512, -1.5, 1.5]);
title("Fig.1 Original Signal");
xlabel("samples NO.")
# FFT表示
Y=fft(y,512); #512フーリエ変換により周波数領域に変換
Pyy=Y.*conj(Y)/512; # Pyy−スペクトル密度conj−複素共役
f=1000*(0:511)/512;
subplot(2,1,2)
plot(f,Pyy(1:512))
title("Fig.2 spectrum f1=50Hz, noise=400Hz")
xlabel("(Hz)")
#grid "on";
#------------------------------------------
# -- N = 1 --
#p = [0.707106781 0.707106781];
# -- N = 2 --
p = [0.482962913145 0.836516303738 0.224143868042 -0.129409522551];
sup=length(p); % 数列の長さ
q = - ( (-1).^(1:sup) ).*p(sup:-1:1); % ドベシイの数列 q_k の生成
g = p;
h = q;
ss=y(1:512);#Origial signal
s1 = dwt1d(ss, g, h);
s2 = dwt1d(s1(1:256), g, h);
s3 = dwt1d(s2(1:128), g, h);
s4 = dwt1d(s3(1:64), g, h);
s5 = dwt1d(s4(1:32), g, h);
s6 = dwt1d(s5(1:16), g, h);
#-----------------------------------------------
#ノイズ除去
is2 = idwt1d(s2, p, q);
iss1(1:256)=is2(1:256);
iss1(256:512)=zeros;
is1 = idwt1d(iss1, p, q);
#----------------------------------------------
figure(2);
subplot(2,1,1);
x=1:256;
plot(x,s1(257:512));
title('Fig.3 Sub-Band1')
axis([0, 256, -1.5,1.5]);
xlabel("samples NO.");
grid "on";
subplot(2,1,2);
x=1:128;
plot(x,s2(129:256));
title('Fig.4 Sub-Band2');
xlabel("samples NO.");
grid "on";
axis([0,128, -1.5,1.5]);
#-----------------------------------------------------
figure(3);
subplot(2,1,1);
x=1:64;
plot(x,s3(65:128));
title('Fig.5 Sub-Band3')
axis([0, 64, -4, 4]);
xlabel("samples NO.");
grid "on";
subplot(2,1,2);
x=1:32;
plot(x,s4(33:64));
title('Fig.6 Sub-Band4');
xlabel("samples NO.");
grid "on";
axis([0,32, -4,4]);
#-----------------------------------------------------
figure(4);
subplot(2,1,1);
x=1:16;
plot(x,s5(17:32));
title('Fig.7 Sub-Band5')
xlabel("samples NO.");
axis([0, 16, -4, 4]);
grid "on";
subplot(2,1,2);
x=1:8;
plot(x,s6(9:16));
title('Fig.8 Sub-Band6');
xlabel("samples NO.");
grid "on";
axis([0,8, -4,4]);
#-------------------------------------------
figure(5);
subplot(2,1,1);
plot(is2);
title('Fig.9 iwt-noise cancellation')
axis([0, 256, -1.5,1.5]);
xlabel("samples NO.");
grid "on";
subplot(2,1,2);
%x=1:128;
plot(is1);
title('Fig.10 iwt-noise canmcellation');
xlabel("samples NO.");
grid "on";
axis([0,512, -1.5,1.5]);
#----------------------------------------------------
周波数が変化する信号のウェーブレット変換
clear
t=0:0.001:0.512; # サンプリング周波数1000Hz
ts=1:0.003:2.536;
y=sin(2*pi*50*t.*ts)+0.2*sin(2*pi*400*t); #50Hzの信号,400Hzのノイズ
figure(6);
subplot(2,1,1)
plot(y(1:512))
axis([0, 512, -1.5, 1.5]);
title("Fig.11 Original Signal");
xlabel("samples NO.")
Y=fft(y,512); #512フーリエ変換により周波数領域に変換
Pyy=Y.*conj(Y)/512; # Pyy−スペクトル密度conj−複素共役
f=1000*(0:511)/512;
subplot(2,1,2)
plot(f,Pyy(1:512))
title("Fig.12 spectrum")
xlabel("(Hz)")
#grid "on";
#------------------------------------------
# -- N = 1 --
#p = [0.707106781 0.707106781];
# -- N = 2 --
p = [0.482962913145 0.836516303738 0.224143868042 -0.129409522551];
sup=length(p);
q = - ( (-1).^(1:sup) ).*p(sup:-1:1);
g = p;
h = q;
ss=y(1:512); ## Original signal
s1 = dwt1d(ss, g, h);
s2 = dwt1d(s1(1:256), g, h);
s3 = dwt1d(s2(1:128), g, h);
s4 = dwt1d(s3(1:64), g, h);
s5 = dwt1d(s4(1:32), g, h);
s6 = dwt1d(s5(1:16), g, h);
#---------------------------------------------------------------------
figure(7);
subplot(2,1,1);
x=1:256;
plot(x,s1(257:512));
title('Fig.13 Sub-Band1')
axis([0, 256, -1.5,1.5]);
xlabel("samples NO.");
grid "on";
subplot(2,1,2);
x=1:128;
plot(x,s2(129:256));
title('Fig.14 Sub-Band2');
xlabel("samples NO.");
grid "on";
axis([0,128, -1.5,1.5]);
#-----------------------------------------------------
figure(8);
subplot(2,1,1);
x=1:64;
plot(x,s3(65:128));
title('Fig.15 Sub-Band3')
axis([0, 64, -4, 4]);
xlabel("samples NO.");
grid "on";
subplot(2,1,2);
x=1:32;
plot(x,s4(33:64));
title('Fig.16 Sub-Band4');
xlabel("samples NO.");
grid "on";
axis([0,32, -4,4]);
#-----------------------------------------------------
figure(9);
subplot(2,1,1);
x=1:16;
plot(x,s5(17:32));
title('Fig.17 Sub-Band5')
xlabel("samples NO.");
axis([0, 16, -4, 4]);
grid "on";
subplot(2,1,2);
x=1:8;
plot(x,s6(9:16));
title('Fig.18 Sub-Band6');
xlabel("samples NO.");
grid "on";
axis([0,8, -4,4]);
#---------------------------------------------------------------------
# IDWT/DWT OFDMの確認
#---------------------------------------------------------------------
%送信機;データ信号生成 64QAM
M=64;
data=[0:M-1];
qamSymbol=qammod(data,M);
ss=qamSymbol;
# -- N = 1 --
#p = [0.707106781 0.707106781];
# -- N = 2 --
p = [0.482962913145 0.836516303738 0.224143868042 -0.129409522551];
sup=length(p);
q = - ( (-1).^(1:sup) ).*p(sup:-1:1);
g = p;
h = q;
s0 = idwt1d(ss, p, q);% 参考サイト(4)のwavelet逆変換の関数です。
s1 = dwt1d(s0, g, h);%同、wavelet変換の関数です。
#---------------------------------------------------------------------
figure(1);
subplot(2,1,1);
x=0:63;
plot(x,real(ss),x,imag(ss));
title('Fig.1 original 64QAM data, Blue=Real, Green=Imag')
axis([0, 65, -8, 8]);
grid "on";
subplot(2,1,2);
x=0:63;
plot(x,real(s0),x,imag(s0));
title('Fig.2 I-DWT(64QAM),Blue=Real, Green=Imag ');
grid "on";
axis([0,65, -10,10]);
figure(2);
subplot(2,1,1);
x=0:63;
plot(x,real(s1),x,imag(s1));
axis([-1 1 -2 2])
title('Fig.3 DWT(64QAM),Blue=Real, Green=Imag ');
grid "on";
axis([0, 65, -8, 8]);
subplot(2,1,2);
x=0:63;
ifftSS=ifft(ss);
plot(x,real(ifftSS),x,imag(ifftSS));
%axis([-1 1 -2 2])
title('Fig.4 IFFTT(64QAM),Blue=Real, Green=Imag ');
grid "on";
axis([0, 65, -3, 3]);
scatterplot(s1,1,0,'b*');
title('Fig.4 DWT(64QAM) Scatterplot');
grid 'on'
参考文献