我正在尝试对正弦波数据进行相移,以便所有最小峰值都移动到 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");