charliec2uk
Electrical
- May 31, 2005
- 2
I have a significant problem with Simulink in that I need to evaluate a series of simple equations, the difficulty is that at point, the results gain an imaginary compnent.
a=complex(1,2);
b=complex(1,2);
c=complex(1,2);
d=complex(1,2);
Position = (Position/360)*2*pi; % Convert to Radians
[height, r_dash, capacitance] = definevariables(alpha,voltage,radius,height_sp,rel_perm);
beta = (alpha/360)*2*pi;
upper_limit = gamma2-Position;
lower_limit = gamma1-Position;
a = capacitance*((r_dash / (cos(upper_limit)^2))*log((r_dash/cos(upper_limit))-out_radius)+(out_radius/cos(upper_limit)));
b = capacitance*((r_dash / (cos(upper_limit)^2))*log((r_dash/cos(upper_limit))-in_radius)+(in_radius/cos(upper_limit)));
c = capacitance*((r_dash / (cos(lower_limit)^2))*log((r_dash/cos(lower_limit))-out_radius)+(out_radius/cos(lower_limit)));
d = capacitance*((r_dash / (cos(lower_limit)^2))*log((r_dash/cos(lower_limit))-in_radius)+(in_radius/cos(lower_limit)));
The value for Position is from a signal generator outside the block, scaling from 0 to 360(degrees). The difficulty is than one the term inside the log brackets goes negative, the function returns a negative value and apparently simulink can't resolve this, so return 'NaN'. A test, I even tried assigning sqrt(-1) to a variable, and got the same results. Please help! Deadline soon.
Thanks
Charlie
a=complex(1,2);
b=complex(1,2);
c=complex(1,2);
d=complex(1,2);
Position = (Position/360)*2*pi; % Convert to Radians
[height, r_dash, capacitance] = definevariables(alpha,voltage,radius,height_sp,rel_perm);
beta = (alpha/360)*2*pi;
upper_limit = gamma2-Position;
lower_limit = gamma1-Position;
a = capacitance*((r_dash / (cos(upper_limit)^2))*log((r_dash/cos(upper_limit))-out_radius)+(out_radius/cos(upper_limit)));
b = capacitance*((r_dash / (cos(upper_limit)^2))*log((r_dash/cos(upper_limit))-in_radius)+(in_radius/cos(upper_limit)));
c = capacitance*((r_dash / (cos(lower_limit)^2))*log((r_dash/cos(lower_limit))-out_radius)+(out_radius/cos(lower_limit)));
d = capacitance*((r_dash / (cos(lower_limit)^2))*log((r_dash/cos(lower_limit))-in_radius)+(in_radius/cos(lower_limit)));
The value for Position is from a signal generator outside the block, scaling from 0 to 360(degrees). The difficulty is than one the term inside the log brackets goes negative, the function returns a negative value and apparently simulink can't resolve this, so return 'NaN'. A test, I even tried assigning sqrt(-1) to a variable, and got the same results. Please help! Deadline soon.
Thanks
Charlie