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];