Matlab2017
でプログラムを最適化したいと思います。 を使用せずに一部の機能を繰り返す場合はn-times
としてください。 たとえば、次のコードでは、を削除する必要があります。Matlabコードの最適化
for i=1:5
N(i)=diff(f(x),x,i);
end
このコードを最適化するのに手伝ってください。私のプログラムでこのようなコードがたくさん必要なので、 。 for
ループを取り除くために
Matlab2017
でプログラムを最適化したいと思います。 を使用せずに一部の機能を繰り返す場合はn-times
としてください。 たとえば、次のコードでは、を削除する必要があります。Matlabコードの最適化
for i=1:5
N(i)=diff(f(x),x,i);
end
このコードを最適化するのに手伝ってください。私のプログラムでこのようなコードがたくさん必要なので、 。 for
ループを取り除くために
、一つはarrayfun
使用することができます。
arrayfun(@(i) diff(f(x), i), [1:5]', 'UniformOutput', false)
二つの発言:
diff
を使用する方法は間違いなく、エラーがスローされます。なぜ3つの入力を使用するのか分かりません。ここで、3番目の入力は、デリバティブを適用する次元を示します。 help diff
を参照してください。diff(f(x), i)
の出力サイズがスカラーではないため、オプションUniformOutput
をfalse
に設定する必要があります。' arrayfun'はループのラッパーです。ほとんどの場合、 'for'ループと比較して同等またはそれ以下です。最新のバージョンではパフォーマンスは向上しているようですが、forループを上回るほどではありません。これは決して最適化ではありません。 –
Sardar Usamaあなたは正しいです。これはあなたのコードでforループを取り除くための単なる方法ですが、通常はそれが速くなるわけではありません。 )(私のコードは必要な行数を最適化していましたが、0--))。つまり、与えられた情報では、実行時間に関してどのようにコードを最適化できるかは言えません。 – EdG
質問が不明瞭な場合は、元の投稿の下にコメントしてください。 B(i = 1:5の場合、N(i)= diff(f(x)、x、i); end'が最適化される可能性があります。 –
詳細を教えてください! –
@ P.Bn上記のコードでは、forループを使わずにsin(x)の導関数を5まで計算したいと考えています。 – Armaa
@ P.Bn他に必要な情報はありますか? – Armaa