You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用卡尔曼滤波代码报错:list无shape属性及数组形状不兼容问题求助

解决RSSI卡尔曼滤波代码的数组形状错误问题

问题根源

你遇到的第二个ValueError本质是输入的signals列表为形状不均匀的嵌套列表——里面的子列表长度不一致,转成numpy数组后变成非同质多维数组,导致后续代码无法正常处理。

具体解决步骤

  • 第一步:检查并对齐输入数据
    先排查你的RSSI输入数据,确保所有信号子列表的长度完全一致。比如错误提示里的(5, 199) + inhomogeneous part,说明5组信号中,有的子列表长度不是199。你可以选择:

    • 截断长度超过目标值的子列表
    • 用合理值(比如NaN、该子列表的最后一个值)补全长度不足的子列表
  • 第二步:修改util.py的代码逻辑
    在将列表转成numpy数组前,先统一所有子列表的长度,替换你之前的修改:

    import numpy as np
    
    # 替换原有的length计算代码
    # 先确定目标长度(这里以第一个子列表的长度为基准,也可改成最小/最大长度)
    target_length = len(signals[0])
    # 统一所有子列表的长度
    signals_uniform = []
    for s in signals:
        if len(s) > target_length:
            # 截断过长的子列表
            signals_uniform.append(s[:target_length])
        elif len(s) < target_length:
            # 用NaN补全过短的子列表(可换成你需要的填充值)
            signals_uniform.append(s + [np.nan]*(target_length - len(s)))
        else:
            signals_uniform.append(s)
    # 转成规整的numpy数组
    signals_array = np.array(signals_uniform)
    length = signals_array.shape[1]
    
  • 第三步:验证数据格式
    转成数组后,添加print(signals_array.shape)确认输出是类似(5, 199)的规整二维数组,再运行后续代码。

内容的提问来源于stack exchange,提问作者cloud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 15:32:10