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

如何实现削波全波整流正弦波的信号周期计数器?

削波全波整流正弦波的周期计数DAX实现

需求说明

每隔几秒读取削波全波整流正弦波的信号值,需编写DAX度量值,每完成一个周期自动将计数器加1。示例数据对应的信号周期数为3,此前尝试的DAX因采样频率高导致重复数据,无法正确计数:

Counter = CALCULATE (COUNTROWS (tableName), FILTER (tableName, tableName[Value]>500))

示例数据

DeviceIDTesterIDValueDateTime
122001.10.2022 00:00:00
12250001.10.2022 00:01:00
12250001.10.2022 00:01:15
122100001.10.2022 00:02:00
122100001.10.2022 00:02:15
122100001.10.2022 00:02:30
12250001.10.2022 00:02:40
12250001.10.2022 00:02:42
122001.10.2022 00:02:45

解决方案:基于斜率检测的周期计数

核心思路是检测信号的上升沿触发点(从≤500跳变到>500)或完整周期结束点(从>500跳变回0),避免重复计数同一周期内的采样数据。以下提供两种实现方式:

方式一:检测完整周期的结束节点(回到0的时刻)

通过标记每个采样点的前一个值,筛选出从500(或更高)跳变到0的节点,这些节点即为周期结束标志:

  1. 添加计算列,获取每个采样点的前一个值(按DeviceID、TesterID和DateTime排序):
Previous Value = 
VAR CurrentDateTime = tableName[DateTime]
VAR CurrentDevice = tableName[DeviceID]
VAR CurrentTester = tableName[TesterID]
RETURN
CALCULATE(
    MAX(tableName[Value]),
    FILTER(
        tableName,
        tableName[DeviceID] = CurrentDevice &&
        tableName[TesterID] = CurrentTester &&
        tableName[DateTime] < CurrentDateTime
    )
)
  1. 编写度量值统计周期结束节点的数量:
Cycle Counter = 
CALCULATE(
    COUNTROWS(tableName),
    FILTER(
        tableName,
        tableName[Value] = 0 &&
        tableName[Previous Value] = 500
    )
)

方式二:检测上升沿触发点(从≤500到>500)

对于削波全波整流信号,每个周期会有一次明确的上升沿(从低电平到过500阈值),通过检测该跳变点来计数:

Cycle Counter = 
VAR RankedData = 
ADDCOLUMNS(
    tableName,
    "RowRank", 
    RANKX(
        FILTER(tableName, tableName[DeviceID] = EARLIER(tableName[DeviceID]) && tableName[TesterID] = EARLIER(tableName[TesterID])),
        tableName[DateTime],,ASC,Dense
    )
)
VAR TransitionPoints = 
FILTER(
    RankedData,
    [Value] > 500 &&
    LOOKUPVALUE(
        tableName[Value],
        tableName[DeviceID], [DeviceID],
        tableName[TesterID], [TesterID],
        "RowRank", [RowRank]-1
    ) <= 500
)
RETURN
COUNTROWS(TransitionPoints)

注意事项

  • 确保DateTime列是正确的日期时间格式,且无重复时间戳(若有重复需额外处理排序逻辑)。
  • 若信号存在噪声,可添加阈值容错(比如判断前一个值≤550且当前值≥450),避免误触发计数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:15:38