2011-07-27 24 views
5

私は関数function ExtremePoints = AnalyseData(ScanData)を作成したいと思います。Matlab - ワークスペース変数の使用

引数ScanDataを渡さずに関数を実行できるようにしたいのですが、この場合、Matlab Workspaceから同じ名前の変数を使用したいと考えています。

これは、ワークスペースに表示される変数ScanDataの関数本体の内部で使用できますか?

または、変数ScanDataの内容をワークスペースから.matファイルに保存してから、そのファイルを関数本体にロードする必要がありますか?

+3

@Edricには次のように書かれています。それはあまり痛みを伴わずに関数を適切に再利用することができないので(強く)避けてください。 mlintは 'eval'や' evalin'の中で間違いを警告しません。あなた自身が好きなことをして、あなたがする必要がないときにこれらを使うのをやめましょう! – Egon

+0

問題は、上記の関数がテストスクリプトとして使用され、コマンドウィンドウから呼び出しを呼び出す代わりに、エディタから関数を直接呼び出したいからです。これがこの質問の理由です。しかし、アドバイスをありがとう! :) – Simon

+1

あなたができることはいくつかあります。まず、関数ではなくスクリプトにすることができます( 'function ...'を省略してください)。すべての変数は、基本作業領域の一部になります。だから、これは混乱するかもしれません。すべてを閉じる。便利です。または、[実行コンフィギュレーション](http://www.mathworks.cn/help/techdoc/matlab_env/brqxeeu-131.html#brqxeeu-136)機能を使用することもできます。しかし、これらはバージョン管理や別のコンピュータで追跡するのが面倒です。両方とも長所と短所があります。 – Egon

答えて

11

おそらく完全にはお勧めできません。ここに方法は次のとおりです。

function ExtremePoints = AnalyseData(ScanData) 
if nargin == 0 
    ScanData = evalin('base', 'ScanData'); 
end 
% do stuff 

これには、入力引数が指定されていない場合baseワークスペース(nargin == 0)からScanDataの値を取得します。

evalevalinの使用は、コードを理解して再利用するのが難しくなるため、一般的にはお勧めしません。

関連する問題