python使用tkinter编写一个数据显示窗口(实时显示更新的数据)

2023-05-16

以下代码分为python3版本与python2版本,

python3版本主要靠
self.main_window.after( 刷新的时间毫秒, 需要刷新的函数这里为窗口的清除与插入函数) 刷新函数进行 ,

python2版本则通过编写一个线程进行刷新作用,刷新函数在python2 环境下会报错…
至于我为什么知道python2会出现这个问题,那就是ros没python3的版本…

示意图

(数据就会在后面的框里面通过程序运行时的值的改变而改变):

在这里插入图片描述
python3版本

不解释了直接可以运行,运行效果为不断的刷新一号测距仪的值
在这里插入图片描述

#!/usr/bin/env python2.7
# coding:utf-8
# -*- coding: utf-8 -*-

"""通过开启tcp客户端进行接收,更新下位机的服务端更新的数据"""

import tkinter

class Status():
    """解析的依据在于,status键对应的标识符,具体的参考word手册"""
    def __init__(self):


        self.json_data = {} #
        self.odom()


    def odom(self):
        "用于储存小车底盘的,里程计,瞬时速度等信息"
        self.x = -0.99
        self.y = -0.99
        self.p = -0.99
        self.vx = -0.99
        self.vy = -0.99
        self.vp = -0.99
        self.s_x = -0.99
        self.s_y = -0.99
        self.s_p = -0.99


    # def save_judge_status(self,json_data):
    #     """对服务器传来的,单条json数据进行解析,判断是否符合,协议,并根据协议,取出对应 dict的有效值"""
    #     """若通过判断,则表示为无效量"""
    #     status_name =  json_data["status"]
    #     if status_name in ["Odom_m"]:
    #         #此时说明,传输正确  对应cs1


s_data = Status()



class MYIP():

    def __init__(self):
        print("开启显示窗口模块-----------------------")

        self.refresh_rate = 300
        # main frame
        self.main_window = tkinter.Tk()

        # top frame
        self.top_frame = tkinter.Frame(self.main_window)
        # bottom frame
        self.bottom_frame = tkinter.Frame(self.main_window)

        self.L1 = tkinter.Label(self.top_frame, text='底盘驱动')
        self.L1.pack(side='left')
        default_value = tkinter.StringVar()
        default_value.set('V3.1 python3(客户端)版本')
        self.E1 = tkinter.Entry(self.top_frame, textvariable=default_value, bd=2)
        self.E1.pack(side=tkinter.LEFT)

        self.bottom_left = tkinter.Frame(self.bottom_frame)
        self.bottom_right = tkinter.Frame(self.bottom_frame)

        self.label1 = tkinter.Label(self.bottom_left, text="%-10s" % "1号测距仪")
        self.label2 = tkinter.Label(self.bottom_left, text="%-10s" % '2号测距仪')
        self.label3 = tkinter.Label(self.bottom_left, text="%-10s" % '3号测距仪')
        self.label4 = tkinter.Label(self.bottom_left, text="%-10s" % '4号测距仪')
        self.label5 = tkinter.Label(self.bottom_left, text="%-10s" % '5号测距仪')
        self.label6 = tkinter.Label(self.bottom_left, text="%-10s" % '6号测距仪')

        self.label7 = tkinter.Label(self.bottom_left, text="%-10s" % '7号测距仪')
        self.label8 = tkinter.Label(self.bottom_left, text="%-10s" % '8号测距仪')
        self.label9 = tkinter.Label(self.bottom_left, text="%-10s" % '9号测距仪')
        self.label10 = tkinter.Label(self.bottom_left, text="%-10s" % '刷新率')

        self.label1.pack(side='top')
        self.label2.pack(side='top')
        self.label3.pack(side='top')
        self.label4.pack(side='top')
        self.label5.pack(side='top')
        self.label6.pack(side='top')
        self.label7.pack(side='top')
        self.label8.pack(side='top')
        self.label9.pack(side='top')
        self.label10.pack(side='top')

        self.En1 = tkinter.Entry(self.bottom_right)
        self.En2 = tkinter.Entry(self.bottom_right)
        self.En3 = tkinter.Entry(self.bottom_right)
        self.En4 = tkinter.Entry(self.bottom_right)
        self.En5 = tkinter.Entry(self.bottom_right)
        self.En6 = tkinter.Entry(self.bottom_right)

        self.En7 = tkinter.Entry(self.bottom_right)
        self.En8 = tkinter.Entry(self.bottom_right)
        self.En9 = tkinter.Entry(self.bottom_right)
        self.En10 = tkinter.Entry(self.bottom_right)

        ret = ("label1", "label2", "label3", "label4", "label5", "label6")
        self.En1.delete(0, tkinter.END)
        self.En2.delete(0, tkinter.END)
        self.En3.delete(0, tkinter.END)
        self.En4.delete(0, tkinter.END)
        self.En5.delete(0, tkinter.END)
        self.En6.delete(0, tkinter.END)
        self.En1.insert(0, ret[0])
        self.En2.insert(0, ret[1])
        self.En3.insert(0, ret[2])
        self.En4.insert(0, ret[3])
        self.En5.insert(0, ret[4])
        self.En6.insert(0, ret[5])

        self.En1.pack(side='top')
        self.En2.pack(side='top')
        self.En3.pack(side='top')
        self.En4.pack(side='top')
        self.En5.pack(side='top')
        self.En6.pack(side='top')

        self.En7.pack(side='top')
        self.En8.pack(side='top')
        self.En9.pack(side='top')
        self.En10.pack(side='top')

        self.bottom_left.pack(side='left')
        self.bottom_right.pack(side='right')
        self.top_frame.pack()
        self.bottom_frame.pack()

        self.c_1 = -1
        self.c_2 = -1
        self.c_3 = -1
        self.c_4 = -1
        self.c_5 = -1
        self.c_6 = -1
        self.c_7 = -1
        self.c_8 = -1
        self.c_9 = -1
        self.ref_num = -1
        self.main_window.after(100, self.updata_node)
        self.main_window.mainloop()

    def updata_node(self):
        print("刷新一次")

        self.updata_xyp()
        # 接下来刷新页面
        self.En1.delete(0, 10)
        self.En1.insert(0, str(self.c_1))  # delete
        self.En1.update()

        self.En2.delete(0, 10)
        self.En2.insert(0, str(self.c_2))  # delete
        self.En2.update()

        self.En3.delete(0, 10)
        self.En3.insert(0, str(self.c_3))  # delete
        self.En3.update()

        self.En4.delete(0, 10)
        self.En4.insert(0, str(self.c_4))  # delete
        self.En4.update()

        self.En5.delete(0, 10)
        self.En5.insert(0, str(self.c_5))  # delete
        self.En5.update()

        self.En6.delete(0, 10)
        self.En6.insert(0, str(self.c_6))  # delete
        self.En6.update()

        self.En7.delete(0, 10)
        self.En7.insert(0, str(self.c_7))  # delete
        self.En7.update()

        self.En8.delete(0, 10)
        self.En8.insert(0, str(self.c_8))  # delete
        self.En9.update()

        self.En9.delete(0, 10)
        self.En9.insert(0, str(self.c_9))  # delete
        self.En9.update()

        self.En10.delete(0, 10)
        self.En10.insert(0, str(self.ref_num))  # delete
        self.En10.update()

        self.main_window.after(self.refresh_rate, self.updata_node)

    def updata_xyp(self):
        """通过客户端连接到下位机服务端收到的数据更新"""
        print("4564 : " + str(s_data.x))
        s_data.x = s_data.x + 1
        self.c_1 = s_data.x
        # self.y = s_data.y
        # self.w = s_data.p


if __name__ == '__main__':
    # c = Client_link()
    # c.start_client()
    # print("开启tcp客户端线程拉起完成")

    m_win = MYIP()








python2版本

以下为代码,我这里在下面提供两个代码示例:

1.(第一部分)修改为可以直接运行显示,但注释掉了刷新数据的线程部分的,无法对数据进行更新。

"""注意这个 窗口拉起接口在 一 二 部分中被调用的不同的写法"""
self.main_window.mainloop()

2.(第二部分)没有注释掉线程部分,需要通过 from import 的方法在另外一个py文件的线程中进行调用更新,下面是我截取的部分在另一个py文件中的调用,示例

from hint_window import m_win


 def t_correct(self):
        t_correct = threading.Thread(target=self.calculate_instant_speed)
        t_correct.setDaemon(True)
        t_correct.start()
  def calculate_instant_speed(self):
        """用于更新瞬时速度"""
        """
        self.x_speed ,self.y_speed, self.p_speed
        """
        

            m_win.updata_node("vx", self.x_speed)
            m_win.updata_node("vy", self.y_speed)
            m_win.updata_node("vw", self.p_speed)


(第一部分):

#!/usr/bin/env python2.7
#coding:utf-8
# -*- coding: utf-8 -*-
import tkinter
# import ctypes
import time
import threading

class MYIP(threading.Thread):

    def __init__(self):
        # 隐藏窗口
        # whnd = ctypes.windll.kernel32.GetConsoleWindow()
        # if whnd != 0:
        #     ctypes.windll.user32.ShowWindow(whnd, 0)
        #     ctypes.windll.kernel32.CloseHandle(whnd)



        # main frame
        self.main_window = tkinter.Tk()

        # top frame
        self.top_frame = tkinter.Frame(self.main_window)
        # bottom frame
        self.bottom_frame = tkinter.Frame(self.main_window)

        self.L1 = tkinter.Label(self.top_frame, text='底盘驱动')
        self.L1.pack(side='left')
        default_value = tkinter.StringVar()
        default_value.set('V2.1 python2版本')
        self.E1 = tkinter.Entry(self.top_frame, textvariable=default_value, bd=2)
        self.E1.pack(side=tkinter.LEFT)

        self.bottom_left = tkinter.Frame(self.bottom_frame)
        self.bottom_right = tkinter.Frame(self.bottom_frame)

        self.label1 = tkinter.Label(self.bottom_left, text="%-10s" % "X(mm)")
        self.label2 = tkinter.Label(self.bottom_left, text="%-10s" % 'Y(mm)')
        self.label3 = tkinter.Label(self.bottom_left, text="%-10s" % 'W(度)')
        self.label4 = tkinter.Label(self.bottom_left, text="%-10s" % 'Vx(m/s)')
        self.label5 = tkinter.Label(self.bottom_left, text="%-10s" % 'Vy(m/s)')
        self.label6 = tkinter.Label(self.bottom_left, text="%-10s" % 'Vw(rad/s)')

        self.label7 = tkinter.Label(self.bottom_left, text="%-10s" % 'C_x')
        self.label8 = tkinter.Label(self.bottom_left, text="%-10s" % 'C_y')
        self.label9 = tkinter.Label(self.bottom_left, text="%-10s" % 'C_w')

        self.label1.pack(side='top')
        self.label2.pack(side='top')
        self.label3.pack(side='top')
        self.label4.pack(side='top')
        self.label5.pack(side='top')
        self.label6.pack(side='top')
        self.label7.pack(side='top')
        self.label8.pack(side='top')
        self.label9.pack(side='top')

        self.En1 = tkinter.Entry(self.bottom_right)
        self.En2 = tkinter.Entry(self.bottom_right)
        self.En3 = tkinter.Entry(self.bottom_right)
        self.En4 = tkinter.Entry(self.bottom_right)
        self.En5 = tkinter.Entry(self.bottom_right)
        self.En6 = tkinter.Entry(self.bottom_right)

        self.En7 = tkinter.Entry(self.bottom_right)
        self.En8 = tkinter.Entry(self.bottom_right)
        self.En9 = tkinter.Entry(self.bottom_right)

        ret = ("label1", "label2", "label3", "label4", "label5", "label6")
        self.En1.delete(0, tkinter.END)
        self.En2.delete(0, tkinter.END)
        self.En3.delete(0, tkinter.END)
        self.En4.delete(0, tkinter.END)
        self.En5.delete(0, tkinter.END)
        self.En6.delete(0, tkinter.END)
        self.En1.insert(0, ret[0])
        self.En2.insert(0, ret[1])
        self.En3.insert(0, ret[2])
        self.En4.insert(0, ret[3])
        self.En5.insert(0, ret[4])
        self.En6.insert(0, ret[5])

        self.En1.pack(side='top')
        self.En2.pack(side='top')
        self.En3.pack(side='top')
        self.En4.pack(side='top')
        self.En5.pack(side='top')
        self.En6.pack(side='top')

        self.En7.pack(side='top')
        self.En8.pack(side='top')
        self.En9.pack(side='top')

        self.bottom_left.pack(side='left')
        self.bottom_right.pack(side='right')
        self.top_frame.pack()
        self.bottom_frame.pack()
        print("准备开启窗口数据更新线程")
        self.main_window.mainloop()

        # t_updata = threading.Thread(target=self.updata_datas)
        # t_updata.start()




    def updata_datas(self):
        while True:
            # self.label1 = tkinter.Label(self.bottom_left, text="%-10s" % "X(mm)")
            # self.label2 = tkinter.Label(self.bottom_left, text="%-10s" % 'Y(mm)')
            # self.label3 = tkinter.Label(self.bottom_left, text="%-10s" % 'W(度)')
            # self.label4 = tkinter.Label(self.bottom_left, text="%-10s" % 'Vx(m/s)')
            # self.label5 = tkinter.Label(self.bottom_left, text="%-10s" % 'Vy(m/s)')
            # self.label6 = tkinter.Label(self.bottom_left, text="%-10s" % 'Vw(rad/s)')
            print (110)
            time.sleep(0.2)
            self.main_window.mainloop()
    
    def updata_node(self,name,val):
        if name == "x":
            self.En1.delete(0, 10)
            self.En1.insert(0, str(val))  # delete
        elif name == "y":
            self.En2.delete(0, 10)
            self.En2.insert(0, str(val))  # delete
        elif name == "w":
            self.En3.delete(0, 10)
            self.En3.insert(0, str(val))  # delete
        elif name == "vx":
            self.En4.delete(0, 10)
            self.En4.insert(0, str(val))  # delete
        elif name == "vy":
            self.En5.delete(0, 10)
            self.En5.insert(0, str(val))  # delete
        elif name == "vw":
            self.En6.delete(0, 10)
            self.En6.insert(0, str(val))  # delete
        elif name == "cx":
            self.En7.delete(0, 10)
            self.En7.insert(0, str(val))  # delete
        elif name == "cy":
            self.En8.delete(0, 10)
            self.En8.insert(0, str(val))  # delete
        elif name == "cw":
            self.En9.delete(0, 10)
            self.En9.insert(0, str(val))  # delete





    def process_data(self):
        if self.jsondata['data']['country']:
            country = self.jsondata['data']['country']
        else:
            country = "NULL"

        if self.jsondata['data']['area']:
            area = self.jsondata['data']['area']
        else:
            area = "NULL"

        if self.jsondata['data']['region']:
            region = self.jsondata['data']['region']
        else:
            region = "NULL"

        if self.jsondata['data']['city']:
            city = self.jsondata['data']['city']
        else:
            city = "NULL"

        if self.jsondata['data']['county']:
            county = self.jsondata['data']['county']
        else:
            county = "NULL"

        if self.jsondata['data']['isp']:
            isp = self.jsondata['data']['isp']
        else:
            isp = "NULL"
        return (country, area, region, city, county, isp)



m_win = MYIP()

# if __name__ == '__main__':
#
#     m_win = MYIP()

(第二部分):

#!/usr/bin/env python2.7
# coding:utf-8
# -*- coding: utf-8 -*-
import tkinter
# import ctypes
import time
import threading


class MYIP(threading.Thread):

    def __init__(self):
        # 隐藏窗口
        # whnd = ctypes.windll.kernel32.GetConsoleWindow()
        # if whnd != 0:
        #     ctypes.windll.user32.ShowWindow(whnd, 0)
        #     ctypes.windll.kernel32.CloseHandle(whnd)

        # main frame
        self.main_window = tkinter.Tk()

        # top frame
        self.top_frame = tkinter.Frame(self.main_window)
        # bottom frame
        self.bottom_frame = tkinter.Frame(self.main_window)

        self.L1 = tkinter.Label(self.top_frame, text='底盘驱动')
        self.L1.pack(side='left')
        default_value = tkinter.StringVar()
        default_value.set('V2.1 python2版本')
        self.E1 = tkinter.Entry(self.top_frame, textvariable=default_value, bd=2)
        self.E1.pack(side=tkinter.LEFT)

        self.bottom_left = tkinter.Frame(self.bottom_frame)
        self.bottom_right = tkinter.Frame(self.bottom_frame)

        self.label1 = tkinter.Label(self.bottom_left, text="%-10s" % "X(mm)")
        self.label2 = tkinter.Label(self.bottom_left, text="%-10s" % 'Y(mm)')
        self.label3 = tkinter.Label(self.bottom_left, text="%-10s" % 'W(度)')
        self.label4 = tkinter.Label(self.bottom_left, text="%-10s" % 'Vx(m/s)')
        self.label5 = tkinter.Label(self.bottom_left, text="%-10s" % 'Vy(m/s)')
        self.label6 = tkinter.Label(self.bottom_left, text="%-10s" % 'Vw(rad/s)')

        self.label7 = tkinter.Label(self.bottom_left, text="%-10s" % 'C_x')
        self.label8 = tkinter.Label(self.bottom_left, text="%-10s" % 'C_y')
        self.label9 = tkinter.Label(self.bottom_left, text="%-10s" % 'C_w')

        self.label1.pack(side='top')
        self.label2.pack(side='top')
        self.label3.pack(side='top')
        self.label4.pack(side='top')
        self.label5.pack(side='top')
        self.label6.pack(side='top')
        self.label7.pack(side='top')
        self.label8.pack(side='top')
        self.label9.pack(side='top')

        self.En1 = tkinter.Entry(self.bottom_right)
        self.En2 = tkinter.Entry(self.bottom_right)
        self.En3 = tkinter.Entry(self.bottom_right)
        self.En4 = tkinter.Entry(self.bottom_right)
        self.En5 = tkinter.Entry(self.bottom_right)
        self.En6 = tkinter.Entry(self.bottom_right)

        self.En7 = tkinter.Entry(self.bottom_right)
        self.En8 = tkinter.Entry(self.bottom_right)
        self.En9 = tkinter.Entry(self.bottom_right)

        ret = ("label1", "label2", "label3", "label4", "label5", "label6")
        self.En1.delete(0, tkinter.END)
        self.En2.delete(0, tkinter.END)
        self.En3.delete(0, tkinter.END)
        self.En4.delete(0, tkinter.END)
        self.En5.delete(0, tkinter.END)
        self.En6.delete(0, tkinter.END)
        self.En1.insert(0, ret[0])
        self.En2.insert(0, ret[1])
        self.En3.insert(0, ret[2])
        self.En4.insert(0, ret[3])
        self.En5.insert(0, ret[4])
        self.En6.insert(0, ret[5])

        self.En1.pack(side='top')
        self.En2.pack(side='top')
        self.En3.pack(side='top')
        self.En4.pack(side='top')
        self.En5.pack(side='top')
        self.En6.pack(side='top')

        self.En7.pack(side='top')
        self.En8.pack(side='top')
        self.En9.pack(side='top')

        self.bottom_left.pack(side='left')
        self.bottom_right.pack(side='right')
        self.top_frame.pack()
        self.bottom_frame.pack()
        print("准备开启窗口数据更新线程")
        # self.main_window.mainloop()

        t_updata = threading.Thread(target=self.updata_datas)
        t_updata.start()

    def updata_datas(self):
        while True:
            # self.label1 = tkinter.Label(self.bottom_left, text="%-10s" % "X(mm)")
            # self.label2 = tkinter.Label(self.bottom_left, text="%-10s" % 'Y(mm)')
            # self.label3 = tkinter.Label(self.bottom_left, text="%-10s" % 'W(度)')
            # self.label4 = tkinter.Label(self.bottom_left, text="%-10s" % 'Vx(m/s)')
            # self.label5 = tkinter.Label(self.bottom_left, text="%-10s" % 'Vy(m/s)')
            # self.label6 = tkinter.Label(self.bottom_left, text="%-10s" % 'Vw(rad/s)')
            print(110)
            time.sleep(0.2)
            self.main_window.mainloop()

    def updata_node(self, name, val):
        if name == "x":
            self.En1.delete(0, 10)
            self.En1.insert(0, str(val))  # delete
        elif name == "y":
            self.En2.delete(0, 10)
            self.En2.insert(0, str(val))  # delete
        elif name == "w":
            self.En3.delete(0, 10)
            self.En3.insert(0, str(val))  # delete
        elif name == "vx":
            self.En4.delete(0, 10)
            self.En4.insert(0, str(val))  # delete
        elif name == "vy":
            self.En5.delete(0, 10)
            self.En5.insert(0, str(val))  # delete
        elif name == "vw":
            self.En6.delete(0, 10)
            self.En6.insert(0, str(val))  # delete
        elif name == "cx":
            self.En7.delete(0, 10)
            self.En7.insert(0, str(val))  # delete
        elif name == "cy":
            self.En8.delete(0, 10)
            self.En8.insert(0, str(val))  # delete
        elif name == "cw":
            self.En9.delete(0, 10)
            self.En9.insert(0, str(val))  # delete

    def process_data(self):
        if self.jsondata['data']['country']:
            country = self.jsondata['data']['country']
        else:
            country = "NULL"

        if self.jsondata['data']['area']:
            area = self.jsondata['data']['area']
        else:
            area = "NULL"

        if self.jsondata['data']['region']:
            region = self.jsondata['data']['region']
        else:
            region = "NULL"

        if self.jsondata['data']['city']:
            city = self.jsondata['data']['city']
        else:
            city = "NULL"

        if self.jsondata['data']['county']:
            county = self.jsondata['data']['county']
        else:
            county = "NULL"

        if self.jsondata['data']['isp']:
            isp = self.jsondata['data']['isp']
        else:
            isp = "NULL"
        return (country, area, region, city, county, isp)


m_win = MYIP()

# if __name__ == '__main__':
#
#     m_win = MYIP()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python使用tkinter编写一个数据显示窗口(实时显示更新的数据) 的相关文章

  • keil 突然跳转不了

    如题 keil 突然跳转不了 1 搞了好久 xff0c 最终发现我是把工程放在了中文目录下面 把它移出来然后重新编译就能正常跳转 2 也有可能是工程过大 xff0c 稍等一会或者重新打开工程也可以解决问题
  • Ubuntu20修改主机名

    编辑 etc hostname 文件
  • Linux运维|使用aptitude代替apt-get解决安装包依赖问题

    文章目录 问题描述aptitude安装过程 问题描述 在使用apt get安装libffi dev时出现如下报错 xff1a The following packages have unmet dependencies libffi spa
  • 全志T113-S3 RT-Thread SMP适配笔记

    T113 S3 SMP适配笔记 目标 给T113 S3适配RT Thread xff0c 并支持SMP 资料 没有太详细的资料和示例 xff0c 只有一些零星的信息 F133封装基本兼容Cortex A7双核 一些参考资料 https wh
  • 《Java核心技术精讲》读书笔记

    Java核心技术精讲 李兴华著 目录 xff1a 一 Java基础知识 二 面向对象 三 Java SE基础知识 四 设计开发 Java核心技术精讲 这本书以实战应用 就业实践为目的 xff0c 拒绝纸上谈兵 书中很多内容都是非常有针对性
  • 【STM32】HAL库自学记录-旋转编码器的使用

    STM32 HAL库自学记录 旋转编码器的使用 前言使用工具旋转编码器原理介绍方法一 定时器中断方式 xff08 实质就是外部中断 xff09 方法二 定时器方式 前言 通过本文可学会两种实现判断旋转编码器正转反转的方法 xff0c 可根据
  • Ubuntu20.04 loam_velodyne编译运行

    当你拿到了loam velodynede 的代码 xff0c 你想立刻catkin make起来 xff0c 看一下实际效果 结果你发现编译不通过 xff01 xff01 xff01 你发现报错是opencv的问题 然后 xff0c 你就可
  • 【运动控制】线性二次型最优控制(LQR)

    1 算法思想 对一个受控系统 xff0c 从一类允许的控制方案中找出一个最优的方案 xff0c 使系统由初始状态转移到目标状态的同时某个特定的性能指标为最优 在运动方程和允许控制范围的约束下 xff0c 对以控制函数和运动状态为变量的性能指
  • IMU与GPS的数据融合

    1 IMU简介 惯性测量单元 xff08 Inertial Measurement Unit xff09 通常由3个加速度计和3个陀螺仪组合而成 xff0c 加速度计和陀螺仪安装在互相垂直的测量轴上 xff0c 这里可以将其输出看作为三个方
  • 卡尔曼滤波算法

    了解过导航 雷达数据处理的必然听过卡尔曼滤波 xff0c 因为最近有项目需求 xff0c 要验证一下卡尔曼滤波对结果的优化程度 xff0c 所以入门学习一下卡尔曼滤波器 毕竟是经典的滤波器 xff0c 网上关于卡尔曼滤波的代码和文章有很多
  • C++STL在算法题中的应用-持续更新

    写洛谷的题 有时候不会总是会去看题解 有的思路很巧妙 需要学习 有的用了很厉害的STL 之前一直在看 现在想想也是要记下来好一点 这个帖子持续更新吧 再见到好用的STL就在这里记下来 1 vector 是个容器很好用 但是我基本没怎么用过
  • 卡尔曼滤波(联邦、一致性卡尔曼滤波)

    在信息融合中经常使用卡尔曼滤波 xff0c 现在我们对其进行讲解 xff1a 百度百科上写到 xff1a 卡尔曼滤波公式如上 这是另一种表述 xff0c 涉及的符号见下表 xff1a 对于联邦卡尔曼滤波 xff1a 对于一致性卡尔曼滤波 x
  • BP神经网络公式推导(西瓜书)自我理解

    公式推导 描述BP神经网络 xff1a 网络包含三层 xff1a 输入层 xff1a 神经元数量为 d d d 个 xff0c 输入为 x i
  • C++ 友元类

    1 在C 43 43 中 xff0c 我们使用类对数据进行了隐藏和封装 xff0c 类的数据成员一般都定义为私有成员 xff0c 成员函数一般都定义为公有的 xff0c 以此提供类与外界的通讯接口 但是 xff0c 有时需要定义一些函数 x
  • 浪潮服务器通过BMC安装银河麒麟OS记录

    浪潮服务器 xff08 X86 xff09 远程安装银河kylin操作系统记录 1 下载麒麟镜像OS 官网下载 xff1a 银河麒麟官网 xff0c 按需申请即可这个是首页 xff0c 不要走错哦 2 通过网络登录BMC 浪潮服务器的默BM
  • K8S 性能优化 - 大型集群 CIDR 配置

    前言 K8S 性能优化系列文章 xff0c 本文为第三篇 xff1a Kubernetes 大型集群 CIDR 配置最佳实践 系列文章 xff1a K8S 性能优化 OS sysctl 调优 K8S 性能优化 K8S APIServer 调
  • 完美实现Ubuntu系统迁移到另一台电脑/服务器

    一 以A电脑的系统向B电脑迁移为例 第一 xff0c 首先进入A电脑根目录并获取权限 命令 xff1a cd sudo su 第二 xff0c 将根目录所需文件打包为backup tar gz放在当前目录下 xff0c 也可以修改路径直接保
  • catkin 创建工作区

    先确定自己的环境变量是否设置正确 export grep ROS 若出现如下的 xff0c 说明是正确的 declare x ROSLISP PACKAGE DIRECTORIES 61 declare x ROS DISTRO 61 in
  • semtcl-信号量的操作

    头文件 include lt sys types h gt include lt sys ipc h gt include lt sys sem h gt 函数 int semctl xff08 int semid xff0c int se
  • 计算机专业保研面试复习笔记——操作系统

    计算机专业保研面试复习笔记 xff1a 计算机专业保研面试复习笔记 数据结构中的重要算法 计算机专业保研面试复习笔记 数据库 计算机专业保研面试复习笔记 操作系统 计算机专业保研面试复习笔记 计算机网络 文章目录 死锁定义原因条件处理方法死

随机推荐