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

조회 수: 4 (최근 30일)
Elif
Elif 2024년 5월 25일
이동: Voss 2024년 9월 29일
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
Susan 2024년 9월 29일
이동: Voss 2024년 9월 29일
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일
이동: Voss 2024년 9월 29일
"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에서 General Applications에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by