--==========================配置项==========================
--要参与运算的设备名称数组
local dev_name_arr={"device1","device2"}
--参与运算的数据的物模型标识
local tag_model_arr={"Ipv1","Ipv2","Ipv3","Ipv4","Ipv5","Ipv6","Ipv7","Ipv8"}
--==========================配置项==========================
--==========================函数==========================
--平均值
function calculate_average(data)
local sum = 0
local count = 0
for _, value in ipairs(data) do
sum = sum + value
count = count + 1
end
if count > 0 then
return sum / count
else
return 0
end
end
--方差
function calculate_variance(data)
local n = #data
if n <= 1 then
return 0
end
local mean = calculate_average(data)
local sum_squared_diff = 0
for _, value in ipairs(data) do
sum_squared_diff = sum_squared_diff + (value - mean)^2
end
return sum_squared_diff / n
end
--标准差
function calculate_standard_deviation(data)
local variance = calculate_variance(data)
local standard_deviation = math.sqrt(variance)
return standard_deviation
end
--==========================函数==========================
local avg_result = {}--平均值
local var_result = {}--方差
local sd_result = {}--标准差
local coe_result = {}--离散率
for dev_idx = 1,#dev_name_arr do
local tag_value_arr = {}
for tag_idx = 1,#tag_model_arr do
tag_value_arr[tag_idx] = GetDevTagValue(dev_name_arr[dev_idx],tag_model_arr[tag_idx])
end
avg_result[dev_idx] = calculate_average(tag_value_arr)
var_result[dev_idx] = calculate_variance(tag_value_arr)
sd_result[dev_idx] = calculate_standard_deviation(tag_value_arr)
coe_result[dev_idx] = sd_result[dev_idx] / avg_result[dev_idx]
end
for dev_idx = 1,#dev_name_arr do
--LuaClog("平均值",avg_result[dev_idx])
--LuaClog("方差",var_result[dev_idx])
--LuaClog("标准差",sd_result[dev_idx])
--LuaClog("离散率",coe_result[dev_idx])
SetDevTagValue(dev_name_arr[dev_idx],"result",coe_result[dev_idx])
end