You are on page 1of 2

close all;

clc;

S=randi([-2,2],25,11);
disp(S);
S1=zeros(25,21);

for r=1:25
for c=1:11
S1(r,c)=S(r,c);
end
end
S2=zeros(25,10);
S3=zeros(25,10);
for r=1:25
for c=1:10
S2(r,c)=S(r,c);
end
end
for r=1:25
for c=1:10
S3(r,c)=S2(r,11-c);
end
end
Dp=0.01;
Ds=0.001;
S1=[S S3]
disp(S1);
erri=zeros(25,1);
errf=zeros(25,1);
V=0.01.*ones(25,21);
gbest=zeros(25,21);
pbest=zeros(25,21);
pbest=S1;
pworst=zeros(25,21);
for i=1:2000
for r=1:25
[h,w]=freqz(S1(r,:),1,250);
h=abs(h)/max(abs(h));
w=abs(w)/max(abs(w));
diff1=0;
for j=1:88
if(abs(h(j,1))~=1)
diff1 = diff1 + abs(abs(h(j,1)-1)-Dp);
end
end
%erri(r,1)=diff1;
diff2=0;
for j=89:250
if(abs(h(j,1))~=0)
diff2 = diff2 + abs(abs(h(j,1))-Ds);
%erri(r,1)=max(diff(j,1));
end
end
erri(r,1) = abs(diff1 + diff2);
%erri(r,1)=erri(r,1)/250;
if (i~=1)
if (erri(r,1)<errf(r,1))
pbest(r,:)=S1(r,:);
errf(r,1)=erri(r,1);
else
pworst(r,:)=S1(r,:);
end
else
pbest(r,:)=S1(r,:);
errf=erri;
end
end

[C,I]=min(errf);
for g=1:25
gbest(g,:)=S1(I,:);
end
r1=rand(25,21);
r2=rand(25,21);
r3=rand(1);
c1=2;
c2=2;
V=(r2.*sig_m(r3)).*V + (((1-r2).*c1.*r1)).*(pbest-S1) + (((1-r2).*c2.*(1-
r1))).*(gbest-S1) + (((1-r2).*c1.*r1)).*(S1-pworst);

S1 = S1 + V;
%errf=erri;
end
disp(S1);
% for i=1:25
[a,b]=freqz(gbest(1,:),1,250);
b=abs(b)/max(abs(b));
a=abs(a)/max(abs(a));
c=mag2db(a); %Magnitude in db
figure;
plot(b,a);
figure;
plot(b,c);
%end

You might also like