% 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~= 524288 'Incorrect vector length, should be 524288' end; % % form filter fc=N/8; Norder=8; fmax=N/2; n=1:N; K=1; % filter gain [f H]=lp_butterworth_oN_dft(fc,K,fmax,N,Norder); % filter signal through channel S=fft(signal); R=S.*H; sn=real(ifft(R)); figure(1); plot(n,abs(H),n,abs(S)); figure(2); plot(n,abs(H),n,abs(R)); % find noise deviation sigma=2*(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(3); plot(n,signal); figure(4); plot(n,sn); figure(5); plot(n,r);