📄 slmsolver_wrapper.c
字号:
/*
*
* --- THIS FILE GENERATED BY S-FUNCTION BUILDER: 2.0 ---
*
* This file is a wrapper S-function produced by the S-Function
* Builder which only recognizes certain fields. Changes made
* outside these fields will be lost the next time the block is
* used to load, edit, and resave this file. This file will be overwritten
* by the S-function Builder block. If you want to edit this file by hand,
* you must change it only in the area defined as:
*
* %%%-SFUNWIZ_wrapper_XXXXX_Changes_BEGIN
* Your Changes go here
* %%%-SFUNWIZ_wrapper_XXXXXX_Changes_END
*
* For better compatibility with the Real-Time Workshop, the
* "wrapper" S-function technique is used. This is discussed
* in the Real-Time Workshop User's Manual in the Chapter titled,
* "Wrapper S-functions".
*
* Created: Sun May 1 01:06:11 2005
*/
/*
* Include Files
*
*/
#include "tmwtypes.h"
/* %%%-SFUNWIZ_wrapper_includes_Changes_BEGIN --- EDIT HERE TO _END */
#include <math.h>
/* %%%-SFUNWIZ_wrapper_includes_Changes_END --- EDIT HERE TO _BEGIN */
#define u_width 1
#define y_width 1
/*
* Create external references here.
*
*/
/* %%%-SFUNWIZ_wrapper_externs_Changes_BEGIN --- EDIT HERE TO _END */
/* extern double func(double a); */
/* %%%-SFUNWIZ_wrapper_externs_Changes_END --- EDIT HERE TO _BEGIN */
/*
* Output functions
*
*/
void SLMsolver_Outputs_wrapper(const creal_T *block0,
const creal_T *block1,
const creal_T *block2,
const creal_T *block3,
creal_T *phase)
{
/* %%%-SFUNWIZ_wrapper_Outputs_Changes_BEGIN --- EDIT HERE TO _END */
/* This sample sets the output equal to the input
y0[0] = u0[0];
For complex signals use: y0[0].re = u0[0].re;
y0[0].im = u0[0].im;
y1[0].re = u1[0].re;
y1[0].im = u1[0].im;*/
int_T p0,p1,p2,p3,i;
int_T max_p0, max_p1,max_p2,max_p3 ;
real_T min_PAR, cos_p0,sin_p0, cos_p1,sin_p1, cos_p2,sin_p2,cos_p3,sin_p3 ;
real_T sum_energy, max_power ;
int_T data_width = ssGetInputPortWidth(S,0) ;
creal_T* S = new creal_T[data_width] ;
min_PAR = 1.0e15 ;
max_p0 = 0 ;
max_p1 = 0 ;
max_p2 = 0 ;
max_p3 = 0 ;
for ( p0 = 0 ; p0 < 4 ; p0++ )
{
for ( p1 = 0 ; p1 < 4 ; p1++ )
{
for ( p2 = 0 ; p2 < 4 ; p2++ )
{
for ( p3 = 0 ; p3 < 4 ; p3++ )
{
sum_energy = 0;
max_power = 0;
for ( i = 0 ; i < data_width ; i++ )
{
cos_p0 = cos(p0*pi/2 + pi/4) ;
sin_p0 = sin(p0*pi/2 + pi/4) ;
cos_p1 = cos(p1*pi/2 + pi/4) ;
sin_p1 = sin(p1*pi/2 + pi/4) ;
cos_p2 = cos(p2*pi/2 + pi/4) ;
sin_p2 = sin(p2*pi/2 + pi/4) ;
cos_p3 = cos(p3*pi/2 + pi/4) ;
sin_p3 = sin(p3*pi/2 + pi/4) ;
S[i].re = block0[i].re * cos_p0 - block0[i].im * sin_p0
block1[i].re * cos_p1 - block1[i].im * sin_p1
block2[i].re * cos_p2 - block2[i].im * sin_p2
block3[i].re * cos_p3 - block3[i].im * sin_p3 ;
S[i].im = block0[i].im * cos_p0 + block0[i].re * sin_p0
block1[i].im * cos_p1 + block1[i].re * sin_p1
block2[i].im * cos_p2 + block2[i].re * sin_p2
block3[i].im * cos_p3 + block2[i].re * sin_p3 ;
sum_energy = sum_energy + S[i].re * S[i].re + S[i].im * S[i].im ;
if (max_power<=(S[i].re * S[i].re + S[i].im * S[i].im)
max_power = S[i].re * S[i].re + S[i].im * S[i].im ;
}
if (min_PAR >= (data_width * max_power/sum_energy))
{
min_PAR = (data_width * max_power/sum_energy) ;
max_p0 = p0 ;
max_p1 = p1 ;
max_p2 = p2 ;
max_p3 = p3 ;
}
}
}
}
}
phase[0] = max_p0 ;
phase[1] = max_p1 ;
phase[2] = max_p1 ;
phase[3] = max_p3 ;
S = NULL ;
delete S ;
/* %%%-SFUNWIZ_wrapper_Outputs_Changes_END --- EDIT HERE TO _BEGIN */
}
/*
* Updates function
*
*/
void SLMsolver_Update_wrapper(const creal_T *block0,
const creal_T *block1,
const creal_T *block2,
const creal_T *block3,
const creal_T *phase )
{
/* %%%-SFUNWIZ_wrapper_Update_Changes_BEGIN --- EDIT HERE TO _END */
/*
* Code example
* xD[0] = u0[0];
*/
/* %%%-SFUNWIZ_wrapper_Update_Changes_END --- EDIT HERE TO _BEGIN */
}
/*
* Derivatives function
*
*/
void SLMsolver_Derivatives_wrapper(const creal_T *block0,
const creal_T *block1,
const creal_T *block2,
const creal_T *block3,
const creal_T *phase,
real_T *dx )
{
/* %%%-SFUNWIZ_wrapper_Derivatives_Changes_BEGIN --- EDIT HERE TO _END */
/*
* Code example
* dx[0] = xC[0];
*/
/* %%%-SFUNWIZ_wrapper_Derivatives_Changes_END --- EDIT HERE TO _BEGIN */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -