1 차원 위상 풀기 문제어디서부터 시작할까요? 나는 원래 사양 값을 기반으로 담요 360도 뒤집기를 만드는 방법에 대한 도움을 요청했지만 (아래 링크 참조) 위상이 포장되어 있기 때문에 작동하지 않는 조금 더 철저하게 조사했습니다. 단계를 연속적인 형태로 풀어내는 과정이 있습니다.
프로세스는 다음과 같습니다. (라디안 값 사용)
1) 래핑 된 위상 신호의 왼쪽에서 두 번째 샘플부터 시작합니다.
2) 현재 샘플과 바로 인접한 왼쪽 이웃 사이의 차이를 계산합니다.
3) 둘의 차이가 + π보다 크면이 샘플과 오른쪽에있는 모든 샘플에서 2π를 뺍니다.
4) 둘의 차이가 -π보다 작 으면이 샘플과 오른쪽에있는 모든 샘플에 2π를 더합니다.
5) 모든 샘플이 처리 되었습니까? 아니오 인 경우 2 단계로 돌아가십시오. 그렇다면 중지
이 작업을 수행하는 데 도움이 필요하며 참조를 위해 샘플 데이터 테이블을 첨부했습니다.
이 데이터 테이블에서 : RowCol, : channel, : teststate 및 refstate로 풀어야합니다.
미리 감사드립니다
// You can plot the data according to the scripts below
// This is what i think is a wrapped phase
_dt = Current Data Table();
gb = _dt << Graph Builder(
Size( 1326, 1002 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :index ), Y( :radians ), Overlay( :RowCol_PartNo_Ch ) ),
Elements( Line( X, Y, Legend( 8 ) ) ),
Local Data Filter(
Add Filter(
columns( :teststate, :refstate, :channel, :RowCol ),
Where( :teststate == 11 ),
Where( :refstate == 1 ),
Where( :channel == {"0", "1", "2", "3"} ),
Where( :RowCol == "r3c1sr3sc1" ),
Display( :channel, N Items( 4 ) ),
Display( :RowCol, N Items( 15 ), Find( Set Text( "" ) ) )
)
),
SendToReport(
Dispatch(
{},
"index",
ScaleBox,
{Min( 4.3125 ), Max( 22.6875 ), Inc( 1 ), Minor Ticks( 4 )}
)
)
);
// This is what i think is a normal (continuous form)
_dt = Current Data Table();
gb = _dt << Graph Builder(
Size( 1326, 1002 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :index ), Y( :radians ), Overlay( :RowCol_PartNo_Ch ) ),
Elements( Line( X, Y, Legend( 8 ) ) ),
Local Data Filter(
Add Filter(
columns( :teststate, :refstate, :channel, :RowCol ),
Where( :teststate == 11 ),
Where( :refstate == 1 ),
Where( :channel == {"0", "1", "2", "3"} ),
Where( :RowCol == "r3c1sr3sc0" ),
Display( :channel, N Items( 4 ) ),
Display( :RowCol, N Items( 15 ), Find( Set Text( "" ) ) )
)
),
SendToReport(
Dispatch(
{},
"index",
ScaleBox,
{Min( 4.3125 ), Max( 22.6875 ), Inc( 1 ), Minor Ticks( 4 )}
)
)
);
https://community.jmp.com/t5/Discussions/Changing-column-values-based-on-the-column-spec-limit/mp/378999#M62877
데이터 테이블제도법스크립팅Re : 1 차원 위상 풀기 문제올바른 결과가 어떻게 생겼는지 아십니까? 다음과 비슷한 것 :
래핑 된 단계 :

변경해야합니까?

이 스크립트를 실행하는 것은 상당히 느리지 만 대부분 더 빠르도록 최적화 할 수 있습니다 (마지막 값이 잘못된 단계에있는 경우에도 문제가 있음).
Names Default To Here(1);
dt = Current Data Table();
dt << New Column("supportindex", Character, "Nominal",
<< Set Each Value(:rowcol || char(:channel)||char(:teststate)||char(:refstate))
);
dt << New Column("radians_cont", Numeric, "Continuous");
Summarize(dt, uniqValues = by(:supportIndex));
For(i = 1, i <= N Items(uniqValues), i++,
valIndex = Loc(Column(dt, "supportIndex") << get as matrix, uniqValues[i]);
m = Column(dt, "radians")[valIndex];
deduction = 0;
nr = N Items(m);
For(k = 2, k <= nr - 1, k++,
rad_dif = m[k - 1] - m[k];
If(rad_dif > pi(), deduction = 2*pi(),
rad_dif < -1*pi(), deduction = -2*pi(),
deduction = 0;
);
m[k::nr] = m[k::nr] + deduction;
);
dt[valIndex, "radians_cont"] = m;
);
dt << Delete Columns("supportindex");
gb = dt << Graph Builder(
Size(1326, 1002),
Show Control Panel(0),
Show Legend(0),
Variables(X(:index), Y(:radians), Y(:radians_cont), Overlay(:RowCol_PartNo_Ch)),
Elements(Position(1, 1), Line(X, Y, Legend(11))),
Elements(Position(1, 2), Line(X, Y, Legend(12))),
Local Data Filter(
Add Filter(
columns(:teststate, :refstate, :channel, :RowCol),
Where(:teststate == 11),
Where(:refstate == 1),
Where(:channel == {"0", "1", "2", "3"}),
Where(:RowCol == "r3c1sr3sc1"),
Display(:channel, N Items(4), Size(178, 68)),
Display(:RowCol, N Items(15), Size(161, 255), Find(Set Text("")))
)
),
SendToReport(
Dispatch(
{},
"index",
ScaleBox,
{Min(4.3125), Max(22.6875), Inc(1), Minor Ticks(4)}
)
)
);마지막 샘플 문제 :

Re : 1 차원 위상 풀기 문제이것은 대단한 일입니다 @jthi .
(그림 1) : 커브가 래핑 된 위상이없는 부품 / 채널과 동일한 모양을 유지하는 한 정확하다고 생각합니다. 나는 테스트 사람들과 함께 확인할 것입니다.
(그림 2) : 파란색 선 (채널 0)은 죽었다고 생각하지만 다른 3 개 채널에는 엄청난 수의 래핑 된 단계가 있었고 스크립트가 제대로 작동했습니다.
(사진 3) : 마지막이 아닌 두 개의 중간 지수를 상영하고 있기 때문에 지금은 그것으로 살 수 있습니다.
스크립트 최적화에 관해서는 어디서부터 시작해야할지 모르겠습니다. 누군가가이 스레드에서 제안을 할 수 있습니다.
다시 말하지만 이것은 훌륭하며 도움에 대해 충분히 감사 할 수 없습니다. 우리가 단계를 임의로 풀었 기 때문에 좋은 부품을 선별 할 가능성이 있습니다. 내가 좀 더 파헤칠 수있을 때까지 우리가 나쁜 부품을 보내고 있는지 확실하지 않습니다.
Re : 1 차원 위상 풀기 문제나는 스크립트를 되돌아보고 다른 데이터 세트에 적용하고 있으며 아직 우리가 거기에 있다고 생각하지 않습니다. 나는 이것에 대해 조금 생각해야 할 것입니다. 가까워 ...