1 有沒有一種快速簡單的方法來獲取一些矢量[x,y,z]並生成[xx,xy,xz,yy,yz,zz]?如何在matlab中輕鬆應用二次增強 nchoosek將忽略平方項。我可以手動添加它們...只是想知道是否有更好的解決方案 來源 2016-05-01 2c2c +1 什麼是'xx'?你在這裏沒有錯過一個'*'號嗎?另外,什麼是'x','y','z'?標量或矩陣?這一點很重要,因爲乘法可能不可交換。 – Jubobs
2 假設矢量只包含單個元素,我建議的一種方法是使用find和triu的組合。鑑於您的矢量被存儲在變量A,嘗試: [X,Y] = find(triu(ones(numel(A)))); P = A(X).*A(Y); triu提取出來的矩陣的上三角形部分。通過提取完整矩陣的上三角部分,我們可以使用find來確定非零條目的行和列位置。每行和列的位置對應於向量中的一對位置,您可以將它們相乘以獲得所需的結果。行和列位置將分別存儲在X和Y中,然後您將使用它們訪問矢量A和元素方式乘法以獲得所需的結果。 來源 2016-05-01 07:45:27 rayryeng +0 你回答了,但是如果'x,y,z'是每個列向量本身呢? – 2c2c +0 @ 2c2c我在你的文章中假設元素'x''y'和'z'都是單個元素。如果你希望這些是列向量,而不是看看這個規範的職位:http://stackoverflow.com/questions/21895335/generate-a-matrix-containing-all-combinations-of-elements-taken-from-正矢量/ 21895344#21895344 – rayryeng
什麼是'xx'?你在這裏沒有錯過一個'*'號嗎?另外,什麼是'x','y','z'?標量或矩陣?這一點很重要,因爲乘法可能不可交換。 – Jubobs