Index exceeds the number of array elements. Index must not exceed 1.
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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)
% 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
% 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 commentaires
Réponses (2)
Image Analyst
le 25 Mai 2024
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.
0 commentaires
Voir également
Catégories
En savoir plus sur General Applications dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!