angle and abs function gives me 'Subscript indices must either be real positive integers or logicals.' error
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
youssef Mostafa
am 18 Apr. 2022
Kommentiert: John D'Errico
am 19 Apr. 2022
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
0 Kommentare
Akzeptierte Antwort
Star Strider
am 19 Apr. 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.
.
0 Kommentare
Weitere Antworten (1)
Voss
am 18 Apr. 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 Kommentare
John D'Errico
am 19 Apr. 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!
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!