相移以归一化正弦波数据我正在尝试对正弦波数据进行相移,以便所有最小峰值都移动到 x 轴上。 我一直在尝试使用此代码,但遇到错误“应该是访问或评估“矩阵”时的列表或数字,Matrix/*###*/(sineCol < < Get Values)”
任何帮助,将不胜感激。
// 加载数据
dt = 当前数据表();
// 指定带有正弦波数据的列
sineCol = dt << column("PITCH");
// 将 sineCol 转换为矩阵
sineMat = Matrix(sineCol << 获取值);
// 计算最小峰值的索引
minIndex = Loc Min(sineMat);
// 计算移动数据的点数
shiftPoints = N Rows(sineMat) - minIndex;
// 移动数据
shiftedSineCol = J(N 行(sineMat), 1, .);
对于(i = 1,i <= N 行(sineMat),i++,
shiftedSineCol[i] = If(i <= shiftPoints, sineMat[shiftPoints-i+1], sineMat[N Rows(sineMat)-i+shiftPoints+1]);
);
// 创建移位数据表
newTable = New Table("PITCH Shifted", Add Rows(N Rows(dt)));
newTable["PITCH Shifted"] = shiftedSineCol;
newTable["TIME"] = dt:column("TIME");
// 保存表格
newTable << Save("PITCH Shifted.jmp");
基础数据分析与建模回复:相移以归一化正弦波数据对 sineCol 的引用不正确
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
sineCol = dt << Column("name");
show(sineCol);
sineCol2 = Column(dt, "name");
show(sineCol2);
这里有几种可选的方法可以从连续列中获取值到矩阵
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
sineMat1 = Column(dt, "height") << get values;
sineMat2 = dt[0, "height"];
show(sineMat1, sineMat2);回复:相移以归一化正弦波数据嗨,谢谢你,我对脚本编写不是很有经验,你能向我解释一下我把这些更新的行放在脚本中的什么地方吗? sineMat1 和 sineMat2 有什么区别。
谢谢
回复:相移以归一化正弦波数据我非常强烈地尝试熟悉脚本,您可以使用它来了解它的作用(使用打印来调试脚本,从数据表中引用列并从该列中获取值)。 sineMat1 和 sineMat2 相同,但从数据表中检索值的方法不同。
您将用相应的数据表和列名称替换用于 sineCol 和 sineMat 的代码,下面是使用大类和高度列的示例。
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
sineCol = Column(dt, "height");
sineMat = Column(dt, "height") << get values;
回复:相移以归一化正弦波数据谢谢,这不是我的专业领域,我正在努力寻找一种方法来可视化我的博士数据。 我有这个错误,我试图修复它但似乎无法修复。
你有什么建议吗?
访问或评估“分配”时无效的下标(必须是数字或数字列表){395},newTable["PITCH Shifted"] = /*###*/shiftedSineCol/*###*/
回复:相移以归一化正弦波数据当您尝试创建列时,创建新表后的语法似乎有误? 我建议查看 JMP 脚本索引(从 JMP 帮助菜单中找到)和脚本指南 (jmp.com) . 两者在 .jsl 语法上都有很好的例子(有时)
脚本索引:

数据表 (jmp.com)
回复:相移以归一化正弦波数据你有 JMP Pro 吗? 如果是这样,那么功能数据浏览器可能有用。 提供多种数据处理功能,拟合样条基函数分析循环数据。 您可能不需要编写那么多代码。