-
Notifications
You must be signed in to change notification settings - Fork 15
Open
Description
Example from the PyDevice Sept 22 2022 presentation doesn't work as the Signal:Y first initialized to MEVL=1 and after it processes it changed MEVL=600. The workaround is force a change of Signal:FFT:Y.INPA to the same value, which then triggers pycalcRecord::fetchValues() to re-evaluate the link and its number of elements. It appears that dbGetNelements() and dbGetLink() don't do that automatically, which is very similar to a previous report on tech-talk.
record(waveform, "Signal:X") {
field(DTYP, "pydev")
field(NELM, "600")
field(FTVL, "DOUBLE")
field(INP, "@list(np.linspace(0, 0.75, 600, endpoint=False))")
}
record(pycalc, "Signal:Y") {
field(INPA, "Signal:X PP")
field(MEA, "600")
field(FTA, "DOUBLE")
field(CALC, "list(np.sin(50.0 * 2.0*np.pi*np.array(A)) + 0.5*np.sin(80.0 * 2.0*np.pi*np.array(A)))")
field(MEVL, "600")
field(FTVL, "DOUBLE")
}
record(waveform, "Signal:FFT:X") {
field(DTYP, "pydev")
field(NELM, "300")
field(FTVL, "DOUBLE")
field(INP, "@list(scipy.fft.fftfreq(600, 0.00125)[:600//2])")
}
record(pycalc, "Signal:FFT:Y") {
field(INPA, "Signal:Y CP")
field(MEA, "600")
field(FTA, "DOUBLE")
field(CALC, "list(2.0/600 * np.abs(scipy.fft.fft(A)[0:600//2]))")
field(MEVL, "300")
field(FTVL, "DOUBLE")
}
Metadata
Metadata
Assignees
Labels
No labels