SCL变换函数与数学运算中的缩放功能详解
一、数据类型转换
Portal的转换函数位于Portal的“基本指令/转换操作”目录下。由于SCL为强类型转换,不同类型的变量无法直接进行运算(个人觉得下几代软件会更改转换的相应操作),所以在实行不同类型的数据运算时,需要进行数据类型转换,将数据类型转换为一致之后,再进行数据运算。
SCL中大部分类型转换都是隐式转换,对于无法进行隐式转换的类型,软件在编译过程中会提示。在强制转换中,转换统一格式如下:
原数据类型_To_目标数据类型
也可以使用“CONVERT:转换值”对话框进行数据类型的转换,直接双击CONVERT
基本函数
函数名 | 功能 |
例子 |
ROUND |
“取整”指令用于将输入 IN 的值取整为最接近的整数。 该指令将输入 IN 的值解释为浮点数,并将其转换为一个整数或浮点数。 如果输入值恰好是在一个偶数和一个奇数之间,则选择偶数。 |
"Tag_Result" := ROUND("Tag_Value"); |
CEIL |
使用“浮点数向上取整”指令将值取整为最近接的整数。该指令将输入值解释为浮点数, 并将其转换为紧邻的较大整数。 函数值可以大于或等于输入值。 |
"Tag_Result1" := CEIL("Tag_Value"); "Tag_Result2" := CEIL_REAL("Tag_Value"); |
FLOOR |
使用“浮点数向下取整”指令将一个浮点数的值取整为紧邻的较小整数。 该指令将输入值解释为浮点数,并将其转换为紧邻的较小整数。 函数值可等于或小于输入值。 |
"Tag_Result1" := FLOOR("Tag_Value"); "Tag_Result2" := FLOOR_REAL("Tag_Value"); |
TRUNC |
截尾取整”指令用于直接从输入值中截取整数。该指令仅选择输入值的整数部分, 并将这一部分(不含小数位)作为函数值返回。 |
"Tag_Result1" := TRUNC("Tag_Value1"); "Tag_Result2" := TRUNC("Tag_Value2"+"Tag_Value3"); "Tag_Result3" := TRUNC_SINT("Tag_Value4"); |
基本缩放与传统缩放
缩放函数:SCALE_X与SCALE
标准化:NORM_X
取消缩放:UNSCALE
注:SCALE与UNSCALE只支持1500
SCALE_X:缩放
数模转换中常用到缩放,缩放函数实际上就是一个线性映射的过程
官方的解释如下:
使用“缩放”指令将浮点数映射到指定的取值范围来进行缩放。可使用 MIN 和 MAX 参数指定取值范围。缩放的结果为整数。
具体计算公式如下:OUT = [VALUE ∗ (MAX – MIN)] + MIN
这个过程实际上非常简单,拿个最简单的例子,生产一把1M的尺子,标刻度的过程就是先取1米的长度,然后10等分,得到dm,然后每段10等分得到cm,再10等分就有mm。
对于线性变换的量来说就是一个等分加映射的过程。
如果需要在SCALE_X中更改结果的数据类型,在其后加“_数据类型”即可。
具体示例如下:
"Tag_Result1" := SCALE_X(MIN := "Tag_Value1",
VALUE := "Tag_Real",
MAX := "Tag_Value2");
"Tag_Result2" := SCALE_X_REAL(MIN := "Tag_Value1",
VALUE := "Tag_Real",
MAX := "Tag_Value2");
其结果如下:
变量 |
计算结果 |
Tag_Real |
0.5 |
Tag_Value1 |
10 |
Tag_Value2 |
30 |
Tag_Result1 |
20 |
Tag_Result2 |
20.0 |
NORM_X
标准化过程
可以使用“标准化”指令,通过将输入 VALUE 中变量的值映射到线性标尺对其进行标准化。可以使用参数 MIN 和 MAX 定义(应用于该标尺的)值范围的限值。输出 OUT 中的结果经过计算并存储为浮点数,这取决于要标准化的值在该值范围中的位置。如果要标准化的值等于输入 MIN 中的值,则该指令将返回结果“0.0”。如果要标准化的值等于输入 MAX 中的值,则该指令将返回结果“1.0”。
由缩放函数,相对应就会有标准化函数,缩放相当于量的初转换,要想得到能够使用的量,一般要使用标准换转换
“标准化”指令通过以下公式进行计算:
OUT = (VALUE – MIN) / (MAX – MIN)
示例如下:
"Tag_Result1" := NORM_X(MIN := "Tag_Value1",
VALUE := "Tag_InputValue",
MAX := "Tag_Value2");
"Tag_Result2" := NORM_X_LREAL(MIN := "Tag_Value1",
VALUE := "Tag_InputValue",
MAX := "Tag_Value2");
运算结果如下:
变量 | 结果 |
Tag_InputValue |
20 |
Tag_Value1 |
10 |
Tag_Value2 |
30 |
Tag_Result1 |
0.5 |
Tag_Result2 |
0.5 |
SCALE:缩放
数模转换在后期的文章会单出一篇,所以在此只列出SCALE函数
可以使用“缩放”指令将参数 IN 上的整数转换为浮点数,该浮点数在介于上下限值之间的物理单位内进行缩放。通过参数 LO_LIM 和 HI_LIM 来指定缩放输入值取值范围的下限和上限。指令的结果在参数 OUT 中输出。
“缩放”指令将按以下公式进行计算:
OUT = [((FLOAT (IN) – K1)/(K2–K1)) ∗ (HI_LIM–LO_LIM)] + LO_LIM
常数“K1”和“K2”的值取决于参数 BIPOLAR 的信号状态。参数 BIPOLAR 可能的信号状态为:
信号状态“1”:假设参数 IN 的值为双极性且取值范围是 -27648 到 27648。此时,常数“K1”的值为 -27648.0,而常数“K2”的值为 +27648.0。
信号状态“0”:假设参数 IN 的值为单极性且取值范围是 0 到 27648。此时,常数“K1”的值为 0.0,而常数“K2”的值为 +27648.0。
如果参数 IN 的值大于常数“K2”的值,则将指令的结果设置为上限值 (HI_LIM) 并输出一个错误。
如果参数 IN 的值小于常数“K1”的值,则将指令的结果设置为下限值 (LO_LIM) 并输出一个错误。
如果指定的下限值大于上限值 (LO_LIM > HI_LIM),则结果将对输入值进行反向缩放。
二、数学函数
函数名 | 功能 | 示例 |
ABS | 使用“计算绝对值”指令可计算输入值的绝对值,并将结果保存到指定的操作数中。 |
"Tag_Result1" := ABS("Tag_Value"); "Tag_Result2" := ABS("Tag_Value1"*"Tag_Value2"); |
MIN |
使用“获取最小值”指令比较可用输入的值,并将最小的值作为结果返回。 在该指令处,最少需要指定 2 个输入,最多可以指定 32 个输入。 如果满足以下任何条件,则结果值无效:
|
"Tag_Result" := MIN(IN1 := "Tag_Value1", IN2 := "Tag_Value2", IN3 := "Tag_Value3"); |
MAX |
使用“获取最大值”指令,比较输入值,并将最大的值作为结果返回。 在该指令处,最少需要指定 2 个输入,最多可以指定 32 个输入。 如果满足以下任何条件,则结果值无效:
|
"Tag_Result" := MAX(IN1 := "Tag_Value1", IN2 := "Tag_Value2", IN3 := "Tag_Value3"); |
LIMIT |
可使用“设置限值”指令,将参数 IN 的值限制在参数 MN 和 MX 值之间。参数 MN 的值不能大于参数 MX 的值。 如果参数 IN 的值满足条件 MN <= IN <= MX,则作为该指令的结果返回。如果不满足该条件,而且输入值 (IN) 小于下限 MN,则将参数 MN 的值作为结果返回。如果超出了上限 MX,则将参数 MX 的值作为结果返回。 如果输入 MN 的值大于输入 MX 的值,则结果为 IN 参数中的指定值且使能输出 ENO 为“0”。 只有当所有参数的操作数均为同一种数据类型时,才能执行该指令。 |
"Tag_Result" := LIMIT(MN := "Tag_Minimum", IN := "Tag_Value", MX := "Tag_Maximum"); |
SQR |
使用“计算平方”指令,可以计算输入值的平方值,并将结果保存到指定的操作数中。 |
"Tag_Result1" := SQR("Tag_Value"); "Tag_Result2" := SQR((SQR("Tag_Value1"))*"Tag_Value2"); |
SQRT |
使用“计算平方根”指令,可以计算输入值的平方根,并将结果保存到指定的操作数中。如果输入值大于零,则该指令的结果为正数。如果输入值小于零,则该指令返回一个无效浮点数。如果输入值为“0”,则结果也是“0”。 |
"Tag_Result1" := SQRT("Tag_Value"); "Tag_Result2" := SQRT((SQR("Tag_Value1"))+"Tag_Value2"); |
LN |
使用“计算自然对数”指令,可以计算输入值的以 e (e=2.718282) 为底的自然对数。如果输入值大于零,则该指令的结果为正数。如果输入值小于零,则该指令返回一个无效浮点数。 |
"Tag_Result1" := LN("Tag_Value"); "Tag_Result2" := LN("Tag_Value1"+"Tag_Value2"); |
EXP |
使用“计算指数值”指令,可通过底数 (e = 2.718282) 及输入值来计算指数,并将结果保存在指定的操作数中。 |
"Tag_Result1" := EXP("Tag_Value"); "Tag_Result2" := EXP("Tag_Value1"/"Tag_Value2"); |
SIN | 使用“计算正弦值”指令,可以计算输入值的正弦值。输入值的单位必须为弧度。 | "Tag_Result" := SIN("Tag_Value"); |
COS |
使用“计算余弦值”指令,可以计算输入值的余弦值。输入值的单位必须为弧度。 |
"Tag_Result" := COS("Tag_Value"); |
TAN |
使用“计算正切值”指令,可以计算输入值的正弦值。输入值的单位必须为弧度。 |
"Tag_Result" := TAN("Tag_Value"); |
ASIN | 使用“计算反正弦值”指令,可以计算正弦值所对应的角度值。输入值只能是 -1 到 +1 范围内的有效浮点数。计算出的角度值以弧度为单位,范围在 -π/2 到 +π/2 之间。 | "Tag_Result" := ASIN("Tag_Value"); |
ACOS |
使用“计算反余弦值”指令,可以计算余弦值所对应的角度值。输入值只能是 -1 到 +1 范围内的有效浮点数。计算出的角度值以弧度为单位,范围在 0 到 +π 之间。 | "Tag_Result" := ACOS("Tag_Value"); |
ATAN |
使用“计算反正切值”指令,可以计算正切值所对应的角度值。输入值只能是有效的浮点数(或 -NaN/+NaN)。计算出的角度值以弧度为单位,范围在 -π/2 到 +π/2 之间。 | "Tag_Result" := ATAN("Tag_Value"); |
FRAC |
“返回小数”指令的结果将返回数值的小数位。例如,输入值 123.4567 时,将返回值 0.4567。 |
"Tag_Result1" := FRAC("Tag_Value"); "Tag_Result2" := FRAC_LREAL("Tag_Value"); |
1200与1500的浮点计算能力不错,完全可以使用以上所有函数进行控制函数或者控制算法的编辑,具体例程会在后面的文章展现。
推荐阅读
-
SCL变换函数与数学运算中的缩放功能详解
-
包婷婷 (201550484)作业一 统计软件简介与数据操作-SPSS(Statistical Product and Service Solutions),"统计产品与服务解决方案"软件。最初软件全称为"(SolutionsStatistical Package for the Social Sciences),但是随着SPSS产品服务领域的扩大和服务深度的增加,SPSS公司已于2000年正式将英文全称更改为"统计产品与服务解决方案",标志着SPSS的战略方向正在做出重大调整。为IBM公司推出的一系列用于统计学分析运算、数据挖掘、预测分析和决策支持任务的软件产品及相关服务的总称SPSS,有Windows和Mac OS X等版本。 1984年SPSS总部首先推出了世界上第一个统计分析软件微机版本SPSS/PC+,开创了SPSS微机系列产品的开发方向,极大地扩充了它的应用范围,并使其能很快地应用于自然科学、技术科学、社会科学的各个领域。世界上许多有影响的报刊杂志纷纷就SPSS的自动统计绘图、数据的深入分析、使用方便、功能齐全等方面给予了高度的评价。 R统计软件介绍 R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能。 与其说R是一种统计软件,还不如说R是一种数学计算的环境,因为R并不是仅仅提供若干统计程序、使用者只需指定数据库和若干参数便可进行一个统计分析。R的思想是:它可以提供一些集成的统计工具,但更大量的是它提供各种数学计算、统计计算的函数,从而使使用者能灵活机动的进行数据分析,甚至创造出符合需要的新的统计计算方法。 该语言的语法表面上类似 C,但在语义上是函数设计语言(functional programming language)的变种并且和Lisp 以及 APL有很强的兼容性。特别的是,它允许在"语言上计算"(computing on the language)。这使得它可以把表达式作为函数的输入参数,而这种做法对统计模拟和绘图非常有用。 R是一个免费的*软件,它有UNIX、LINUX、MacOS和WINDOWS版本,都是可以免费下载和使用的。在R主页那儿可以下载到R的安装程序、各种外挂程序和文档。在R的安装程序中只包含了8个基础模块,其他外在模块可以通过CRAN获得。 二、R语言 R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个*、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。 R作为一种统计分析软件,是集统计分析与图形显示于一体的。它可以运行于UNIX,Windows和Macintosh的操作系统上,而且嵌入了一个非常方便实用的帮助系统,相比于其他统计分析软件,R还有以下特点: 1.R是*软件。这意味着它是完全免费,开放源代码的。可以在它的网站及其镜像中下载任何有关的安装程序、源代码、程序包及其源代码、文档资料。标准的安装文件身自身就带有许多模块和内嵌统计函数,安装好后可以直接实现许多常用的统计功能。[2] 2.R是一种可编程的语言。作为一个开放的统计编程环境,语法通俗易懂,很容易学会和掌握语言的语法。而且学会之后,我们可以编制自己的函数来扩展现有的语言。这也就是为什么它的更新速度比一般统计软件,如,SPSS,SAS等快得多。大多数最新的统计方法和技术都可以在R中直接得到。[2] 3. 所有R的函数和数据集是保存在程序包里面的。只有当一个包被载入时,它的内容才可以被访问。一些常用、基本的程序包已经被收入了标准安装文件中,随着新的统计分析方法的出现,标准安装文件中所包含的程序包也随着版本的更新而不断变化。在另外版安装文件中,已经包含的程序包有:base一R的基础模块、mle一极大似然估计模块、ts一时间序列分析模块、mva一多元统计分析模块、survival一生存分析模块等等.[2] 4.R具有很强的互动性。除了图形输出是在另外的窗口处,它的输入输出窗口都是在同一个窗口进行的,输入语法中如果出现错误会马上在窗口口中得到提示,对以前输入过的命令有记忆功能,可以随时再现、编辑修改以满足用户的需要。输出的图形可以直接保存为JPG,BMP,PNG等图片格式,还可以直接保存为PDF文件。另外,和其他编程语言和数据库之间有很好的接口。[2] 5.如果加入R的帮助邮件列表一,每天都可能会收到几十份关于R的邮件资讯。可以和全球一流的统计计算方面的专家讨论各种问题,可以说是全世界最大、最前沿的统计学家思维的聚集地.[2] R是基于S语言的一个GNU项目,所以也可以当作S语言的一种实现,通常用S语言编写的代码都可以不作修改的在R环境下运行。 R的语法是来自Scheme。R的使用与S-PLUS有很多类似之处,这两种语言有一定的兼容性。S-PLUS的使用手册,只要稍加修改就可作为R的使用手册。所以有人说:R,是S-PLUS的一个“克隆”。 但是请不要忘了:R是免费的(R is free)。R语言源代码托管在github,具体地址可以看参考资料。[3] 。 R语言的下载可以通过CRAN的镜像来查找。 R语言有域名为.cn的下载地址,有六个,其中两个由Datagurn,由 中国科学技术大学提供的。R语言Windows版,其中由两个下载地点是Datagurn和 USTC提供的。 三、stata Stata 是一套提供其使用者数据分析、数据管理以及绘制专业图表的完整及整合性统计软件。它提供许许多多功能,包含线性混合模型、均衡重复反复及多项式普罗比模式。用Stata绘制的统计图形相当精美。 新版本的STATA采用最具亲和力的窗口接口,使用者自行建立程序时,软件能提供具有直接命令式的语法。Stata提供完整的使用手册,包含统计样本建立、解释、模型与语法、文献等超过一万余页的出版品。 除此之外,Stata软件可以透过网络实时更新每天的最新功能,更可以得知世界各地的使用者对于STATA公司提出的问题与解决之道。使用者也可以透过Stata. Journal获得许许多多的相关讯息以及书籍介绍等。另外一个获取庞大资源的管道就是Statalist,它是一个独立的listserver,每月交替提供使用者超过1000个讯息以及50个程序。 四、PYTHON