一维相位展开问题从哪里开始? 我最初是寻求帮助(请参阅下面的链接),以了解如何基于规格值进行全方位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)个中间指标,而不是最后一个。
至于脚本的优化,我什至不知道从哪里开始。 也许有人可以在此线索中提出一些建议。
再次,这很棒,不能感谢您的帮助。 由于我们随意展开阶段,因此有可能筛选出良好的零件。 不知道我们是否发送了不良零件,直到我可以进一步研究它为止。
回复:一维相位展开问题我正在查看该脚本并将其应用于另一组数据,但我认为还没有到此为止。我将不得不对此有所思考。 关闭了...