<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />嗨,
我有過程信號跡線,並根據隨機晶圓形式識別脈衝跡線。 在下圖中,只有相鄰採樣點的信號值具有非零值,但如果1個採樣點具有非零值,則將其丟棄。
其次,只計算閾值高於某個值的脈衝跡線,比如這裡的1.5。
我期待為此開發一個簡單的腳本。 信號v,樣本和跟踪存儲為列。

毫無疑問,有更有效的方法可以做到這一點,但下面的代碼可能會讓你開始:
NamesDefaultToHere ( 1 ) ;
//用於計算數據向量中的“信號”的函數
countSignals =
功能 ({ VEC , VAL } , { 默認本地 } ,
//找到值'val'以上的點
plusPos = 祿 ( VEC > VAL ) ;
zeroPos = 祿 ( VEC <= VAL ) ;
//適當地重新編碼點
VEC [ plusPos ] = 1 ;
VEC [ zeroPos ] = 0 ;
//計算信號數量(運行兩個或多個+1值):初始化變量
nSignals = 0 ;
isSignal = 0 ;
以前 = VEC [ 1 ] ;
//從第二個開始循環遍歷vec的元素。。。
對於 ( Ë = 2 , Ë <= NRow ( VEC ) , Ë ++,
如果 ( ! isSignal ,
//如果我們還沒有處於信號的“中間”,請啟動一個
如果 ( VEC [ Ë ] == 以前 & 以前 == 1 , isSignal = 1 ) ,
//如果我們已經處於信號的“中間”,它是否已經結束了?如果這樣算,並重置。
如果 ( VEC [ Ë ] == 0 , nSignals ++; isSignal = 0 )
) ;
//如果我們處於vec的末尾並處於信號的“中間”,我們仍需要計算它
如果 ( Ë == NRow ( VEC ) & isSignal , nSignals ++ ) ;
//為下一次迭代更新“上一個”值
以前 = VEC [ Ë ] ;
) ;
//返回信號數量
nSignals ;
) ;
/ *
//此測試向量有四次運行(使用閾值0.5):
v = [0,1,0,0,1,1,0,1,1,1,0,1,1,0,1,0,0,0,1,1,1,1];
打印(countSignals(v,0.5));
* /
//製作somw虛擬數據 。。
ñ = 100 ;
數據 = RandomShuffle ( Ĵ ( ñ / 2 , 1 , RandomNormal ( 4 , 1 )) | / Ĵ ( ñ / 2 , 1 , 0 )) ;
DT = 非穩態 ( 數據 ) ;
DT << 的setName ( “信號計數的測試數據” ) ;
柱 ( DT , “Col1中” ) << 的setName ( “值” ) ;
//繪製它。。。
新窗戶 ( “這個數據有” || 燒焦 ( countSignals ( 數據 , 1.0 )) || “信號” ,
DT << 圖形生成器 (
顯示控制面板 ( 0 ) ,
顯示傳奇 ( 0 ) ,
變量 ( X ( 變換列 ( “行” ,式 ( 行 () ) ) ) , ÿ ( : 值 ) ) ,
分子 ( 線 ( X , ÿ ,傳說 ( 4 ) ) ,點 ( X , ÿ ,傳說 ( 五 ) ) ) ,
SendToReport (
調度 ( {} , “值” , ScaleBox , { 添加參考線 ( 1 , “固體” , “紅色” , “” , 1 )} )
)
) ;
) ;