sensors源代码解读

源码包名,lm_sensors-3.4.0-4.20160601gitf9185e5.el7.src.rpm

刚开始看,如果兴趣一起就看一点点这儿当是笔记咯。

从main函数开始:定义在./prog/main.c

int main(int argc, char *argv[])
{
	int c, i, err, do_bus_list;
	const char *config_file_name = NULL;

	struct option long_opts[] =  {
		{ "help", no_argument, NULL, 'h' },
		{ "set", no_argument, NULL, 's' },
		{ "version", no_argument, NULL, 'v'},
		{ "fahrenheit", no_argument, NULL, 'f' },
		{ "no-adapter", no_argument, NULL, 'A' },
		{ "config-file", required_argument, NULL, 'c' },
		{ "bus-list", no_argument, NULL, 'B' },
		{ 0, 0, 0, 0 }
	};

	setlocale(LC_CTYPE, "");

	do_raw = 0;
	do_sets = 0;
	do_bus_list = 0;
	hide_adapter = 0;
	while (1) {
		c = getopt_long(argc, argv, "hsvfAc:u", long_opts, NUL
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 Python 聚合卡尔曼滤波的示例代码: ```python import numpy as np class AggregateKalmanFilter: def __init__(self, num_sensors, state_dim, obs_dim, transition_matrix, observation_matrix, process_noise_cov, measurement_noise_cov): self.num_sensors = num_sensors self.state_dim = state_dim self.obs_dim = obs_dim self.transition_matrix = transition_matrix self.observation_matrix = observation_matrix self.process_noise_cov = process_noise_cov self.measurement_noise_cov = measurement_noise_cov # Initialize state and covariance matrices self.state = np.zeros((self.num_sensors, self.state_dim)) self.covariance = np.zeros((self.num_sensors, self.state_dim, self.state_dim)) for i in range(self.num_sensors): self.covariance[i] = np.eye(self.state_dim) * 1000 def predict(self): for i in range(self.num_sensors): self.state[i] = np.dot(self.transition_matrix, self.state[i]) self.covariance[i] = np.dot(np.dot(self.transition_matrix, self.covariance[i]), self.transition_matrix.T) + self.process_noise_cov def update(self, observations): for i in range(self.num_sensors): if observations[i] is not None: innovation = observations[i] - np.dot(self.observation_matrix, self.state[i]) innovation_cov = np.dot(np.dot(self.observation_matrix, self.covariance[i]), self.observation_matrix.T) + self.measurement_noise_cov kalman_gain = np.dot(np.dot(self.covariance[i], self.observation_matrix.T), np.linalg.inv(innovation_cov)) self.state[i] = self.state[i] + np.dot(kalman_gain, innovation) self.covariance[i] = np.dot(np.eye(self.state_dim) - np.dot(kalman_gain, self.observation_matrix), self.covariance[i]) def get_aggregate_state(self): return np.mean(self.state, axis=0) ``` 这个类接受以下参数: - `num_sensors`: 传感器数量。 - `state_dim`: 状态向量的维度。 - `obs_dim`: 观测向量的维度。 - `transition_matrix`: 状态转移矩阵。 - `observation_matrix`: 观测矩阵。 - `process_noise_cov`: 过程噪声的协方差矩阵。 - `measurement_noise_cov`: 观测噪声的协方差矩阵。 在初始化时,它会创建一个 `state` 矩阵和一个 `covariance` 矩阵来跟踪每个传感器的状态和协方差。`state` 矩阵是一个形状为 `(num_sensors, state_dim)` 的矩阵,其中每行表示一个传感器的状态向量。`covariance` 矩阵是一个形状为 `(num_sensors, state_dim, state_dim)` 的矩阵,其中每个 `(i, :, :)` 子矩阵表示第 `i` 个传感器的协方差矩阵。 `predict` 方法执行一个预测步骤,用状态转移矩阵来更新每个传感器的状态和协方差。 `update` 方法执行一个更新步骤,使用观测矩阵和观测向量来更新每个传感器的状态和协方差。如果某个传感器没有观测到数据,则跳过该传感器。 `get_aggregate_state` 方法返回一个聚合状态向量,它是所有传感器状态向量的平均值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值