波束成型仿真源码程序,程序员在编程的过程中可以参考学习使用,希望对IT程序员有用,此源码程序简单易懂、方便阅读,有很好的学习价值!
clc
clear all
close all
L=10000;
l=1:L
T=1/(10^6);
% fs=10*5*10^6; %10fc
ts=T/L;
% t=L*ts;
s(1,:)=[1 1 1 1 1 1 1 1];
s(2,:)=[1 1 1 1 -1 -1 -1 -1];
s(3,:)=[1 1 -1 -1 -1 -1 1 1];
M=3;
for m=1:M
s(m,1:length(l))=(1/sqrt(T))*exp(i*2*pi*m*l*ts/T); %transmitted signal
end
R=0;
for l=1:L
R=R+s(:,l)*conj(s(:,l)');
end
R=(1/L)*R;
% R1(:,:)=sum(R);
theta1=40;
for i1=1:M
if i1==1
at(i1)=1;
bt(i1)=1;
else
at(i1)=exp(-1i*pi*(i1-1)*sind(theta1));
bt(i1)=exp(-1i*pi*(i1-1)*sind(theta1));
end
end
At=at'*conj(bt);
alpha=complex(rand(1),rand(1));
At=At*alpha;
for l=1:L
r(:,l)=At*s(:,l)+complex(randn(M,1),randn(M,1));
end
E=0;
%matched filter output
for l=1:L
E=E+r(:,l)*conj(s(:,l)');
end
E=(1/sqrt(L))*E;
[U S V]=svd(R);
dt=At*U*(S^0.5);
dt1=sqrt(L)*dt(:);
g=M*M;
mui=alpha*dt1+complex(randn(g,1),randn(g,1));
theta=-40;
for k=1:81
gain(k)=20*log10(0.1)+20*log10(abs(1+exp(1i*pi*sind(theta))+exp(1i*2*pi*sind(theta))+exp(1i*3*pi*sind(theta))+exp(1i*4*pi*sind(theta))+exp(1i*5*pi*sind(theta))+exp(1i*6*pi*sind(theta))+exp(1i*7*pi*sind(theta))+exp(1i*8*pi*sind(theta))+exp(1i*9*pi*sind(theta))));
gain1(k)=40*log10(0.1)+40*log10(abs(1+exp(1i*pi*sind(theta))+exp(1i*2*pi*sind(theta))+exp(1i*3*pi*sind(theta))+exp(1i*4*pi*sind(theta))+exp(1i*5*pi*sind(theta))+exp(1i*6*pi*sind(theta))+exp(1i*7*pi*sind(theta))+exp(1i*8*pi*sind(theta))+exp(1i*9*pi*sind(theta))));
theta=theta+1;
end
plot(-40:1:40,gain,'--r')
hold on
plot(-40:1:40,gain1)
axis([-40 40 -60 10]);
legend('coherent tx signal','orthogonal signals')
xlabel('theta[deg]');
ylabel('G(theta)[dB]');
title('Beam pattern for orthogonal and coherent signals')
grid on