Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
私は3次元マトリックスを持っています
sigma = zeros(3, 3, 1000)
および単一のマトリックス
result = [0.5 0.5 0.5; 0.2 0.2 0.2; 0.1 0.1 0.1]
私の質問は次のようになります:「シグマ」の3次元に沿ったすべての単一行列に私の行列「結果」を追加する最も効果的な方法は何ですか?
現在、1000個の行列すべてをループして、1つずつ追加しています。Matlabに最適化された方法はありますか?
ありがとう!
使用bsxfun:
bsxfun
bsxfun(@plus, sigma, result)
シングルトン次元に沿って小さい方の行列を自動的に複製し、他の行列と一致させます。
sigma + repmat(result、[1,1,1000])
一般に、関数を渡す呼び出し(ループよりも効率的ですが)は、ネイティブコードのみを含む呼び出しほど内部的に最適化されていません。