0
是否有一種簡單的(非for循環)方法來創建八度模型矩陣。在R我使用model.matrix()來做到這一點。八度模型矩陣
我有此數組:
array = [1;2;3;2]
,我需要(對於迴歸的原因)
*(model = [1 0 0 0; 0 1 0 1; 0 0 1 0])* EDIT on my side
result is this model (colum 1 is for 1, column 2 for the two's etc.:
model = [1 0 0 ; 0 1 0 ; 0 0 1 ; 0 1 0]
我可以循環使用做到這一點:
model = zeros(4,3);
for i=1:4
model(i,array(i)) = 1;
end
但它會很高興做到這一步就像這樣:
model = model.matrix(array)
我能比它包含在公式中馬上
謝謝,挺有意思的。如果我轉置和鏡像「模型」,我得到我所需要的。但我仍然有2步的過程。我希望能夠一次完成所有優化的代碼。我可以編寫一個具有輸入數組並輸出「model」的函數:function [model] = model.matrix(array).... end。但是優化的代碼通常在巨大的競爭中更好更快地工作。 – irJvV
@irJvV你是什麼意思優化?這已經非常優化了,它返回了你在問題中描述的矩陣。您不必轉置模型,只需將參數交換到'sub2ind()'。 – carandraug
感謝您的回覆。我在結果「模型」中犯了一個錯誤 - >結果應該是model = [1 0 0; 0 1 0; 0 0 1; 0 1 0](我會編輯這個問題),但從你的函數模型transopse我會有這樣的模型'如此完美。通過優化代碼,我的意思是說,作爲核心Octave一部分的代碼通常比您自己編寫的類似代碼更快速和更穩定,並且它使用了一個簡單的參數(模型'比我自己編寫轉換的任何代碼都更好所有在一個'。我喜歡Octave很多級聯功能前衛與矩陣計算:) – irJvV