spfun
スパース行列の非ゼロ要素に関数を適用
説明
例
指数関数のスパース行列への適用
4 行 4 列のスパース対角行列を作成します。
S = diag(sparse(1:4))
S = (1,1) 1 (2,2) 2 (3,3) 3 (4,4) 4
指数関数を S
の非ゼロ要素に適用します。結果の行列は、S
と同じスパース パターンをもちます。
F = spfun(@exp,S)
F = (1,1) 2.7183 (2,2) 7.3891 (3,3) 20.0855 (4,4) 54.5982
spfun
は S
の非ゼロ要素だけに適用されるため、S(i)
がゼロの場合は F(i)
の値がゼロになります。これは関数を S
のすべての要素に適用することとは異なります。たとえば、指数関数を S
のすべての要素に適用することと、この結果を比較します。関数 exp(S)
は、S
の 0
である要素に対して 1
を返します。
full(exp(S))
ans = 4×4
2.7183 1.0000 1.0000 1.0000
1.0000 7.3891 1.0000 1.0000
1.0000 1.0000 20.0855 1.0000
1.0000 1.0000 1.0000 54.5982
二次関数の適用およびスパース パターンのプロット
密度が 0.02
のランダムな 50
行 50
列のスパース行列を作成します。この行列は 50
個の非ゼロ要素をもちます。行列 S
のスパース パターンをプロットします。
rng default;
S = sprand(50,50,0.02);
spy(S)
二次関数 を S
の非ゼロ要素で評価します。spfun
を使用して評価した関数は、行列 S
と同じスパース パターンをもちます。
fun = @(x) x.^2 + x + 1; F = spfun(fun,S); spy(F)
入力引数
S
— 入力行列
スパース行列 | 非スパース行列
入力行列。この行列は通常スパースですが、必ずしもスパースに限りません。
S
が非スパース行列の場合、F = spfun(func,S)
は関数 func
を S
の非ゼロ要素に適用して、F
をスパース行列として返します。
データ型: double
| logical
複素数のサポート: あり
func
— 適用する関数
関数ハンドル
入力配列の要素に適用する関数。関数ハンドルとして指定します。関数は S
を要素単位で処理しなければなりません。関数ハンドルの詳細については、関数ハンドルの作成を参照してください。
例: @(n) n+1
ヒント
func
がゼロである入力に対してゼロを返す場合、func(S)
を使用して、スパース行列S
でのspfun
の呼び出しと同じ結果を返すことができます。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
この関数は GPU 配列を完全にサポートしています。詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
分散配列
Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。
使用上の注意事項および制限事項:
各ワーカーで、
fun
はワーカーにとってローカルであるS
の非ゼロ要素のみを入力として受け取ります。したがって、要素単位で動作する関数はspfun
での使用に最も適しています。
詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)