Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations cowski on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

Complex numbers for Embedded matlab in Simulink.

Status
Not open for further replies.

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
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor