2016-08-29 1 views
1

Ich versuche, einige magische Zahl Konstanten zu deklarieren, auf die ich in jedem Skript zugreifen muss. Ich habe eine Datei load_constants.m in my_path, die wie folgt aussieht:Variablendeklaration in startup.m funktioniert nicht in MATLAB

magic_number = 10; 
other_magic_number = 12; 

Mein startup.m sieht wie folgt aus:

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

userpath(my_path) 
load_constants 

Aber wenn ich versuche magic_number im Befehlsfenster zuzugreifen:

Undefined function or variable 'magic_number'. 

Das direkte Deklarieren der Variablen in startup.m funktioniert auch nicht. Wie behebe ich das?

+0

Ist Ihre 'startup.m' im MATLAB Current Directory? –

Antwort

2

Dies ist ein normales Verhalten ist startup.m eine Funktion und Variablen innerhalb der Funktion deklarieren sind lokale diese Funktion (und dann verschwinden, wenn aus dem Rahmen zu gehen):

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

Verwenden Sie die assignin Funktion haben magic_number vom base Arbeitsbereich sichtbar zu sein:

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

Beachten Sie, dass magic_number Wert sichtbar nicht nur auf sc für mit ripts sondern funktioniert auch, kann es besser, eine magic_number.m Funktion zu erstellen und zu Ihrem Pfad hinzufügen:

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

, die ohne die Klammern genannt werden kann (d genau wie die Syntax für Variablen)

+0

Danke für die Klarstellung. Funktionen schienen früher zu unhandlich zu sein, aber ich erkannte, dass es wahrscheinlich die besten Optionen sind. Ich habe sie alle in einen 'Konstanten'-Ordner gelegt, den ich meinem Pfad hinzugefügt habe. – Kappie001

+2

Basierend auf dem Code, den der Benutzer gepostet hat, ist es ein Skript, das keine Funktion ist. – Suever