Effacer les filtres
Effacer les filtres

angle and abs function gives me 'Subscript indices must either be real positive integers or logicals.' error

5 vues (au cours des 30 derniers jours)
if strcmp(app.Type_of_analysis.Value,'Exact') && app.Primary.Value == 1
R2_= app.R2.Value*(app.Turns_ratio.Value)^2;
X2_double=str2double (app.X2.Value);
X1_double=str2double(app.X1.Value);
Xm_double=str2double(app.Xm.Value);
X2_=X2_double*(app.Turns_ratio.Value)^2;
V2_=app.Load_voltage.Value*(app.Turns_ratio.Value)^2;
angle= -acosd(app.Power_factor.Value);
Power1= app.Input_Power.Value*app.Percentage_of_loading.Value*0.01;
I_load_magnitude=Power1/V2_;
I_load_= I_load_magnitude*cos(angle*pi/180)+I_load_magnitude*sin(angle*pi/180)*1i;
V_x= V2_+I_load_*(R2_+X2_double);
I_m= V_x/Xm_double;
I_c= V_x/app.Rc.Value;
I_phi= I_m+I_c;
I_input= I_phi+I_load_;
I_input_angle= angle(I_input); ****Error*****
I_input_magnitude= abs(I_input); ****Error*****
Input_voltage= V_x+I_input*(app.R1+X1_double);
app.Input_voltage_magnitude= abs(Input_voltage);
app.Input_voltage_angle= angle(Input_voltage);
Power_factor1= cos(angle(Input_voltage)-I_input_angle);
app.Input_Power.Value=app.Input_voltage_magnitude*I_input_magnitude*Power_factor1;
app.Voltage_regulation.Value=(app.Input_voltage_magnitude-V2_)/V2_*100;
end

Réponse acceptée

Star Strider
Star Strider le 19 Avr 2022
First the code defines:
angle= -acosd(app.Power_factor.Value);
then later it calls the angle function:
I_input_angle= angle(I_input); ****Error*****
and MATLAB now firmly believes that angle is a variable and not a function because that is what you told it earlier.
The solution is to re-name the ‘angle’ variable to something that does not overshadow the angle function and means something in context, for example ‘pf_angle’.
I do not see that anything is assigned to a variable ‘abs’, however I suspect something similar was done somewhere else in the code. The solution is similar.
.

Plus de réponses (1)

Voss
Voss le 18 Avr 2022
Do you have a variable called abs? To find out, do:
whos abs
If there is one, clear it by doing:
clear abs
This will clear the variable abs from your workspace, allowing you to run the function abs.
  2 commentaires
youssef Mostafa
youssef Mostafa le 19 Avr 2022
The error appears in the angle and abs function. and I tried ur solution but I didn't find a variable named abs
John D'Errico
John D'Errico le 19 Avr 2022
You don't understand. This error essentially indicates you have done exactly that. For example, we see this line of code:
angle= -acosd(app.Power_factor.Value);
So you did create a variable named angle. Then you try to use the function angle.
I_input_angle= angle(I_input); ****Error*****
However, this fragment of code is only part of what you have written. Somewhere in that code, you have defined a variable named abs.
DON'T DO THAT!

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by