function [sys,x0,str,ts,simStateCompliance] = test_reimg(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts,simStateCompliance] = mdlInitializeSizes;
case 2,
sys = mdlUpdate(t,x,u);
case 3,
sys = mdlOutputs(t,x,u);
case 9,
sys = [];
otherwise
DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));
end
function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes
global n;
cs = 3;
n = cs*2;
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = n;
sizes.NumOutputs = n;
sizes.NumInputs = n;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 = [0 0 0 0 0 0];
str = [];
ts = [-1 0;];
simStateCompliance = 'DefaultSimState';
function sys = mdlUpdate(t,x,u)
sys = x;
function sys = mdlOutputs(t,x,u)
global n;
r = [];
phi = [];
limit = n/2
for x = 1:limit
r(x) = abs(u(x)+u(x+limit)*1i)
phi(x) = angle(u(x)+u(x+limit)*1i)-pi/4
end
sys = [r phi];