相移以歸一化正弦波數據我正在嘗試對正弦波數據進行相移,以便所有最小峰值都移動到 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 嗎? 如果是這樣,那麼功能數據瀏覽器可能有用。 提供多種數據處理功能,擬合樣條基函數分析循環數據。 您可能不需要編寫那麼多代碼。