startup.m中的变量声明在MATLAB中不起作用

时间:2016-08-29 09:40:36

标签: matlab startup

我试图声明我需要在每个脚本中访问的一些幻数常量。我在load_constants.m中创建了一个my_path文件,其内容如下:

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中的变量也不起作用。如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

这是正常的行为,startup.m是一个函数,函数内部的变量声明为 local 到该函数(然后在超出范围时消失):

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

使用assignin功能可以从magic_number工作区中看到base

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

请注意,由于magic_number值不仅可以显示给脚本,还可以显示功能,因此最好创建一个magic_number.m函数并将其添加到您的路径中:

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

可以在没有括号的情况下调用(即就像变量的语法一样)