私の回答の 1 つが、やなどcd(path_to_toolbox
のツールの 1 つではなく )の使用を提案したことで最近反対票を投じられました。私が受けた激しい批判を考えると、ツールを使用するのには十分な理由があると想像する必要があります。おそらく、特にコードが他のシステムに配布されている場合は、何らかの形でより堅牢であると思われます。path
addpath
rmpath
path
cd
次に、 vsのパフォーマンスを計測することにaddpath
しましたが、次の結果を見つけて驚きました。各試行の前に、ワークスペースをクリアし、代替パスを持つ文字列配列を作成しました。
clear
clc
p1 = 'c:\MATLAB7\toolbox\symbolic\@sym\';
p2 = matlabroot;
newpath = repmat(' ',100,100);
for ii=1:2:99
newpath(ii,1:length(p1)) = p1;
newpath(ii+1,1:length(p2)) = p2;
end
次に、addpath
またはcd
次のように実行しました。
tic
for ii=1:100
addpath(newpath(ii,:))
end
toc
経過時間は 13.437000 秒です。
tic
for ii=1:100
cd(newpath(ii,:))
end
toc
経過時間は 1.078000 秒です。
cd
関数 (ツールボックスなど) へのパスを設定する場合など、 の使用が正当化される条件があるかどうかについてのコメントを歓迎します。ずさんだと思われるかもしれませんが、私はcd
長年使用しており、繰り返し使用すると速度がかなり低下する可能性がありますが、プログラムの高度に反復される部分で使用されていない場合、速度が低下してもコーディングが簡単になるだけの価値があることがわかりました。特に、addpath
使用するのはそれほど複雑ではありませんが、今では、好む本当の理由があるようですcd
。実際には高速です。
編集
この投稿のあとがきとして、私は(そしてこの例では)の間違った使用に罪を犯すことを嘆願します。ただし、簡単なスクリプト作成に頻繁に使用される言語では、そのような使用の余地があるはずです。matlab のユーザーの専門知識には段階があり、場合によっては、「高度」でなく、一見ずさんなプログラミング手法が、実際には短期的には有利であると解釈される可能性があることに注意してください (長期的ではないにしても、または、バージョンとディレクトリ構造の管理が問題になる可能性がある場所)。cd
addpath
付録として、SO の投稿へのリンクをいくつか含め、そのアドレス組み込み関数のオーバーライド、シャドウイングなどを使用できますaddpath
(私も主張します):cd
オーバーライドされた組み込み関数へのハンドルを取得する方法は?
http://www.mathworks.in/matlabcentral/newsreader/view_thread/264354