我正在尝试生成论文 [Intelligent Reflecting Surfaces at Terahertz Bands: Channel Modeling and Analysis][1] 中的数字。图2如下。 [![在此处输入图片描述][2]][2]
我从我的代码中得到的如下。 [![在此处输入图片描述][3]][3]
以下是使用的代码
% Intelligent reflecting surfaces at terahertz bands: channel modelling and
% analysis
% figure 2
close all
clear all
clc
% setting latex inerpreter
set(groot,'defaulttextinterpreter','latex');
set(groot,'DefaultTextFontname', 'CMU Serif');
set(groot,'DefaultAxesFontName', 'CMU Serif');
set(groot,'DefaultTextFontSize',14)
set(groot,'DefaultAxesFontSize',14)
% phi: azimuth angle, theta: polar angle
% t: transmitter, r: receiver
% d: distance from origin
theta_r = 0:.1:90; % receiver polar angel
theta_t = 30; % transmitter polar angle
phi_r = 60; % receiver azimuth angle
% amplitude of electric (E-field) of the incident plane
amplitudeE_i_squared = 1;
f = 300e9; % carrier frequency
D_r = 4; % distances measured from the (0,0)th IRS element to Rx
c = 3e8; % velocity of light
lambda = c/f; % wavelength
%% 1. lx = ly = lambda/2, eq. 9
L_x = lambda/2; % size of reflecting element in x
L_y = lambda/2; % size of reflecting element in y
X = ((pi*L_x)/lambda) * sind(theta_r) * cosd(phi_r);
Y = ((pi*L_y)/lambda) * ( (sind(theta_r) * sind(phi_r)) - sind(theta_t));
F = cosd(theta_t)^2 * ( (cosd(theta_r).^2 * cosd(phi_r)^2) + ...
sind(phi_r)^2);
E_s_NormSquared_eq9 = 10*log10( ((L_x*L_y)/lambda)^2 * ...
(amplitudeE_i_squared/D_r^2) * F .* sinc(X).^2 .* sinc(Y).^2);
plot(theta_r,E_s_NormSquared_eq9,'b');
hold on
%% 2. lx = ly = lambda/2, eq. 10
E_s_NormSquared_eq10 = 10*log10( ((L_x*L_y)/lambda)^2 * ...
(amplitudeE_i_squared/D_r^2) * F);
plot(theta_r,E_s_NormSquared_eq10,'k-.');
%% 3. lx = ly = 5*lambda, eq. 9
L_x = 5*lambda;
L_y = 5*lambda;
% lambda = 2*lambda;
X = ((pi*L_x)/lambda) * sind(theta_r) * cosd(phi_r);
Y = ((pi*L_y)/lambda) * ( (sind(theta_r) * sind(phi_r)) - sind(theta_t));
F = cosd(theta_t)^2 * ( (cosd(theta_r).^2 * cosd(phi_r)^2) + ...
sind(phi_r)^2);
E_s_NormSquared_eq9 = 10*log10( ((L_x*L_y)/lambda)^2 * ...
(amplitudeE_i_squared/D_r^2) * F .* ...
sinc(X).^2 .* sinc(Y).^2);
% E_s_NormSquared_eq10 = 10*log10( ((L_x*L_y)/lambda)^2 * ...
% (amplitudeE_i_squared/D_r^2) * F);
plot(theta_r,E_s_NormSquared_eq9,'r');
% plot(theta_r,E_s_NormSquared_eq10,'r');
xlabel('$\theta_r [degrees]$');
ylabel('$||E_s||^2 [dB]$');
hl = legend('$L_x = L_y = \lambda/2$ (Eq. 9)',...
'$L_x = L_y = \lambda/2$ (Eq. 10)',...
'$L_x = L_y = 5\lambda$');
set(hl, 'Interpreter','latex')
xlim([min(theta_r) max(theta_r)]);
% saveas(gca, ['f2_', datestr(now,'ddmmyyyy'), '.png']);
我的绘图和z轴范围与论文中的不相似
你能指出我做的错误吗?谢谢。
[1]: https://arxiv.org/abs/2103.15239#:~:text=Intelligent%20Reflecting%20Surfaces%20at%20Terahertz%20Bands%3A%20Channel%20Modeling%20and%20Analysis,-Konstantinos%20Dovelos%2C %20Stylianos&text=An%20intelligent%20reflecting%20surface%20(IRS,for%20the%20severe%20propagation%20losses. [2]: [3]:
1.- 基数 sin 或 sinc 有两个定义:
虽然在信号处理中明显的定义是
sinc(x)=sin(x)/x
sinc
通常被定义为sinc(x)=sin(pi*x)/(pi*x)
请理解,我在这里的主要目标是让代码生成具有一定连贯性的预期曲线,但可能需要进一步细化。
问题中提供的代码的以下更改使所有 3 个图表都符合预期曲线。
close all;clear all;clc
theta_r = [0:.1:90]; % [degree] receiver polar angle
theta_t =30; % [degree] transmitter polar angle range
phi_r= 60; % [degree] receiver azimuth angle range
% amplitude of electric (E-field) of the incident plane
Ei2 = 1;
f = 300e9; % [Hz] carrier frequency
D_r = 4; % [m] distances measured from the (0,0)th IRS element to Rx
c = 3e8; % [m/s] velocity of light
lambda = c/f; % [m] wavelength
%% 1. lx = ly = lambda/2, eq. 9
L_x = lambda/2; % [m] size of reflecting element in x
L_y = lambda/2; % [m] size of reflecting element in y
X = pi*((pi*L_x)/lambda) * sind(theta_r) * cosd(phi_r);
Y = pi*((pi*L_y)/lambda) * ( (sind(theta_r) * sind(phi_r)) - sind(theta_t));
F = cosd(theta_t)^2 * ( (cosd(theta_r).^2 * cosd(phi_r)^2) + sind(phi_r)^2);
Es2_eq9 = 10*log10( ((L_x*L_y)/lambda^2)^2 * (Ei2/D_r^2) * F .*sinc(X).^2 .* sinc(Y).^2*1/pi^4);
plot(theta_r,Es2_eq9,'b');
hold on
axis([0 90 -140 -40])
%% 2. Lx = Ly = lambda/2, eq. 10
Es2_eq10 = 10*log10( ((L_x*L_y)/lambda)^2 * (Ei2/D_r^2) * abs(F));
plot(theta_r,Es2_eq10,'k-.');
%% 3. Lx = Ly = 5*lambda, eq. 9
N=50
L_x = lambda/N;
L_y = lambda/N;
X = pi*((pi*L_x)/lambda) * sind(theta_r) * cosd(phi_r);
Y = pi*((pi*L_y)/lambda) * ( (sind(theta_r) * sind(phi_r)) - sind(theta_t));
F = cosd(theta_t)^2 * ( (cosd(theta_r).^2 * cosd(phi_r)^2) + sind(phi_r)^2);
Es2_eq9_2 = 10*log10(N*((L_x*L_y)/lambda^2)^2 * (Ei2/D_r^2) * F .* sinc(X).^2 .* sinc(Y).^21/pi^4);
plot(theta_r,Es2_eq9_2,'r');
grid on; grid minor;
xlabel('theta_r (degree)');ylabel('|E_s|^2 (dB)');
legend({'L_x = L_y = \lambda/2 (Eq. 9)',...
'L_x = L_y = \lambda/2 (Eq. 10)',...
['L_x = L_y = lambda /' num2str(N) ]}, ...
'Location','northeast');
2.- X 和 Y 修改
标题
pi
符合sinc
定义sinc(x)=sin(pix)/(pix)
计算|Es2|时加入一个因子
1/pi^4
以 dB 为单位,再次满足 sinc
定义,包括 pi.
如果您想知道信号处理中的原因
sinc(x)=sin(pi*x)/(pi*x)
请发布另一个问题。
3.- 电场必须为 [V/m]
否则就不是电场了。
Yet as defined in the paper, right after Figure.2
Es
的单位不是[V/m]
而是[V/m^3]
可能是开因子
(Lx*Ly/lambda)
应该是(Lx*Ly/lambda^2)
.
然而更有可能的是开场
Lx
Ly
因子应该是((Lx/lambda)*(Ly/lambda)/lambda)
.
电场单位的平方为
[V/m]
.
5.- 论文中的第三条曲线可能是错误的
当
Lx
Ly
都上升到 5*lambda
时,所产生的 abs(Es(theta_r))
不能像 Lx
Ly
lambda 的一小部分时那样保持平滑。
论文中的红色图表似乎更接近
Lx
Ly
包含一小部分lambda
而不是几个lambda
.
所以也许对于第 3 条曲线,要么论文图 2 中的第 3 条图不正确,要么不是
Lx=5*lambda
Ly=5*lambda
应该是 Lx=lambda/50
Ly=lambda/50
然后满足 Lx>>lambda 和 Ly>>lambda.
考虑到图 2 中的第 3 条曲线可能不正确。
close all;clear all;clc
theta_r = [0:.1:90]; % [degree] receiver polar angle
theta_t =30; % [degree] transmitter polar angle range
phi_r= 60; % [degree] receiver azimuth angle range
% amplitude of electric (E-field) of the incident plane
Ei2 = 1;
f = 300e9; % [Hz] carrier frequency
D_r = 4; % [m] distances measured from the (0,0)th IRS element to Rx
c = 3e8; % [m/s] velocity of light
lambda = c/f; % [m] wavelength
% 1. lx = ly = lambda/2, eq.9
L_x = lambda/2; % [m] size of reflecting element in x
L_y = lambda/2; % [m] size of reflecting element in y
X = pi*((pi*L_x)/lambda) * sind(theta_r) * cosd(phi_r);
Y = pi*((pi*L_y)/lambda) * ( (sind(theta_r) * sind(phi_r)) - sind(theta_t));
F = cosd(theta_t)^2 * ( (cosd(theta_r).^2 * cosd(phi_r)^2) + sind(phi_r)^2);
Es2_eq9 = 10*log10( ((L_x*L_y)/lambda^2)^2 * (Ei2/D_r^2) * F .*sinc(X).^2 .* sinc(Y).^2*1/pi^4);
plot(theta_r,Es2_eq9,'b');
hold on; grid on
axis([0 90 -140 -40])
% 2. Lx = Ly = lambda/2 , eq.10
Es2_eq10 = 10*log10( ((L_x*L_y)/lambda)^2 * (Ei2/D_r^2) * abs(F));
plot(theta_r,Es2_eq10,'k-.');
% 3. Lx = Ly = 5*lambda , eq.10
N=1/5
L_x = lambda/N;
L_y = lambda/N;
X = pi*((pi*L_x)/lambda) * sind(theta_r) * cosd(phi_r);
Y = pi*((pi*L_y)/lambda) * ( (sind(theta_r) * sind(phi_r)) - sind(theta_t));
F = cosd(theta_t)^2 * ( (cosd(theta_r).^2 * cosd(phi_r)^2) + sind(phi_r)^2);
Es2_eq9_2 = 10*log10(N*((abs(L_x*L_y)/lambda^2)^2 * (Ei2/D_r^2) * F .* sinc(X).^2 .* sinc(Y).^2*1/pi^4));
plot(theta_r,Es2_eq9_2,'r');
xlabel('theta_r (degree)');ylabel('|E_s|^2 (dB)');
legend({'L_x = L_y = \lambda/2 (Eq. 9)',...
'L_x = L_y = \lambda/2 (Eq. 10)',...
['L_x = L_y =' num2str(1/N) ' lambda' ]}, ...
'Location','northeast');