Fs=400;
t=0:1/Fs:399/Fs;
x=sin(2*pi*t*8);
xn=x+randn(1,400)/5;
xn=xn*16;
x=x*16;
xm=xn/128;%为了方便检验滤波器输出结果
b=[11 11 12 12 13 13 13 13 12 12 11 11];
% b=[ 0.04369861846797, 0.04419547376269, 0.04464505372693, 0.04504660376728, 0.04539944952145, 0.04570299812446, 0.04595673932203, 0.04616024642907,0.04631317713131, 0.04641527412857, 0.04646636561824, 0.04646636561824,0.04641527412857, 0.04631317713131, 0.04616024642907, 0.04595673932203,0.04570299812446, 0.04539944952145, 0.04504660376728, 0.04464505372693,0.04419547376269, 0.04369861846797];
y=filter(b,1,xm);
y=round(y);
xn=round(xn);
fid=fopen('F:\file.vec','w');
fprintf(fid,'UNIT ns;\n');
fprintf(fid,'START 0;\n');
fprintf(fid,'STOP 1000000;\n');
fprintf(fid,'INTERVAL 2500;\n')
fprintf(fid,'INPUTS d7 d6 d5 d4 d3 d2 d1 d0;\n');
fprintf(fid,'PATTERN\n');
for i=1:400
if xn(i)>=21
fprintf(fid,'0 0 0 1 0 1 0 1\n');
elseif xn(i)>=20&xn(i)<21
fprintf(fid,'0 0 0 1 0 1 0 0\n');
elseif xn(i)>=19&xn(i)<20
fprintf(fid,'0 0 0 1 0 0 1 1\n');
elseif xn(i)>=18&xn(i)<19
fprintf(fid,'0 0 0 1 0 0 1 0\n');
elseif xn(i)>=17&xn(i)<18
fprintf(fid,'0 0 0 1 0 0 0 1\n');
elseif xn(i)>=16&xn(i)<17
fprintf(fid,'0 0 0 1 0 0 0 0\n');
elseif xn(i)>=15&xn(i)<16
fprintf(fid,'0 0 0 0 1 1 1 1\n');
elseif xn(i)>=14&xn(i)<15
fprintf(fid,'0 0 0 0 1 1 1 0\n');
elseif xn(i)>=13&xn(i)<14
fprintf(fid,'0 0 0 0 1 1 0 1\n');
elseif xn(i)>=12&xn(i)<13
fprintf(fid,'0 0 0 0 1 1 0 0\n');
elseif xn(i)>=11&xn(i)<12
fprintf(fid,'0 0 0 0 1 0 1 1\n');
elseif xn(i)>=10&xn(i)<11
fprintf(fid,'0 0 0 0 1 0 1 0\n');
elseif xn(i)>=9&xn(i)<10
fprintf(fid,'0 0 0 0 1 0 0 1\n');
elseif xn(i)>=8&xn(i)<9
fprintf(fid,'0 0 0 0 1 0 0 0\n');
elseif xn(i)>=7&xn(i)<8
fprintf(fid,'0 0 0 0 0 1 1 1\n');
elseif xn(i)>=6&xn(i)<7
fprintf(fid,'0 0 0 0 0 1 1 0\n');
elseif xn(i)>=5&xn(i)<6
fprintf(fid,'0 0 0 0 0 1 0 1\n');
elseif xn(i)>=4&xn(i)<5
fprintf(fid,'0 0 0 0 0 1 0 0\n');
elseif xn(i)>=3&xn(i)<4
fprintf(fid,'0 0 0 0 0 0 1 1\n');
elseif xn(i)>=2&xn(i)<3
fprintf(fid,'0 0 0 0 0 0 1 0\n');
elseif xn(i)>=1&xn(i)<2
fprintf(fid,'0 0 0 0 0 0 0 1\n');
elseif xn(i)>=0&xn(i)<1
fprintf(fid,'0 0 0 0 0 0 0 0\n');
elseif xn(i)>=-1&xn(i)<0
fprintf(fid,'1 1 1 1 1 1 1 1\n');
elseif xn(i)>=-2&xn(i)<-1
fprintf(fid,'1 1 1 1 1 1 1 0\n');
elseif xn(i)>=-3&xn(i)<-2
fprintf(fid,'1 1 1 1 1 1 0 1\n');
elseif xn(i)>=-4&xn(i)<-3
fprintf(fid,'1 1 1 1 1 1 0 0\n');
elseif xn(i)>=-5&xn(i)<-4
fprintf(fid,'1 1 1 1 1 0 1 1\n');
elseif xn(i)>=-6&xn(i)<-5
fprintf(fid,'1 1 1 1 1 0 1 0\n');
elseif xn(i)>=-7&xn(i)<-6
fprintf(fid,'1 1 1 1 1 0 0 1\n');
elseif xn(i)>=-8&xn(i)<-7
fprintf(fid,'1 1 1 1 1 0 0 0\n');
elseif xn(i)>=-9&xn(i)<-8
fprintf(fid,'1 1 1 1 0 1 1 1\n');
elseif xn(i)>=-10&xn(i)<-9
fprintf(fid,'1 1 1 1 0 1 1 0\n');
elseif xn(i)>=-11&xn(i)<-10
fprintf(fid,'1 1 1 1 0 1 0 1\n');
elseif xn(i)>=-12&xn(i)<-11
fprintf(fid,'1 1 1 1 0 1 0 0\n');
elseif xn(i)>=-13&xn(i)<-12
fprintf(fid,'1 1 1 1 0 0 1 1\n');
elseif xn(i)>=-14&xn(i)<-13
fprintf(fid,'1 1 1 1 0 0 1 0\n');
elseif xn(i)>=-15&xn(i)<-14
fprintf(fid,'1 1 1 1 0 0 0 1\n');
elseif xn(i)>=-16&xn(i)<-15
fprintf(fid,'1 1 1 1 0 0 0 0\n');
elseif xn(i)>=-17&xn(i)<-16
fprintf(fid,'1 1 1 0 1 1 1 1\n');
elseif xn(i)>=-18&xn(i)<-17
fprintf(fid,'1 1 1 0 1 1 1 0\n');
elseif xn(i)>=-19&xn(i)<-18
fprintf(fid,'1 1 1 0 1 1 0 1\n');
elseif xn(i)>=-20&xn(i)<-19
fprintf(fid,'1 1 1 0 1 1 0 0\n');
elseif xn(i)<-20
fprintf(fid,'1 1 1 0 1 0 1 1\n');
end;
end;
fprintf(fid,';');
fclose('all');
% subplot(211)
% plot(t,xn)
y1=conv(xm,b);
y2=y1(12:411);
% subplot(212)
% plot(0:0.01:1.15,y1)
figure
grid on
subplot(411)
% plot(t,xn)
plot(1:400,x)
subplot(413)
plot(0:1/Fs:399/Fs,y2)
% subplot(313)
% plot(t,y)
% xm=round(xn);
% y1=round(y2);
% z(1:100)=xm;
% z(101:200)=y1;
subplot(412)
plot(0:1/Fs:399/Fs,xm)
subplot(414)
plot(0:1/Fs:399/Fs,y(1:400))
% x=0:1:65535;
%
% q=0:1:9999;
% fid=fopen('F:\test1.mif','W' ); % test1.mif is the file which you want to use in Quartus II %
% fprintf(fid,'WIDTH=8;\n'); % WIDTH is the word band %
% fprintf(fid,'DEPTH=10000;\n\n'); % DEPTH is the the number of datas %
% fprintf(fid,'ADDRESS_RADIX=UNS;\n');
% fprintf(fid,'DATA_RADIX=UNS;\n\n');
% fprintf(fid,'CONTENT BEGIN\n\n');
% % y=round(31*sin(pi*x/64))+32;
% fprintf(fid,'%d:%d;\n',xn,q);
% fprintf(fid,'END;'); % the end of the file %
% fclose(fid);
% % plot(xn,q);
% grid on;