📄 pt_print.c
字号:
/*
* Copyright 1994-2002 The MathWorks, Inc.
*
* $RCSfile: pt_print.c,v $
* $Revision: 1.16 $
*
* Abstract:
* Parameter tuning example code.
*/
#ifndef __PT_PRINT__
#define __PT_PRINT__
#include <mdl_info.h>
#include <stdio.h>
/* =============================================================================
* Function: rt_ModifyParameter
*
* Abstract:
* This function updates all associated parameters for the specified
* parameter tuning record. The routine works for all data types.
*/
int_T rt_ModifyParameter(void *mpi,
ParameterTuning *ptRec,
void *_newValue)
{
uint_T paramIdx;
uint_T rowIdx;
uint_T colIdx;
uint_T nRows = ptinfoGetNumRows(ptRec);
uint_T nCols = ptinfoGetNumCols(ptRec);
uint_T nParams = ptinfoGetNumInstances(ptRec);
uint_T mapOffset = ptinfoGetParametersOffset(ptRec);
ModelMappingInfo *MMI = (ModelMappingInfo *) mpi;
void * const *pMap = mmiGetParametersMap(MMI);
switch (ptinfoGetDataTypeEnum(ptRec)) {
case SS_DOUBLE:
for(paramIdx = 0; paramIdx < nParams; paramIdx++) {
real_T *param = (real_T *)(pMap[mapOffset + paramIdx]);
real_T *newValue = (real_T *) _newValue; /* param's new value */
switch( ptinfoGetClass(ptRec) ) {
case rt_SCALAR:
*param = *newValue;
break;
case rt_VECTOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
param[rowIdx] = newValue[rowIdx];
}
break;
case rt_MATRIX_ROW_MAJOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
for(colIdx = 0; colIdx < nCols; colIdx++) {
param[rowIdx*nCols + colIdx] =
newValue[rowIdx*nCols + colIdx];
}
}
break;
case rt_MATRIX_COL_MAJOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
for(colIdx = 0; colIdx < nCols; colIdx++) {
param[colIdx*nRows + rowIdx] =
newValue[colIdx*nRows + rowIdx];
}
}
break;
default:
return(1);
}
}
break;
case SS_SINGLE:
for(paramIdx = 0; paramIdx < nParams; paramIdx++) {
real32_T *param = (real32_T *)(pMap[mapOffset + paramIdx]);
real32_T *newValue = (real32_T *) _newValue; /* param's new value */
switch( ptinfoGetClass(ptRec) ) {
case rt_SCALAR:
*param = *newValue;
break;
case rt_VECTOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
param[rowIdx] = newValue[rowIdx];
}
break;
case rt_MATRIX_ROW_MAJOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
for(colIdx = 0; colIdx < nCols; colIdx++) {
param[rowIdx*nCols + colIdx] =
newValue[rowIdx*nCols + colIdx];
}
}
break;
case rt_MATRIX_COL_MAJOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
for(colIdx = 0; colIdx < nCols; colIdx++) {
param[colIdx*nRows + rowIdx] =
newValue[colIdx*nRows + rowIdx];
}
}
break;
default:
return(1);
}
}
break;
case SS_INT8:
for(paramIdx = 0; paramIdx < nParams; paramIdx++) {
int8_T *param = (int8_T *)(pMap[mapOffset + paramIdx]);
int8_T *newValue = (int8_T *) _newValue; /* param's new value */
switch( ptinfoGetClass(ptRec) ) {
case rt_SCALAR:
*param = *newValue;
break;
case rt_VECTOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
param[rowIdx] = newValue[rowIdx];
}
break;
case rt_MATRIX_ROW_MAJOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
for(colIdx = 0; colIdx < nCols; colIdx++) {
param[rowIdx*nCols + colIdx] = newValue[rowIdx*nCols + colIdx];
}
}
break;
case rt_MATRIX_COL_MAJOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
for(colIdx = 0; colIdx < nCols; colIdx++) {
param[colIdx*nRows + rowIdx] = newValue[colIdx*nRows + rowIdx];
}
}
break;
default:
return(1);
}
}
break;
case SS_UINT8:
for(paramIdx = 0; paramIdx < nParams; paramIdx++) {
uint8_T *param = (uint8_T *)(pMap[mapOffset + paramIdx]);
uint8_T *newValue = (uint8_T *) _newValue; /* param's new value */
switch( ptinfoGetClass(ptRec) ) {
case rt_SCALAR:
*param = *newValue;
break;
case rt_VECTOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
param[rowIdx] = newValue[rowIdx];
}
break;
case rt_MATRIX_ROW_MAJOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
for(colIdx = 0; colIdx < nCols; colIdx++) {
param[rowIdx*nCols + colIdx] = newValue[rowIdx*nCols + colIdx];
}
}
break;
case rt_MATRIX_COL_MAJOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
for(colIdx = 0; colIdx < nCols; colIdx++) {
param[colIdx*nRows + rowIdx] = newValue[colIdx*nRows + rowIdx];
}
}
break;
default:
return(1);
}
}
break;
case SS_INT16:
for(paramIdx = 0; paramIdx < nParams; paramIdx++) {
int16_T *param = (int16_T *)(pMap[mapOffset + paramIdx]);
int16_T *newValue = (int16_T *) _newValue; /* param's new value */
switch( ptinfoGetClass(ptRec) ) {
case rt_SCALAR:
*param = *newValue;
break;
case rt_VECTOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
param[rowIdx] = newValue[rowIdx];
}
break;
case rt_MATRIX_ROW_MAJOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
for(colIdx = 0; colIdx < nCols; colIdx++) {
param[rowIdx*nCols + colIdx] = newValue[rowIdx*nCols + colIdx];
}
}
break;
case rt_MATRIX_COL_MAJOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
for(colIdx = 0; colIdx < nCols; colIdx++) {
param[colIdx*nRows + rowIdx] = newValue[colIdx*nRows + rowIdx];
}
}
break;
default:
return(1);
}
}
break;
case SS_UINT16:
for(paramIdx = 0; paramIdx < nParams; paramIdx++) {
uint16_T *param = (uint16_T *)(pMap[mapOffset + paramIdx]);
uint16_T *newValue = (uint16_T *) _newValue; /* param's new value */
switch( ptinfoGetClass(ptRec) ) {
case rt_SCALAR:
*param = *newValue;
break;
case rt_VECTOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
param[rowIdx] = newValue[rowIdx];
}
break;
case rt_MATRIX_ROW_MAJOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
for(colIdx = 0; colIdx < nCols; colIdx++) {
param[rowIdx*nCols + colIdx] = newValue[rowIdx*nCols + colIdx];
}
}
break;
case rt_MATRIX_COL_MAJOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
for(colIdx = 0; colIdx < nCols; colIdx++) {
param[colIdx*nRows + rowIdx] = newValue[colIdx*nRows + rowIdx];
}
}
break;
default:
return(1);
}
}
break;
case SS_INT32:
for(paramIdx = 0; paramIdx < nParams; paramIdx++) {
int32_T *param = (int32_T *)(pMap[mapOffset + paramIdx]);
int32_T *newValue = (int32_T *) _newValue; /* param's new value */
switch( ptinfoGetClass(ptRec) ) {
case rt_SCALAR:
*param = *newValue;
break;
case rt_VECTOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
param[rowIdx] = newValue[rowIdx];
}
break;
case rt_MATRIX_ROW_MAJOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
for(colIdx = 0; colIdx < nCols; colIdx++) {
param[rowIdx*nCols + colIdx] = newValue[rowIdx*nCols + colIdx];
}
}
break;
case rt_MATRIX_COL_MAJOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
for(colIdx = 0; colIdx < nCols; colIdx++) {
param[colIdx*nRows + rowIdx] = newValue[colIdx*nRows + rowIdx];
}
}
break;
default:
return(1);
}
}
break;
case SS_UINT32:
for(paramIdx = 0; paramIdx < nParams; paramIdx++) {
uint32_T *param = (uint32_T *)(pMap[mapOffset + paramIdx]);
uint32_T *newValue = (uint32_T *) _newValue; /* param's new value */
switch( ptinfoGetClass(ptRec) ) {
case rt_SCALAR:
*param = *newValue;
break;
case rt_VECTOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
param[rowIdx] = newValue[rowIdx];
}
break;
case rt_MATRIX_ROW_MAJOR:
for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
for(colIdx = 0; colIdx < nCols; colIdx++) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -