双量程之间的转换

在最近的项目构思中,有一项是设备数据的监测,但是采集模块发送到服务器的数据并不是最终的数据,需要适当的去转换成为我们需要测试的数据,比如发过来的可能是电压,然后需要转换成为我们监测的数据,比如文档,就需要提供电压的量程和我们测试的温度的量程,之后将电压值转换为温度,实现我们检测温度的目的。两个量程以下介绍均为(Omax,Omin)和(Nmax,Nmin)。即[Omin,Omax]上每个数要映射到对应的区间[Nmin,Nmax]上。映射算法思想:计算出N区间长度除以O区间长度,得出O区间上单位长度对应于N区间上的大小,再将O区间上每个数减去O区间最小值后乘以单位区间对应的长度,最后加上N区间的最小值,实现投射到N区间上。代码如下(go):

// mapRange 函数实现量程转换映射
func mapRange(value float64, Nmin float64, Nmax float64, Omin float64, Omax float64) float64 {
	// 计算 N 和 O 的区间长度
	Nrange := Nmax - Nmin
	Orange := Omax - Omin

	if Nrange <= 0 {
		log.Println("无效的 N 区间")
		return Omin // 返回 Omin 作为默认值
	}

	// 计算映射的比例
	scale := Orange / Nrange

	// 映射值
	mappedValue := (value-Nmin)*scale + Omin

	// 返回映射后的值
	return mappedValue
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值