Borrar filtros
Borrar filtros

Quickly create symmetric/ antisymmetric piecewise function to use in simulink

1 visualización (últimos 30 días)
I need to create the curve in red below.
It is a periodic piecewise function with period T = 2*pi, defined in the first quarter period [0,pi/2] by:
2M*1.73/pi* cos(x-pi/6) if 0<x<pi/3
2M*1.73/pi* 1.73 * cos(x) if pi/3<x<pi/2
where M = 0.907.
After that, as you can see in the picture, highlighted in red, the function continues between pi/2 and pi being the antisymmetric of the previous.
Between pi and 2*pi, again it is the symmetric of all the previous.
I am using this code
syms y(x);
M = 0.907;
coeff = 2 * M * sqrt(3)/pi;
cond1 = x>0&x<pi/3;
cond2 = x>pi/3&x<pi/2;
val1 = coeff*cos(x-pi/6);
val2 = coeff*sqrt(3) * cos(x);
y(x) = piecewise( cond1, val1, cond2, val2 );
fplot(y(x))
to plot the first quarter of the function.
I am able to wrap my mind and plot the function all the way up til 2*pi, but it is not flexible.
How can I quickly plot all the function in [ 0, 2*pi ]?
how can I make it periodic of period T = 2*pi?
Please keep in mind I don't want to discretize the function using any linspace, I should be able to query the function and get the exact value, not an interpolated one.
This is not school homework, the function comes from a book about three phase electric motor space vector modulation.
I plan of using this function as an output in simulink.
Thank you!

Respuestas (0)

Categorías

Más información sobre Simulink en Help Center y File Exchange.

Productos


Versión

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by