ベクトルvと行列Mがあります。vの各要素にMを掛けてから、結果のすべての行列を合計したいと思います。
for i=1:length(v)
lala(:,:,i) = v(i).*M;
end
sum(lala, 3)
forループなしでこれを行うことは可能ですか?
ベクトルvと行列Mがあります。vの各要素にMを掛けてから、結果のすべての行列を合計したいと思います。
for i=1:length(v)
lala(:,:,i) = v(i).*M;
end
sum(lala, 3)
forループなしでこれを行うことは可能ですか?
DanilAsotskyの答えは正しいと思います。彼はここで操作の線形性を利用しています。クロネッカーテンソル積を使用して、この線形性プロパティに依存しない別のソリューションを提供したいので、次以外の操作でも機能しますsum
。
kvM = kron(v,M);
result = sum(reshape(kvM,[size(M) numel(v)]),3)
私の現地時間では遅すぎます。これが機能する理由の詳細を説明する気はありません。matlabヘルプとウィキペディアから理解できない場合は、以下にコメントしてください。説明します。
iに依存しない単一の行列Mがありますか?この場合、sum(v(i)* M)= sum(v(i))*Mです。
たとえば、コードに対して期待される結果が得られます。
v_sum = sum(v);
lala_sum = v_sum * M;