Index exceeds the number of array elements. Index must not exceed 1.

13 次查看(过去 30 天)
I got "Index exceeds the number of array elements. Index must not exceed 1." problem in the line 36 at the code below:
% Define constants
c = 3e8; % Speed of light
% Define scenario parameters (adjust these as needed)
f = 2e9; % Operating frequency
d_BS_IRS = 100; % Distance between BS and IRS (meters)
d_IRS_UE = 50; % Distance between IRS and UE (meters)
% Define IRS element properties
material = "metal"; % Choose "metal" or "plastic"
element_spacing = 0.5; % Spacing between elements (meters)
% Function to calculate reflection coefficient
function reflectionCoefficient = getReflectionCoefficient(material, theta)
if strcmp(material, "metal")
reflectionCoefficient = ones(size(theta));
elseif strcmp(material, "plastic")
reflectionCoefficient = 0.5 * ones(size(theta));
else
error("Invalid material type");
end
end
% Simulate for different incident angles
theta_range = -30:0.5:30; % Range of incident angles (degrees)
theta = deg2rad(theta_range); % Convert to radians
% Calculate path lengths for each angle
path_length_BS_IRS_UE = d_BS_IRS + d_IRS_UE;
path_length_BS_IRS_reflect_UE = 2 * sqrt(d_BS_IRS^2 + d_IRS_UE^2)
path_length_BS_IRS_reflect_UE = 223.6068
% Loop through angles and calculate phase shifts for perfect reflection
phase_shifts = zeros(size(theta));
for i = 1:length(theta)
% Ideal phase shift for constructive interference at UE
phase_shifts(i) = 2*pi*f/c * (path_length_BS_IRS_reflect_UE(i) - path_length_BS_IRS_UE); %(!!!ERROR!!!!)
end
Index exceeds the number of array elements. Index must not exceed 1.
% Simulate reflection with material properties
reflection_coefficients = getReflectionCoefficient(material, theta);
% Plot results (modify for desired visualization)
figure;
plot(theta_range, abs(reflection_coefficients).^2, 'DisplayName', material);
xlabel('Incident Angle (degrees)');
ylabel('Reflected Power (normalized)');
title('Reflection Coefficient vs. Incident Angle');
legend;
Here is the error line:
phase_shifts(i) = 2*pi*f/c * (path_length_BS_IRS_reflect_UE(i) - path_length_BS_IRS_UE); %(!!!ERROR!!!!)
  2 个评论
Susan Duff
Susan Duff 2024-9-29,0:03
移动:Voss 2024-9-29,1:45
Index exceeds the number of array elements. Index must not exceed 1.
Error in Twosensors_h5read_2024_Daylong_Excel_resultant_SD_1sensor (line 55)
out(k).time = out(k).time - out(k).time(1);
Voss
Voss 2024-9-29,1:45
移动:Voss 2024-9-29,1:45
"out" has only 1 element, but "k" is greater than 1.

请先登录,再进行评论。

回答(2 个)

Torsten
Torsten 2024-5-25
编辑:Torsten 2024-5-25
path_length_BS_IRS_reflect_UE(i) does not exist for i > 1 because path_length_BS_IRS_reflect_UE is a scalar value, namely 223.6068.

Image Analyst
Image Analyst 2024-5-25
Why do you think path_length_BS_IRS_reflect_UE = 2 * sqrt(d_BS_IRS^2 + d_IRS_UE^2) should have a value for i = 2m 3m etc, when you defined it as a single number:
path_length_BS_IRS_reflect_UE = 2 * sqrt(d_BS_IRS^2 + d_IRS_UE^2)
You say that you want to compute the path length for each angle but you are not using the angle theta in any way whatsoever when you do
% Calculate path lengths for each angle
path_length_BS_IRS_UE = d_BS_IRS + d_IRS_UE;
path_length_BS_IRS_reflect_UE = 2 * sqrt(d_BS_IRS^2 + d_IRS_UE^2)
so those two variables are simply single numbers, not vectors.

类别

Help CenterFile Exchange 中查找有关 2-D and 3-D Plots 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by