2016-08-29 19 views
1

すべてのスクリプトでアクセスする必要があるいくつかのマジックナンバー定数を宣言しようとしています。私は次のようになりますどのmy_pathでファイルload_constants.mを作っ:startup.mの変数宣言がMATLABで機能しない

magic_number = 10; 
other_magic_number = 12; 

startup.mは、次のようになります。

% add a bunch of packages 
addpath ~/Documents/MATLAB/some-package 

userpath(my_path) 
load_constants 

しかし、私は、コマンドウィンドウでmagic_numberにアクセスしようとすると:

Undefined function or variable 'magic_number'. 

startup.mの変数を直接宣言することもできません。これを修正するには?

+0

'startup.m'はMATLABのカレントディレクトリにありますか? –

答えて

2

これは正常な動作です、startup.mは関数であり、変数は関数内で宣言(スコープの外に行くときに消滅当時と)その機能にローカルです:

function [] = startup() 
%[ 
    magic_number = 10; %% This is local variable 
%] 

はにassignin機能を使用SCに見えmagic_number値だけでなく、を有するため

function [] = startup() 
%[ 
    assignin('base', 'magic_number', 10); % This value will be visible from 'base' workspace 
%] 

注意こと:magic_numberbaseワークスペースから見えるようにしなければなりませんriptsもの機能が、それはmagic_number.m関数を作成し、あなたのパスに追加した方が良い場合があります。

function [v] = magic_number() 
%[ 
    v = 10; 
%] 

括弧なしで呼び出すことができます(すなわち、

+0

説明をありがとう。関数はあまり扱いにくいように見えましたが、おそらくこれが最善の選択肢であることが分かりました。私はそれらを 'Constants'フォルダに入れました。これを私のパスに追加しました。 – Kappie001

+2

ユーザーが投稿したコードに基づいて、スクリプトではなく機能です。 – Suever

関連する問題