我正在嘗試對正弦波數據進行相移,以便所有最小峰值都移動到 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");