2016-03-25 11 views
1

私は3つの対角線の要素しか持たない疎な行列を持っています。例えば。Matlab効率的な疎行列の乗算

enter image description here

また、私は列ベクトルの各列に対応する要素によって、スパース行列の各列内のすべての要素を乗算したい列ベクトルを有します。 MATLABでこれを行う効率的な方法はありますか?スパース行列はAと呼ばれ、列ベクトルBされている場合は、私は明らかに非効率的である

A.*repmat(B,[1,9]) 

のみを試してみました。ここで

+0

「列ベクトルの各行」は単なるスカラーです。あなたは何をしているのですか? –

+0

@HennadiiMadanはい、心配するつもりはありませんが、Amroの解決策は私が探していたものです –

答えて

4

が一つの方法です:

C = bsxfun(@times, A, B) 

docsによると、結果の行列Cは希薄である:両方が満ちている場合、両方のオペランドがスパース、および完全な結果である場合

バイナリ演算子は、まばらな結果が得られ。 オペランドが混在している場合は、オペレーションにスパース性が維持されない限り、結果はいっぱいです。 Sが疎でFが一杯の場合、S + F、S * F、F \ Sは一杯になります。ですが、S * FとS & Fは疎です。です。場合によっては、マトリックスにゼロ要素がほとんどなくても結果がまばらになることがあります。

+0

@Adriaan、うまくいきません - 結果は疎な行列です:) –

+1

@Adriaan結果の希薄さに関する注釈を追加しました – Amro

+0

ありがとう、アムロ - 私が探していたもの: –

関連する問題