伊戈尔掀起新浪潮
Igor Make a new wave
我有2波数据。 Z_EC 是质子数,N_EC 是中子数,EC_pure 是基于特定周长的标记波,即如果符合标准则标记“1”,否则标记“0”。
我正在尝试制作一个新的质子和中子波,该波将根据 EC_pure 是 1 还是 0(如果 1 匹配 P 到 N;如果 0 什么都不做)具有正确的值.但是,每次我 运行 我的函数时,即使 EC_pure = 0
,新波也会填充 P 和 N 值
Function plotECzn()
wave EC_pure, Z_EC, N_EC
variable i, j
variable len = numpnts(Z_EC)
Duplicate/O Z_EC Z_pure
Duplicate/O Z_EC N_pure
For(i=0; i<len; i+=1)
For(j=0; j<121; j+=1)
If(EC_pure[j] == 1)
Z_pure[i] = Z_EC[i]
N_pure[i] = N_EC[i]
Endif
Endfor
Endfor
End
Function ListECzn()
WAVE EC_pure, Z_EC, N_EC
wavestats/Q EC_pure
variable N_Candidates = V_Sum
Make/O/D/N=(N_Candidates) Z_pure, N_pure
variable Len = NumPnts(EC_pure)
variable i
variable j = 0
For(i=0; i<Len; i+=1)
If(EC_pure[i] == 1)
Z_pure[j] = Z_EC[i]
N_pure[j] = N_EC[i]
j += 1
EndIf
EndFor
End
更简洁的写法是:
Function ListECzn()
WAVE EC_pure, Z_EC, N_EC
variable Len = NumPnts(EC_pure)
Make/O/D/N=(Len) Z_pure, N_pure
Z_pure[] = (EC_pure[p] == 1) ? Z_EC[p] : NaN
N_pure[] = (EC_pure[p] == 1) ? N_EC[p] : NaN
WaveTransform zapnans Z_pure
WaveTransform zapnans N_pure
End
这些条件赋值真的很有用。 Z_pure[] = (EC_pure[p] == 1) ? Z_EC[p] : NaN
的语法表示:将以下内容分配给 Z_pure 的每一行 - 如果 EC_Pure 为 1,则分配 Z_EC 值,否则分配 NaN。然后你只需删除 NaN。完成。
如果 EC_Pure == 0 然后是 zapnans,另一种可能性是复制 waves 并分配 NaNs。
我有2波数据。 Z_EC 是质子数,N_EC 是中子数,EC_pure 是基于特定周长的标记波,即如果符合标准则标记“1”,否则标记“0”。
我正在尝试制作一个新的质子和中子波,该波将根据 EC_pure 是 1 还是 0(如果 1 匹配 P 到 N;如果 0 什么都不做)具有正确的值.但是,每次我 运行 我的函数时,即使 EC_pure = 0
,新波也会填充 P 和 N 值Function plotECzn()
wave EC_pure, Z_EC, N_EC
variable i, j
variable len = numpnts(Z_EC)
Duplicate/O Z_EC Z_pure
Duplicate/O Z_EC N_pure
For(i=0; i<len; i+=1)
For(j=0; j<121; j+=1)
If(EC_pure[j] == 1)
Z_pure[i] = Z_EC[i]
N_pure[i] = N_EC[i]
Endif
Endfor
Endfor
End
Function ListECzn()
WAVE EC_pure, Z_EC, N_EC
wavestats/Q EC_pure
variable N_Candidates = V_Sum
Make/O/D/N=(N_Candidates) Z_pure, N_pure
variable Len = NumPnts(EC_pure)
variable i
variable j = 0
For(i=0; i<Len; i+=1)
If(EC_pure[i] == 1)
Z_pure[j] = Z_EC[i]
N_pure[j] = N_EC[i]
j += 1
EndIf
EndFor
End
更简洁的写法是:
Function ListECzn()
WAVE EC_pure, Z_EC, N_EC
variable Len = NumPnts(EC_pure)
Make/O/D/N=(Len) Z_pure, N_pure
Z_pure[] = (EC_pure[p] == 1) ? Z_EC[p] : NaN
N_pure[] = (EC_pure[p] == 1) ? N_EC[p] : NaN
WaveTransform zapnans Z_pure
WaveTransform zapnans N_pure
End
这些条件赋值真的很有用。 Z_pure[] = (EC_pure[p] == 1) ? Z_EC[p] : NaN
的语法表示:将以下内容分配给 Z_pure 的每一行 - 如果 EC_Pure 为 1,则分配 Z_EC 值,否则分配 NaN。然后你只需删除 NaN。完成。
如果 EC_Pure == 0 然后是 zapnans,另一种可能性是复制 waves 并分配 NaNs。