C++实现的归一化和反归一化处理函数
更新时间:2024-01-14 03:15:02 阅读量: 教育文库 文档下载
C++实现的归一化和反归一化处理函数
///////////////////////////////////////////////////////////////////////////////////////////////////
void __fastcall TModelManage::TranslateData(TModel* pModel,int Id,double *Value,int Flag) {
//转换函数类型 int iChgFunc;
//节点对应的最大、最小值 double dMaxValue,dMinValue;
//取节点配置信息:转换函数类型,最大值,最小值
GetNodeConfValue(pModel->ConfTable,Id,&iChgFunc,&dMaxValue,&dMinValue); if(Flag==1) //仿真时不取边界值,以避免仿真结果误差太大 {
if(*Value<=(dMinValue*1.005)) *Value=dMinValue*1.005; if(*Value>=(dMaxValue*0.995)) *Value=dMaxValue*0.995; } else {
if(*Value<=dMinValue) *Value=dMinValue; if(*Value>=dMaxValue) *Value=dMaxValue; }
//线性函数转换,转换在0-1之内 if(iChgFunc==0) {
*Value=(*Value-dMinValue)/(dMaxValue-dMinValue); }
//用atan函数转换在0-1之内 else if(iChgFunc==2) {
*Value=atan(*Value)*2/M_PI; }
//用log函数转换 else if(iChgFunc==1) {
if(*Value<=1) *Value=0; else
*Value=log10(*Value); //用log10函数转换(缩小)
if(dMaxValue>1)
*Value=*Value/log10(dMaxValue); //转换为0-1之间 }
//不用转换
else if(iChgFunc==3) {
*Value=*Value; }
*Value=((0.5-0.001)/0.5)*(*Value)+0.001; //用线性函数把数据转换为0.001-0.0.9995之间 }
/////////////////////////////////////////////////////////////////////////////////////////////////// //反数据转换,主要是针对仿真结果要反算回实际预测的值
void __fastcall TModelManage::UnTranslateData(TModel* pModel,int Id,double *Value,int Flag) {
//转换函数类型 int iChgFunc;
//节点对应的最大、最小值 double dMaxValue,dMinValue;
//取节点配置信息:转换函数类型,最大值,最小值
GetNodeConfValue(pModel->ConfTable,Id,&iChgFunc,&dMaxValue,&dMinValue);
*Value=(((*Value)-0.001)*0.5)/(0.5-0.001); //对应于---->用线性函数把数据转换为0.001-0.0.9995之间
//反线性函数转换 if(iChgFunc==0) {
*Value=(*Value)*(dMaxValue-dMinValue)+dMinValue; }
//用tan函数转换 else if(iChgFunc==2) {
*Value=tan(*Value)*M_PI/2; }
//用反log函数转换 else if(iChgFunc==1) {
*Value=pow(10,(*Value)); //用反对数方式函数转换(放大) }
else if(iChgFunc==3) {
*Value=*Value; //不用转换 } }
归一化处理其实本身比较简单理解,就是要先把数据按一定规则处理在一个区间内,比如x1到x2之间(0到1或是-1到1之间): 公式为:
归一化后数据=
x1+[(x2-x1)*(归一化前数据-数据中的最小值)/(数据中的最大值-数据中的最小值)]
盲孔优化分析序列 分析序列 盲孔深度 (mm) 盲孔直径 (mm) 盲孔处最大应力(MPa) 总体 1 3.0 2 3 4 4.1502 33.708 5 4.2678 35.621 6 7 5.3887 3.5520 4.3815 4.2861 35.903 34.334 32.0 32.743 34.154 445.33 687.44 501.90 0.195 0.198 74E+07 74E+07 550.90 0.199 23E+07 557.34 0.195 49E+07 598.01 568.67 0.197 0.198 积0.200 4E+07 (mm3) 17E+07 13E+07
function guiyihua( )
p1=[3.0 5.3887 3.5520 4.1502 4.2678 4.3815 4.2861]; p2=[32.0 32.743 34.154 33.708 35.621 35.903 34.334]; t=[445.33 687.44 501.90 550.90 557.34 598.01 568.67];
x1=0; x2=1;
maxp1=max(p1); minp1=min(p1); maxp2=max(p2); minp2=min(p2); maxt=max(t); mint=min(t); for i=1:7
newp1(i)=x1+[(x2-x1)*(p1(i)-minp1)/(maxp1-minp1)]; newp2(i)=x1+[(x2-x1)*(p2(i)-minp2)/(maxp2-minp2)];
newt(i)=x1+[(x2-x1)*(t(i)-mint)/(maxt-mint)]; end newp1 newp2 newt
运行出来的数据为: newp1 =
newp2 =
newt =
0 1.0000 0 0.1904 0 1.0000 0.2311 0.4815 0.5519 0.4376 0.2337 0.4360 0.5307 0.5783 0.9277 1.0000 0.4626 0.6306 0.5384 0.5980 0.5094
正在阅读:
C++实现的归一化和反归一化处理函数01-14
工作台,常见故障的解决方法介绍04-24
思品二年级下册全册教案09-28
报检单填制实例04-06
论我国教育思想和教育制度的创新09-18
酒店董事长迎新发言稿04-10
苏教版国标本四年级下册数学教案第一单元04-13
爱的记号作文400字07-10
扶持发展产业扶贫型龙头企业实施方案02-25
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- C++
- 函数
- 实现
- 处理
- 2011-1-13八年信息技术级学生问卷调查报告
- 格列夫游记阅练习含答案全
- 日本古典文化的先秦哲学思考
- 农村户用沼气池的规划、放线、浇注技术要点
- 2015年厦门市集美区中考一模数学试卷
- 东财《建筑结构B》在线作业三(随机)17春
- 我与企业共成长-演讲稿
- 第一单元测试题及试卷答案
- 二年级语文上册1-8单元写字表组词
- 河南电大专科《社交礼仪》网上一体化考试试题及答案(2017秋期版)
- 33000KVA硅铁炉除尘方案
- 参考文献翻译
- 广东省六校联盟2018届高三第一次联考语文试题
- 2017-2018学年下小学英语培优补差总结
- 四年级S版语文下册第二单元测试题
- 4套社会工作案例分析(附答案)
- 电影《阿甘正传》全部台词中英文对照
- 战略研究专员岗位说明书
- 医院管理信息系统
- 地藏经(含仪轨)