一次元位相アンラッピング問題どこから始めますか? 私は当初、スペック値に基づいてブランケットを360度反転させる方法について助けを求めましたが(以下のリンクを参照)、フェーズがラップされているために機能しないことをもう少し詳しく調べました。 フェーズを連続形式にアンラップするプロセスがあります。
プロセスは次のとおりです:(ラジアン値を使用)
1)ラップされた位相信号の左から2番目のサンプルから開始します。
2)現在のサンプルとそのすぐ隣のサンプルとの差を計算します。
3)2つの差が+πより大きい場合は、このサンプルとその右側のすべてのサンプルから2πを引きます。
4)2つの差が-πより小さい場合は、このサンプルとその右側のすべてのサンプルに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:一次元位相アンラッピング問題正しい結果がどのように見えるかについて何か考えはありますか? これに似たもの:
ラップされたフェーズ:

これを変更する必要がありますか?

このスクリプトの実行はかなり遅くなりますが、高速になるように最適化できる可能性があります(最後の値が間違ったフェーズにある場合にも問題があります)。
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:一次元位相アンラッピング問題これは素晴らしい仕事です@jthi 。
(写真1):曲線が、ラップされた位相を持たないパーツ/チャネルと同じ形状を保持している限り、それは正しいと思います。 テスト担当者に確認します。
(写真2):青い線(チャンネル0)は死んでいると思いますが、他の3つのチャンネルには膨大な数のラップされたフェーズがあり、スクリプトでうまくいきました。
(写真3):最後ではなく2つの中間インデックスでスクリーニングしているので、今のところそれと一緒に暮らすことができます。
スクリプトの最適化に関しては、どこから始めればよいのかさえわかりません。 たぶん誰かが提案でこのスレッドにチャイムを入れることができます。
繰り返しになりますが、これは素晴らしいことであり、助けてくれてありがとうございます。 フェーズを任意にアンラップしていたため、適切なパーツを選別する可能性があります。 もう少し掘り下げるまで、悪い部品を送っていたかどうかはわかりません。
Re:一次元位相アンラッピング問題スクリプトを振り返って別のデータセットに適用していますが、まだ十分ではないと思います。これについて少し考えなければなりません。 近いです...