% channel function clear; % input active group load 'activegroup' groupname; groupname % input groupname_signal.mat filename=sprintf('%s_signal.mat',groupname); load(filename); % make sure s is real signal=real(s); [M,N]=size(signal) if N~= 1048576 'Incorrect vector length, should be 1048576' end; % % form filter fc=N/32; Norder=8; fmax=N/2; n=1:N; K=1; % filter gain % low pass filter [f HLP]=lp_butterworth_oN_dft(fc,K,fmax,N,Norder); % band pass filter fo=N/8; [f2,HBP]=bp_butterworth_oN_dft(fo,fc,K,fmax,N,Norder); HBP=2*HBP; % filter signal through channel S=fft(signal); H=HLP+HBP; R=S.*H; sn=real(ifft(R)); figure(1); plot(n,abs(H),n,abs(HLP),n,abs(HBP)); figure(2); plot(n,log(abs(S)+.1)); figure(3); plot(n,log(abs(R)+.1)); % find noise deviation sigma=0.1*(max(sn)-min(sn)) % add noise w=sigma*randn(1,N); r=sn+w; % store result in groupname_r.mat filename=sprintf('%s_r.mat',groupname); save(filename,'r'); figure(4); plot(n,signal); figure(5); plot(n,sn); figure(6); plot(n,r);