Octaveでノイズ除去

ノイズ信号から信号の取り出し

サンプル数 1024
入力信号:10Hz
x軸の基本波 f=fs/N=1000/1024
ノイズをのせる。
になる。
次のファイルをnoise1.m(TextFile)として「GNU Octave 2.1.36\octave_files」
の下に作成

clear;
output_precision=10;
fs=1000.0;
Ts=1/fs;
N=1024;
n=[0:N-1];
x1=sin(20*pi*Ts*n);
s1=x1+randn(size(n)); <--ランダムノイズをのせる
x=fft(s1);
% hold off;
% plot(abs(x(1:200))); <--ランダムノイズのスペクトラム
% plot(s1);  <--ランダムノイズの波形
for i = (1:N) 
if abs(x(i)) < 200 <--レベルが200以下の周波数成分を除去
x(i) = 0
endif
endfor
x2=real(ifft(x));
hold off;
plot(x1); <--元波形
hold on;
plot(x2); <--ノイズ除去後の波形

逆FFT後、波形再生は
実部だけを表示する。虚数部は本来出ない。
虚数部出たときは誤差分程度であるので無視してよい。

octaveで

>>noise1

で実行。

実行結果

ノイズがのった波形


ノイズがのったスペクトラム


元波形とノイズ除去波形