一維相位展開問題從哪裡開始? 我最初是尋求幫助(請參閱下面的鏈接),以了解如何基於規格值進行全方位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
數據表圖形學腳本編寫回复:一維相位展開問題知道正確的結果會是什麼樣嗎? 類似於以下內容:
包裝階段:

應該改變嗎?

運行此腳本將相當慢,但是很可能可以對其進行優化以使其更快(如果最後一個值的相位錯誤,也會有問題):
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)}
)
)
);最後一個樣本的問題:

回复:一維相位展開問題這是很棒的工作@jthi 。
(圖片1):我認為只要曲線保持與沒有包裹相的零件/通道相同的形狀,那是正確的。 我將與測試人員進行驗證。
(圖2):我認為藍線(通道0)已經死了,但是其他3個通道具有大量的換相階段,您的腳本可以解決這個問題。
(圖3):我現在可以接受這一點,因為我們正在篩選的是兩(2)個中間指標,而不是最後一個。
至於腳本的優化,我什至不知道從哪裡開始。 也許有人可以在此線索中提出一些建議。
再次,這很棒,不能感謝您的幫助。 由於我們隨意展開階段,因此有可能篩選出良好的零件。 不知道我們是否發送了不良零件,直到我可以進一步研究它為止。
回复:一維相位展開問題我正在查看該腳本並將其應用於另一組數據,但我認為還沒有到此為止。我將不得不對此有所思考。 關閉了...