⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m-svm.m

📁 支持向量机在波束形成中的一种应用 能够形成波束,且效果很好.
💻 M
字号:
close all;
clear all;
N=5;
M=8;
j=sqrt(-1);
len=100;

theta=[-45*pi/180,-30*pi/180,0*pi/180,10*pi/180,40*pi/180];
s0=2*(rand(1,len)>0.5)-1;
s1=2*(rand(1,len)>0.5)-1;
s2=2*(rand(1,len)>0.5)-1;
s3=2*(rand(1,len)>0.5)-1;
s4=2*(rand(1,len)>0.5)-1;

for i=1:len
   x_bpsk1(i)=sqrt(10.^(-5/10))*s0(i);
    x_bpsk2(i)=sqrt(10.^(8/10))*s1(i);
     x_bpsk3(i)=sqrt(10.^(5/10))*s2(i);
      x_bpsk4(i)=sqrt(10.^(5/10))*s3(i); 
       x_bpsk5(i)=sqrt(10.^(-8/10))*s4(i);
end
s=[x_bpsk1;x_bpsk2;x_bpsk3;x_bpsk4;x_bpsk5];
for i=1:M
    for k=1:N
        A1(i,k)=exp(-j*pi*(i-1)*sin(theta(k)));%array responce
    end
end

rp.mean_v  = 0; % mean of complex-valued AWGN
rp.var_v   = 1; % variance of complex-valued AWGN
vr = sqrt(rp.var_v/2) * randn(M,len) + rp.mean_v;
vi = sqrt(rp.var_v/2) * randn(M,len) + rp.mean_v;
v  = vr + j*vi;
X_nn=A1*s;
X=X_nn+v;
L=100;
a=zeros(1,L);
C=0.1;
y=s2;

for i=1:L
    sum=0;
    for k=1:L
        sum=sum+a(k)*y(k)*X(:,i)'*X(:,k);
    end
    u=1/(X(:,i)'*X(:,i));
    a(i)=a(i)+u*(1-y(i)*sum);
    if a(i)<0
        a(i)=0;
    else if a(i)>C
            a(i)=C;
        end
    end
end

w=zeros(M,1);
i=1;
for i=1:L
   w=w+a(i)*y(i)*X(:,i);
end

for i=1:L%得到-1和1出现的首位置
    if y(i)==-1
        r=i;break
    end
end
for i=1:L
     if y(i)==1
         p=i;break
     end
 end
 K1=0;
 K2=0;
max=w'*X(:,r);
min=w'*X(:,p);

for i=1:L
     sum2=w'*X(:,i);
    if y(i)==-1&&max<sum2
        max=sum2;
    end
    if y(i)==1&&min>sum2
        min=sum2;
    end
end
b=-(max+min)/2;
f=zeros(1,L);%输出BPSK信号
for i=1:L
    f(i)=sign(real(w'*X(:,i)+b));
end
y_to_f=0;
for i=1:L%求判断正确的BPSK信号个数
    if f(i)==y(i)
        y_to_f=y_to_f+1;
    end
end

sita1=[-90:2:90];
sita=sita1*pi/180;
G_sita=zeros(1,length(sita));
a_sita_i=zeros(M,length(sita));
for i=1:length(sita)
a_sita_i(:,i)=[1;exp(-j*pi*sin(sita(i))) ; exp(-j*2*pi*sin(sita(i))); exp(-j*3*pi*sin(sita(i))) ;exp(-j*4*pi*sin(sita(i))) ;exp(-j*5*pi*sin(sita(i))) ;exp(-j*6*pi*sin(sita(i))) ;exp(-j*7*pi*sin(sita(i)))];
G_sita(i)=a_sita_i(:,i)'*w;
end


figure;
plot(sita1,10*log10(abs(G_sita)));
grid on ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -