2017-12-03 10 views
-1

関数内の任意の行列のエントリを抽出する方法を知る必要があります。関数fは、固定実数行列の要素a(i,j)を抽出するために、2つの余分な入力引数ijを取得します。行列は作業領域にあり、大きなサイズです。関数fは、長い反復アルゴリズムの中にあります。それぞれの反復で行列全体がaにリコールされると、速度が大幅に低下します。この行列は関数として定義するか(関数内で呼び出すことができるように)するか、マットファイルからロードする必要があります。最初のオプションはより効率的だと思われますが、行列を関数としてどのように保存するか分かりません。MATLABの関数内のデータ行列を使用する

+0

この関数をどのように呼び出しているか、そしてなぜ別の関数を使って配列にアクセスする必要があるのか​​を示す最小限のコード、または少なくとも疑似コードを見るとよいでしょう。 – beaker

答えて

0

私はあなたの質問を理解していません。

配列arrがあるとします。 arr(i,j)を実行すると、その要素にアクセスできます。

ファンクション本体にfunc(arr, i, j)というファンクションがあり、パラメータを使用して簡単にarr(i,j)にアクセスできるとします。

funcが配列を返す場合、あなたは関数の行列をしたい場合は、それらにハンドルを作るvar = func(arr); var(i,j)

を行うと、配列にそれを格納することができます。

a = @func_a; 
b = @func_b; 
c = @func_c; 
funcarray = [a b c]; 
+0

私たちが話している配列はあらかじめ指定されており、サイズは大きいです。私は 'arr(i、j)'のような関数をデータのシートから作成する方法を探しています。 –

+0

@SaraWinslet通常、配列を関数に渡します。 MATLABはcopy on writeを使用するので、メモリ内のデータを変更しない限り(メモリが問題であると仮定して)、配列は関数内にコピーされません。興味のある配列とインデックスをすでに知っている方は、代わりに関数に 'a(i、j)'を渡すのはなぜですか?どのような問題を解決しようとしていますか? – beaker

+0

すべてのエントリを使用します。関数自体は長い反復アルゴリズムの中にあります。 –

関連する問題