% 频控阵FDA 波束能量效应
% 波束模式是方向响应的绝对值。
% FDA分辨率 r = r0 + c/M*df; M为阵元数
warning off;
clear;
close all;
clc;
%% Position of observer
x_o = [0];
y_o = [0];
%% Position of observer
ang_t = [0]/180*pi;
dis_t = [10]*1e3;
ref_cof = abs(randn(1,length(ang_t))); % Reflection coefficient
dis_t_m = dis_t'*ones(1,length(dis_t));
p_t = dis_t_m.*[cos(ang_t') sin(ang_t')];
p_o = [x_o y_o];
N_o = numel(p_o(:,1));N_t = numel(p_t(:,1));
Ima = sqrt(-1);
%% Parameter Settings
M = 12;M_p = zeros(1,M); % The muber of transmitter array
N = 6;N_p = zeros(1,N); % The number of receiving array
c = 3e8; % Speed of light
f0 = 10e9; % Carrier frequency
df = 30e3; % Offset frequency Carrier_frequency/Offset_frequency > 1e3
df0 = 10e3; % Offset frequency
lambda=c/f0; % Wave length lambda=c/(2*f0);
dt = c/(2*f0); % Distance of transmitter
dr = c/(2*f0); % Distance of receiving
k0 = 2*pi/lambda;
t = 3.5e-5; % Time of delay
M_p = [1,3,4,8,9,10,11,12];
N_p = [0:5];
sigma = 1; % det_fm = m^(sigma)*det_t
%% Energy diagram plot
sita = linspace(-pi/2,pi/2,201);
distance = linspace(1e3,20e3,201);
T0 = linspace(0,7e-5,201);
dir_x = length(sita); dir_y = length(distance);dir_z = length(T0);
P_fda = zeros(dir_x,dir_y);
%% Drawing by Amplitude Angle_distance combination
for i = 1:dir_x
for j = 1:dir_y
E_fda0(i,j) = Em_MIMO_FDA(t,M,dt,0,f0,df,ang_t,dis_t,sita(i),distance(j)); % sigma = 0 f0=10e9;df=30e3;t0=0;M=12
E_fda(i,j) = Em_MIMO_FDA(t,M,dt,1,f0,df,ang_t,dis_t,sita(i),distance(j)); % sigma = 1
E_fda1(i,j) = Em_MIMO_FDA(t,M,dt,2,f0,df,ang_t,dis_t,sita(i),distance(j)); % sigma = 2
end
end
[xa,ya] = meshgrid(sita/pi*180,distance);
axis([sita(1)/pi*180 sita(end)/pi*180 distance(1) distance(end)]); % Music
E_fda = abs(E_fda);E_fda0 = abs(E_fda0);E_fda1 = abs(E_fda1); % abs
subplot(2,2,1);
mesh(xa,ya,E_fda'/max(max(E_fda)));
xlabel('角度/°');ylabel('距离/m');zlabel('幅度');title('3D-FDA');
subplot(2,2,2);
mesh(xa,ya,E_fda'/max(max(E_fda)));
xlabel('角度/°');ylabel('距离/m');zlabel('幅度');title('2D-FDA');view(2);
subplot(2,2,3);
mesh(xa,ya,E_fda0'/max(max(E_fda0)));
xlabel('角度/°');ylabel('距离/m');zlabel('幅度');title('3D-PA');
subplot(2,2,4);
mesh(xa,ya,E_fda0'/max(max(E_fda0)));
xlabel('角度/°');ylabel('距离/m');zlabel('幅度');title('3D-PA');view(2);
%% Drawing by Amplitude Angle Independent
for i = 1:dir_x
Amplitude_angle(i) = Em_MIMO_FDA(t,M,dt,1,f0,30e3,ang_t,dis_t,sita(i),9.7e3); % sigma = 1 f0=10e9;df=30e3;t=3.5e-5;M=12;dis_t=10e3;
Amplitude_angle0(i) = Em_MIMO_FDA(t,M,dt,1,f0,50e3,ang_t,dis_t,sita(i),9.7e3); % sigma = 1 f0=10e9;df=50e3;t=3.5e-5;M=12;dis_t=10e3;
Amplitude_angle1(i) = Em_MIMO_FDA(t,M,dt,1,f0,90e3,ang_t,dis_t,sita(i),9.7e3); % sigma = 1 f0=10e9;df=90e3;t=3.5e-5;M=12;dis_t=10e3;
end
figure(2)
subplot(2,1,1);
plot(sita/pi*180,20*log(abs(Amplitude_angle))/log(10),'rx-');
hold on
plot(sita/pi*180,20*log(abs(Amplitude_angle0))/log(10),'g*-');
hold on
plot(sita/pi*180,20*log(abs(Amplitude_angle1))/log(10),'bd-');
xlabel('Angle[°]');ylabel('Amplitude[dB]');title('FDA-TB-Angle');
legend('df=30e3','df=50e3','df=90e3');
%% Drawing by Amplitude Distance Independent
for i = 1:dir_y
Amplitude_distance(i) = Em_MIMO_FDA(t,M,dt,1,f0,30e3,ang_t,dis_t,ang_t,distance(i)); % sigma = 1 f0=10e9;df=30e3;t=3.5e-5;M=12;dis_t=10e3;
Amplitude_distance0(i) = Em_MIMO_FDA(t,M,dt,1,f0,50e3,ang_t,dis_t,ang_t,distance(i)); % sigma = 1 f0=10e9;df=50e3;t=3.5e-5;M=12;dis_t=10e3;
Amplitude_distance1(i) = Em_MIMO_FDA(t,M,dt,1,f0,90e3,ang_t,dis_t,ang_t,distance(i)); % sigma = 1 f0=10e9;df=90e1;t=3.5e-5;M=12;dis_t=10e3;
end
subplot(2,1,2);
plot(distance,20*log(abs(Amplitude_distance))/log(10),'rx-');
hold on
plot(distance,20*log(abs(Amplitude_distance0))/log(10),'g*-');
hold on
plot(distance,20*log(abs(Amplitude_distance1))/log(10),'bd-');
xlabel('Distance[m]');ylabel('Amplitude[dB]');title('FDA-TB-Distance');
legend('df=30e3','df=50e3','df=90e3');
%% Drawing by Amplitude Angle_distance combination_Nonlinearity
for i = 1:dir_x
for j = 1:dir_y
[E,E1,E2,E3] = Em_FDA_Nonlinear(t,M,dt,f0,df,ang_t,dis_t,sita(i),distance(j));
E_fda_log(i,j) = E;
E_fda_sin(i,j) = E1;
E_fda_square(i,j) = E2;
E_fda_rand(i,j) = E3;
end
end
figure(3)
[xa,ya] = meshgrid(sita/pi*180,distance);
axis([sita(1)/pi*180 sita(end)/pi*180 distance(1) distance(end)]); % Music
E_fda_log = abs(E_fda_log);E_fda_sin = abs(E_fda_sin);
E_fda_square = abs(E_fda_square);E_fda_rand = abs(E_fda_rand); % Abs
subplot(2,2,1);
mesh(xa,ya,E_fda_log'/max(max(E_fda_log)));
xlabel('角度/°');ylabel('距离/m');zlabel('幅度');title('Log-FDA');view(2);
subplot(2,2,2);
mesh(xa,ya,E_fda_sin'/max(max(E_fda_sin)));
xlabel('角度/°');ylabel('距离/m');zlabel('幅度');title('Sin-FDA');view(2);
subplot(2,2,3);
mesh(xa,ya,E_fda_square'/max(max(E_fda_square)));
xlabel('角度/°');ylabel('距离/m');zlabel('幅度');title('Square-FDA');view(2);
subplot(2,2,4);
mesh(xa,ya,E_fda_rand'/max(max(E_fda_rand)));
xlabel('角度/°');ylabel('距离/m');zlabel('幅度');title('Rand-FDA');view(2);
%% Drawing by Amplitude Angle_distance combination_Nonlinearity
for i = 1:dir_x
for j = 1:dir_y
[E,E1,E2,E3,E4] = Em_FDA_Nonlinear_array(t,M,N,dt,f0,df,ang_t,dis_t,sita(i),distance(j));
[E5] = E_MIMO_FDA(lambda,M_p,N_p,dt,df,ang_t,dis_t,sita(i),distance(j));
E_fda_log_array(i,j) = E;
E_fda_sin_array(i,j) = E1;
E_fda_square_array(i,j) = E2;
E_fda_rand_array(i,j) = E3;
E_fda_array(i,j) = E4;
E_fda_mimo(i,j) = E5;
end
end
figure(4)
[xa,ya] = meshgrid(sita/pi*180,distance);
axis([sita(1)/pi*180 sita(end)/pi*180 distance(1) distance(end)]); % Music
E_fda_log_array = abs(E_fda_log_array);E_fda_sin_array = abs(E_fda_sin_array);
E_fda_square_array = abs(E_fda_square_array);E_fda_rand_array = abs(E_fda_rand_array); % Abs
E_fda_array = abs(E_fda_array);E_fda_mimo = abs(E_fda_mimo);
subplot(2,2,1);
mesh(xa,ya,E_fda_log_array'/max(max(E_fda_log_array)));
xlabel('角度/°');ylabel('距离/m');zlabel('幅度');title('Log-FDA-Array');view(2);
subplot(2,2,2);
mesh(xa,ya,E_fda_sin_array'/max(max(E_fda_sin_array)));
xlabel('角度/°');ylabel('距离/m');zlabel('幅度');title('Sin-FDA-Array');view(2);
subplot(2,2,3);
mesh(xa,ya,E_fda_square_array'/max(max(E_fda_square_array)));
xlabel('角度/°');ylabel('距离/m');zlabel('幅度');title('Square-FDA-Array');view(2);
subplot(2,2,4);
mesh(xa,ya,E_fda_rand_array'/max(max(E_fda_rand_array)));
xlabel('角度/°');ylabel('距离/m');zlabel('幅度');title('Rand-FDA-Array');view(2);
figure(5)
subplot(1,2,1);
mesh(xa,ya,E_fda_array'/max(max(E_fda_array)));
xlabel('角度/°');ylabel('距离/m');zlabel('幅度');title('Normal-FDA-Array');view(2);
subplot(1,2,2);
mesh(xa,ya,E_fda_mimo'/max(max(E_fda_mimo)));
xlabel('角度/°');ylabel('距离/m');zlabel('幅度');title('FDA-PA(MIMO)');view(2);