JSL을 사용하여 여러 연속 파형에서 데이터 추출나는 연속 직사각형 펄스가 V0 potentail을 만나는 시간 값을 추출하려고합니다.
3 웨이브 폼에 대해 2 사이클만을 보여 주었지만, 더 많은 사이클이 있고 파형의 수가 3보다 많습니다.
상승 및 하강은 각 파형마다 다른 타이밍에서 발생하며, t1_rise, t1_fall, t2_rise, t2_fall ...을 추출하는 솔루션을 찾고자합니다. 주어진 데이터 세트에 대해.
여러분 중 누군가가 나를 계몽 할 수 있다면 그것은 대단히 감사 할 것입니다.
감사,
파이
재 : JSL을 사용하여 여러 연속 파형에서 데이터 추출하기나는 내가 포함했던 코드를 가져 왔고 관찰 할 경우 데드 타임 afer a cross를 추가했습니다. 그 동안에는 부차적 인 교차점이 무시됩니다.
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "time of crossing" );
dt << New Column( "direction", character );
dt << New Column( "Which threshold", character );
max90 = 5.6;
max10 = .6;
deadtime = .001;
lastcross = -9999999999;
timerise = Function( {MaxPercent},
:time of crossing[i] = ((MaxPercent - :voltage[i - 1]) / (:voltage[i] - :voltage[i - 1])) * (:time[i] - :time[i - 1]) + :time[i - 1]
);
timefall = Function( {MaxPercent},
:time of crossing[i] = ((:voltage[i - 1] - MaxPercent) / (:voltage[i - 1] - :voltage[i])) * (:time[i - 1] - :time[i]) + :time[i]
);
For( i = 2, i <= N Rows( dt ), i++,
If( :waveform[i - 1] != :waveform[i],
Show( i ),
If( :voltage[i] >= max10 & :voltage[i - 1] < max10 & :time[i]> lastcross+deadtime,
lastcross = :time[i];
x = timerise( max10 );
:direction[i] = "Rise";
:Which Threshold[i] = "10%";
);
If( :voltage[i] >= max90 & :voltage[i - 1] < max90 & :time[i]> lastcross+deadtime,
lastcross = :time[i];
x = timerise( max90 );
:direction[i] = "Rise";
:Which Threshold[i] = "90%";
);
If( :voltage[i] <= max10 & :voltage[i - 1] > max10 & :time[i]> lastcross+deadtime,
lastcross = :time[i];
x = timefall( max10 );
:direction[i] = "Fall";
:Which Threshold[i] = "10%";
);
If( :voltage[i] <= max90 & :voltage[i - 1] > max90 & :time[i]> lastcross+deadtime,
lastcross = :time[i];
x = timefall( max90 );
:direction[i] = "Fall";
:Which Threshold[i] = "90%";
);
)
);재 : JSL을 사용하여 여러 연속 파형에서 데이터 추출하기 나는 파워 라인 웨이브 폼에 관한 먼 포스트를 언젠가 되돌아 보았다. .
여기에는 1/2 초 드롭 아웃이있는 60Hz 파형의 그래프가 포함되어 있으며 제로 크로싱 횟수를 계산하여 주파수를 감지하는 방법에 대한 아이디어를 잘 모르는 경우가 있습니다 ... 특히 빈도 계산으로 인해 전원이 끊어졌을 때 극단적 인 아웃 라이어가 생성되었습니다.
재 : JSL을 사용하여 여러 연속 파형에서 데이터 추출하기그것은 운동했다!!
도와 주셔서 정말 고맙습니다. Jim, 당신에게서 배울 수있어서 기쁩니다.
내 jSL 코드로 솔루션을 구현하는 방법을 찾은 후에 실제로 또 다른 문제가 발견되었습니다.
파형의 오실 레이션으로 인해 잘못된 탐지가 거의 없습니다.
데이터 포인트를 제거하여 펄스 이후에 몇 가지 잘못된 탐지를 제거 할 수있었습니다.
그러나 첫 번째 펄스의 경우 여러 파형이 상승 시간이 느리기 때문에 상승 에지에서 여러 번 감지합니다. (샘플 데이터 테이블에서 찾을 수 있습니다. 이전에이 스레드에서 동봉했습니다.)
내가 너를 너무 괴롭 히고 있다는 것을 안다. 그러나 나는 그걸 맥박 속에서 제거하는 방법을 생각할 수 없다.
나는 당신이 그들을 필터링 / 무시하는 방법을 내게 가르쳐줬으면 좋겠다.
감사,
필
재 : JSL을 사용하여 여러 연속 파형에서 데이터 추출하기저는 간단한 스크립트를 작성했습니다. 최대 90 %와 10 %를 계산하는 것을 제외하고는 (당신이 원하는 것을 혼란스럽게합니다.) 나는 이것이 당신이 원한 것이라고 생각합니다.
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "time of crossing" );
dt << New Column( "direction", character );
dt << New Column( "Which threshold", character );
max90 = 5.6;
max10 = .6;
timerise = Function( {MaxPercent},
:time of crossing[i] = ((MaxPercent - :voltage[i - 1]) / (:voltage[i] - :voltage[i - 1])) * (:time[i] - :time[i - 1]) + :time[i - 1]
);
timefall = Function( {MaxPercent},
:time of crossing[i] = ((:voltage[i - 1] - MaxPercent) / (:voltage[i - 1] - :voltage[i])) * (:time[i - 1] - :time[i]) + :time[i]
);
For( i = 2, i <= N Rows( dt ), i++,
If( :waveform[i - 1] != :waveform[i],
Show( i ),
If( :voltage[i] >= max10 & :voltage[i - 1] < max10,
x = timerise( max10 );
:direction[i] = "Rise";
:Which Threshold[i] = "10%";
);
If( :voltage[i] >= max90 & :voltage[i - 1] < max90,
x = timerise( max90 );
:direction[i] = "Rise";
:Which Threshold[i] = "90%";
);
If( :voltage[i] <= max10 & :voltage[i - 1] > max10,
x = timefall( max10 );
:direction[i] = "Fall";
:Which Threshold[i] = "10%";
);
If( :voltage[i] <= max90 & :voltage[i - 1] > max90,
x = timefall( max90 );
:direction[i] = "Fall";
:Which Threshold[i] = "90%";
);
)
);재 : JSL을 사용하여 여러 연속 파형에서 데이터 추출하기내 의견에 진심으로 감사드립니다.
아래 샘플 데이터 표를 첨부하고 정말로 솔루션을 제공해주기를 바랍니다.
앞서 말씀 드렸듯이 같은 열에 함께 쌓인 파형의 타임 스탬프는 동일하게 분포되어 있으며 파형 번호는 보관해야하는 열로 분류되어 있습니다. (즉 열을 분할 할 수 없습니다.)
각 직사각형 펄스의 상승 및 하강 시간을 찾기 위해 각 직사각형 펄스에서 최대 전압의 10 % 및 90 % (오버 슈트 및 언더 슈트는 약 6V 제외)의 교차 시간을 찾고 싶습니다.
한 모서리 당 두 개의 한계 교차점이 너무 복잡하면 한 번의 임계 교차를위한 시간을 감지하는 방법을 찾고 싶습니다.
희망은 내가 지역 사회에서 해결책을 찾을 수 있습니다.
감사,
필
감사,
필
재 : JSL을 사용하여 여러 연속 파형에서 데이터 추출하기각 행에 타임 스탬프와 전압 값이 있다고 가정하면 데이터를 통과하고 데이터가 지정된 전압을 초과 할 때이를 감지하는 것이 상대적으로 간단합니다. 여러 파형에 대해이를 수행하는 것은 좀 더 복잡합니다. 도움이되는 것은 데이터 테이블의 구조가 무엇인지 확인하는 것입니다. 제공 할 수 있다면 커뮤니티의 누군가가 해결책을 제공 할 수 있다고 확신합니다.