威纶宏指令分类还是挺多的,初始使用与学习时,还是每个
指令都实践一遍比较好,
在编写程序时,可以很快的
调用。这小节是统计分类下
的全部函数。如图,划线的
为已经介绍的,下小节会介绍
资料取样函数。
统计分类下共有7个函数,分别为AVERAGE,HARMEAN,MAX, MIN ,MEDIAN,STDEVP,STDEVS。
可以对一系列的数据提取最大值,平均值,最小值等。
下面是每个函数的使用介绍。
在使用这些函数前,我们可以在界面 上准备一个数值显示元件,用于显示计算结果。
元件设置如下图。
读取地址设置为LW0,在格式标签下,
设置显示格式为32位浮点类型,
整数部分显示8位,小数部分显示3位。
1.AVERAGE。
此函数用于计算数组元素的平均值。
例如
float result
int data[5] = {1, 2, 3, 4, 5}
AVERAGE(data[0], result, 5)
函数计算数组内从0开始的5个元素的平均值。
计算结果为(1+2+3+4+5)/5=3。
这里的0表示元素的下标,从0开始计数,5表示参与计算的元素个数,
结果保存到变量result里由于计算结果可能带小数点,所以这里定义了浮点开变量。
我们也可以使用下面的代码,查看函数执行的结果。
macro_command main()
float result
int data[5] = {1, 2, 3, 4, 5}
//计算数组内从0开始的5个元素的平均值。
//结果为(1+2+3+4+5)/5=3
AVERAGE(data[0], result, 5)
//计算数组内从2开始的3个元素的平均值。
//结果为(3+4+5)/3=4
AVERAGE(data[2], result, 3)
SetData(result, "Local HMI", LW, 0, 1)
end macro_command
2. HARMEAN
函数用于计算数组的调和平均数。
函数的计算公式为n/((1/x1)+(1/x2)+...+(1/xn))
例如
float result
int data[5] = {1, 2, 3, 4, 5}
HARMEAN(data[0], result, 5)
函数计算从元素0开始5个元素的调和平均数。
计算过程为 5/( (1/1+1/2+1/3+1/4+1/5) )=2.190
可以编写下面代码,在宏编程器里查看结果。
macro_command main()
float result
int data[5] = {1, 2, 3, 4, 5}
//计算从元素0开始5个元素的调和平均数。
//公式为n/((1/x1)+(1/x2)+...+(1/xn))
//5/( (1/1+1/2+1/3+1/4+1/5) )=2.190
HARMEAN(data[0], result, 5)
SetData(result, "Local HMI", LW, 0, 1)
end macro_command
3. MAX, MIN.
这两个函数用于获取数组内元素的最大和最小值。
例如数组int data[5] = {1, 2, 3, 4, 5}
我们肉眼就可以看出最大值为5,最小值为1.
但如果数组无数比较多,用函数来获取会方便很多。
我们也可以在编程软件里测试下面代码,看下函数执行结果。
macro_command main()
float result
int data[5] = {1, 2, 3, 4, 5}
//数组的最大值为5
//MAX(data[0],result,5)
//数组的最小值为1
MIN(data[0],result,5)
SetData(result, "Local HMI", LW, 0, 1)
end macro_command
4. MEDIAN.
函数用于求数组指定元素的中间值。即把数据从小到大排序后提取中间的数值。
分两种情况,一是元素个数为奇数个,一是元素个数为偶数个。
奇数个时,排序后直接取中间数。
偶数时,排序后求中间两个数的平均数。
例如
float result
int data[6] = {1, 2, 3, 4, 5,6}
MEDIAN(data[0], result, 6)
计数从数组0开始的6个数据的中间值,Result计算结果为(3+4)/2=3.5。
int data[5] = {1, 2, 3, 4, 5}
MEDIAN(data[0], result, 5)
计数从数组0开始的5个数据的中间值,Result计算结果取中间值为3。
可以在编程软件,测试下面的代码,查看执行结果。
macro_command main()
float result
int data[6] = {1, 2, 3, 4, 5,6}
MEDIAN(data[0], result, 6)
SetData(result, "Local HMI", LW, 0, 1)
end macro_command
5. STDEVP。
函数用于计算指定数组元素标准差。
每个元素减去其平均值的平方和,所得结果除以元素个数(或个数减一),再把所得值开根号,
最终所得结果就为这些元素的标准差。
公式为 s=[(x1-x)^2+(x2-x)^2+......(xn-x)^2]/(n)(x为事先求得的平均数,n为元素个数,x1…xn为每个元素)
标准差=s开根号。
计算过程挺复杂,我们只要知道标准差是反映一组数据离散程度的一种量化方法就好。
我们也可以运行下面的代码来验证上面的公式。
macro_command main()
float result
int data[6] = {1, 2, 3, 4, 5,5}
STDEVP(data[0], result, 5)
SetData(result, "Local HMI", LW, 0, 1)
end macro_command
6. STDEVS。
函数用于计算指定数组元素样本标准差。
此函数的计算公式与前面 的STDEVP相似,仅少一个自由维度,就是平均数减1。
公式为 s=[(x1-x)^2+(x2-x)^2+......(xn-x)^2]/(n-1)(x为事先求得的平均数,n为元素个数,x1…xn为每个元素)
样本标准差=s开根号。
也可以在编程软件里调用此函数,来验证公式。
macro_command main()
float result
int data[5] = {1, 2, 3, 4, 5}
STDEVS(data[0], result, 5)
SetData(result, "Local HMI", LW, 0, 1)
end macro_command
|