过滤流数据以减少噪声,卡尔曼滤波器c#

2023-12-19

我正在将数据从惯性传感器流式传输到 C# 应用程序中。数据有点嘈杂,所以我需要添加一个过滤器来平滑它。我有一个卡尔曼滤波器实现,在给定数组时效果很好,但我无法理解如何在恒定数据流上使用它。

I have:

double sensorData; //the noisy value, constantly updating from another class.

过滤器:

public static double[] noisySine = new double[20] { 40, 41, 38, 40, 45, 42, 43, 44, 40, 38, 44, 45, 40, 39, 37, 41, 42, 70, 44, 42 };
    public static double[] clean = new double[20];

      public static void KalmanFilter(double[] noisy)  
            {                  
                double A = double.Parse("1"); //factor of real value to previous real value
                // double B = 0; //factor of real value to real control signal
                double H = double.Parse("1"); 
                double P = double.Parse("0.1");
                double Q = double.Parse("0.125");  //Process noise. 
                double R = double.Parse("1"); //assumed environment noise.
                double K;
                double z;
                double x;

                //assign to first measured value
                x = noisy[0];
                for (int i = 0; i < noisy.Length; i++)  
                {
                    //get current measured value
                    z = noisy[i];

                    //time update - prediction
                    x = A * x;
                    P = A * P * A + Q;

                    //measurement update - correction
                    K = P * H / (H * P * H + R);
                    x = x + K * (z - H * x);
                    P = (1 - K * H) * P;
                    //estimated value
                    clean[i] = x;
                    Console.WriteLine(noisy[i] + " " + clean[i]);
                }
            }

我如何流式传输双精度值而不是数组,并返回(过滤后的)双精度值?

谢谢。


创建这个类:

public class KalmanFilter
{
    private double A, H, Q, R, P, x;

    public KalmanFilter(double A, double H, double Q, double R, double initial_P, double initial_x)
    {
        this.A = A;
        this.H = H;
        this.Q = Q;
        this.R = R;
        this.P = initial_P;
        this.x = initial_x;
    }

    public double Output(double input)
    {
        // time update - prediction
        x = A * x;
        P = A * P * A + Q;

        // measurement update - correction
        double K = P * H / (H * P * H + R);
        x = x + K * (input - H * x);
        P = (1 - K * H) * P;

        return x;
    }
}

并使用该类:

KalmanFilter filter = new KalmanFilter(1, 1, 0.125, 1, 0.1, noisySine[0]);
for (int i = 0; i < noisy.Length; i++) clean[i] = filter.Output(noisySine[i]);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

过滤流数据以减少噪声,卡尔曼滤波器c# 的相关文章

  • 转换 const void*

    我有一个函数返回一个const void 我想用它的信息作为char 我可以将它投射为 C 风格的罚款 char variable但是当我尝试使用reinterpret cast like reinterpret cast
  • 如何在类文件中使用 Url.Action() ?

    如何在 MVC 项目的类文件中使用 Url Action Like namespace 3harf public class myFunction public static void CheckUserAdminPanelPermissi
  • MVC3中设置下拉列表中的所选项目

    我必须为视图中的下拉列表设置所选项目 但它不起作用 View div class editor label Html LabelFor model gt model Gender div div class editor field Htm
  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • 无法注册时间触发的后台任务

    对于 Windows 8 应用程序 在 C Xaml 中 我尝试注册后台任务 很难说 但我想我的后台任务已正确注册 但是当我单击调试位置工具栏上的后台任务名称时 我的应用程序停止工作 没有任何消息 我查看了事件查看器上的日志 得到 具有入口
  • RestSharp获取序列化输出

    我正在寻找一种方法来访问 AddBody 调用的序列化结果 我正在使用内置的 RestSharp 序列化器 例子 class Foo public string FooField void SendRecord var f new Foo
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • Eigen 和 OpenMP:由于错误共享和线程开销而没有并行化

    系统规格 Intel Xeon E7 v3 处理器 4 插槽 16 核 插槽 2 线程 核心 Eigen 系列和 C 的使用 以下是代码片段的串行实现 Eigen VectorXd get Row const int j const int
  • 获取没有显式特征的整数模板参数的有符号/无符号变体

    我希望定义一个模板类 其模板参数始终是整数类型 该类将包含两个成员 其中之一是类型T 另一个作为类型的无符号变体T 即如果T int then T Unsigned unsigned int 我的第一直觉是这样做 template
  • 在 C# 中检查 PowerShell 执行策略的最佳方法是什么?

    当你跑步时Get ExecutionPolicy在 PowerShell 中 它得到有效的执行政策 https learn microsoft com en us powershell module microsoft powershell
  • 是否使用 C# 数据集? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对 C 中的数据集概念有点困惑 编码 ASP NET 站点 但这并不重要 在我的阅读中 我了解到它们 本质上 用作我的应用程序和我的
  • 从 C# 使用 Odbc 调用 Oracle 包函数

    我在 Oracle 包中定义了一个函数 CREATE OR REPLACE PACKAGE BODY TESTUSER TESTPKG as FUNCTION testfunc n IN NUMBER RETURN NUMBER as be
  • 不可变类与结构

    以下是类与 C 中的结构的唯一区别 如果我错了 请纠正我 类变量是引用 而结构变量是值 因此在赋值和参数传递中复制结构的整个值 类变量是存储在堆栈上的指针 指向堆上的内存 而结构变量作为值存储在堆上 假设我有一个不可变的结构 该结构的字段一
  • 模板外部链接?谁能解释一下吗?

    模板名称具有链接 3 5 非成员函数模板可以有内部链接 任何其他模板名称应具有外部链接 从具有内部链接的模板生成的实体与在其他翻译单元中生成的所有实体不同 我知道使用关键字的外部链接 extern C EX extern C templat
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • 如何最好地以编程方式将 `__attribute__ ((unused))` 应用于这些自动生成的对象?

    In my makefile我有以下目标 它将文本 HTML 资源 编译 为unsigned char数组使用xxd i http linuxcommand org man pages xxd1 html 我将结果包装在匿名命名空间和标头保
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • Oauth2中如何同时撤销RefreshToken和使AccessToken失效

    我正在使用 Owin Oauth2 授权和资源服务器相同 开发单页面应用程序 AngularJS Net MVC Json Rest API 的身份验证流程 我选择了 Bearer Token 路由而不是传统的 cookie session
  • 使动态创建的链接标签在 Winforms 中可点击

    我正在制作一个程序 允许用户单击由动态链接标签创建的公司名称 在我想知道如何做到这一点之前 我从未在 C 中使用过链接标签 可为特定用户生成的业务数量各不相同 因此每个用户的链接标签数量并不相同 然后我想捕获业务 ID 以进行 Json 调
  • 是否允许全局静态标识符以单个 _ 开头?

    换句话说 可能static 文件范围 全局变量恰好以一个下划线开头 而不会产生与 C 实现发生名称冲突的可能性 https www gnu org software libc manual html node Reserved Names

随机推荐

  • 从 Julia 1.0 中特定目录中的文件导入模块和函数

    假设我有一个文件File jl有一个模块MyModule包含函数foo and bar在里面 在与模块文件相同的目录中 我有一个脚本Script jl 我想使用其中的函数MyModule在脚本中 人们会如何去做这件事呢 为了找到不在标准 L
  • 无法在 ROS 中使用本地安装的 Protocol Buffer

    我已经安装了协议缓冲区 https developers google com protocol buffers 本地 ROS包的目录结构如下 CMakeLists txt package xml include addressbook p
  • 进行更改后 ts-node-dev 不会重新启动

    这是我的文件 包 json scripts generate interfaces ts node src cli generate interfaces ts dist npm run generate interfaces rm rf
  • Google Play 服务示例:“connectionResult 无法解析”

    当我尝试按照有关如何检查 Google Play 服务是否已安装的示例进行操作时 我收到以下错误 servicesConnected 方法内的行中的 connectionResult 无法解析 int errorCode connectio
  • 片段replace()不替换所有片段

    如果我为具有相同 viewId 的片段 A 和 B 调用 add 然后尝试使用片段 C 在该 viewId 上调用 Replace 则只有片段 A 被删除 最终得到片段 B 和 C 根据文档 A 和 B 都应该替换为 C 或者我读错了文档
  • XC8 收到有关 plib I2C 函数的“未定义符号”错误

    嘿 StackOverflow 我的问题涉及下面粘贴的程序中报告的错误 目标设备是PIC12LF1552 它有一个串行外设 我认为它可以与 Microchip 的 XC8 编译器提供的库结合使用 互联网上的一些消息来源表示 只有 PIC18
  • 增强序列化和双打

    我正在尝试使用 boost 序列化库将类序列化为字符串 并且我的类中包含几个双成员变量 下面是我用来序列化的代码 include
  • Java中如何对泛型类型设置约束?

    我有一个通用类 public class ListObject
  • 如何在C++中获取外部IP地址?

    我将如何在 C 中查找用户的外部 IP 我需要一种适用于任何系统的方法 而不仅仅是我的系统 此外 系统可能位于路由器后面 因此 NAT 将发挥作用 从而使检索外部 IP 变得更加困难 理想情况下 我希望在不使用任何第三方服务 例如whats
  • 如何使用 zip cmd 工具将文件移至未压缩的 zip 中

    我试图确定如何使用zipcmd 行工具将文件 未压缩 移动到压缩文件的 zip 中 即我想要一个 zip 最后包含除一个压缩文件之外的所有文件 b c 该一个文件是另一个压缩文件 有人知道怎么做吗 看起来您可以使用 n 选项仅存储具有定义扩
  • 有没有办法确定 Linux PID 是否暂停?

    我有一个 python 脚本 它使用 SIGSTOP 和 SIGCONT 命令与 os kill 来暂停或恢复进程 有没有办法判断相关PID是处于暂停状态还是恢复状态 您可以从进程的 proc 目录 proc
  • 基于工作流(即有向图)浏览器的编辑器

    我想提供一个所见即所得的工具 最好是基于 JavaScript 的 用于工作流程图 即有向图 我需要商业软件友好许可 其中可能包括向 OEM 支付费用 如果有必要的服务器端部分 我需要 Java 或 ColdFusion 中的它 因为我正在
  • 如何从 Entity Framework 4.3 升级到 EF 5

    目前我们正在开发 EF 4 3 我们想将其升级到 EF5 我用谷歌搜索了升级过程步骤 但没有得到任何结果 请帮我 谢谢 以下是我在 EF4 3 到 EF5 上创建的内容的两个链接 文章 将现有项目迁移到 EF 5http msdn micr
  • Hibernate:在级联删除项目时清理集合的二级缓存

    我有一个问题 Hibernate 不会为级联删除的项目集合更新二级缓存 Details 假设我们有一个对象 Parent 其中包含 Child 对象的 Parent myChildren 集合 现在我们还有 Humans 对象和 Human
  • 计算我的位置与 Swift 上的 MapKit 图钉之间的距离

    我需要你的帮助 我正在开发一个应用程序 其中有一些图钉 位置 我想要的是获取每个图钉与我的位置之间的距离 我的代码如下 let annotation MKPointAnnotation let annotationTwo MKPointAn
  • 线程池 - 可能的线程执行顺序问题

    我一直在学习如何使用线程池 但我不确定池中的每个线程是否都正确执行 并且我怀疑有些线程被执行多次 我已将代码削减到最低限度 并一直使用 Debug WriteLine 来尝试弄清楚发生了什么 但这会产生一些奇怪的结果 我的代码如下 基于 不
  • 有人在没有ant的情况下使用webtest吗?

    我想尝试使用 WebTest 最好是来自 Clojure 但我只能找到它作为 Ant 任务公开的功能 似乎有某种 Groovy 接口 这意味着可以从 Ant 之外的任何 JVM 语言使用 但我无法弄清楚 我希望使用 WebTest 作为 可
  • 如何使用java更新Google App Engine中数据存储的字段值

    我在数据存储中创建了一个登录名 种类 在登录内部 我创建了两个字段用户名和密码 当用户更改密码时 我想更新数据存储内的字段值 但是当我使用这段代码时 DatastoreService datastore DatastoreServiceFa
  • Jest不能处理insertAdjacentElement吗?

    我想测试一个非常简单的JS函数 export function displaySpinner const loadingOverlayDOM document createElement DIV const spinner document
  • 过滤流数据以减少噪声,卡尔曼滤波器c#

    我正在将数据从惯性传感器流式传输到 C 应用程序中 数据有点嘈杂 所以我需要添加一个过滤器来平滑它 我有一个卡尔曼滤波器实现 在给定数组时效果很好 但我无法理解如何在恒定数据流上使用它 I have double sensorData th