You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

复现太赫兹IRS论文图2:散射场幅度平方曲线不符求排查

论文图复现问题排查:《Intelligent Reflecting Surfaces at Terahertz Bands: Channel Modeling and Analysis》图2

问题概述

我正在复现论文《Intelligent Reflecting Surfaces at Terahertz Bands: Channel Modeling and Analysis》中的图2(散射场幅度平方随观测角度变化曲线),当前用MATLAB生成的曲线趋势及y轴范围与论文原图存在明显差异,需要排查代码错误。

论文图2展示三条曲线:$L_x = L_y = \lambda/2$(Eq.9)、$L_x = L_y = \lambda/2$(Eq.10)、$L_x = L_y = 5\lambda$(Eq.9),反映散射场幅度平方随$\theta_r$的变化规律。

所用MATLAB代码

% 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']);

核心错误点及修正方案

  • MATLABsinc函数定义不匹配
    论文中的sinc函数标准定义为$\text{sinc}(x) = \frac{\sin(x)}{x}$,但MATLAB自带的sinc函数是$\text{sinc}(x) = \frac{\sin(\pi x)}{\pi x}$,直接使用会导致计算结果偏差。
    修正:将所有sinc(X)替换为sin(X)./X,同时添加X(X==0)=eps;避免除零错误。

  • 缺少归一化处理
    论文图中的曲线大概率做了归一化(将每条曲线的最大值设为0dB),而代码直接计算绝对dB值,导致y轴范围与趋势不符。
    修正:对每条曲线执行归一化,例如:

    E_s_NormSquared_eq9 = E_s_NormSquared_eq9 - max(E_s_NormSquared_eq9);
    
  • 距离参数$D_r$的物理意义偏差
    代码中$D_r$定义为从(0,0)号IRS元素到接收机的距离,但论文中可能指从IRS阵列中心到接收机的距离,当阵列尺寸较大(如$5\lambda$)时,该差异会影响幅度计算。
    修正:确认论文中$D_r$的定义,若为阵列中心距离,需调整代码中距离项的计算逻辑。


内容的提问来源于stack exchange,提问作者Huá dé ní 華得尼

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 08:27:06