2012-08-17 54 views

回答

1

看看Declare function。如果您將它們作爲返回值返回,您可以訪問本地變量。如果你不這樣做,你不能從外面訪問它們。

所以在

function [mean,stdev] = stat(x) 
n = length(x); 
mean = sum(x)/n; 
stdev = sqrt(sum((x-mean).^2/n)); 

您可以訪問平均值和STDEV但沒有辦法前往N。

5

下面描述了添加到函數本身以使該變量在本地作用域之外可用的代碼。當你不能改變這個功能時,從外面看,沒有任何事情可以改變課程的範圍(這是有意的,正確的行爲!!)。

髒方式:

  • global variables

    global t 
    t=2.468; 
    
  • 對於標量,字符串,簡單值:分配給基工作區變量使用evalin

    t=2.468; 
    evalin('base', ['var_in_base=' num2str(t) ';']); 
    
  • 任何其他變量,使用assignin

    A=magic(20); 
    assignin('base','A',A); 
    

有道:

  • 期間debugging
  • 檢查他們,如果你真的希望他們當地的範圍之內,其添加爲輸出變量!
+0

當然可以,但程序需要1小時運行,因爲我有很多循環,所以我想提取一些我忘記添加爲輸出的變量 – 2012-08-17 10:19:12

+2

當它已經在運行時,您必須重做它。順便說一句,一小時很短重做,現在想想你想要什麼,不想輸出! – 2012-08-17 10:21:55

-2

我根本不知道matlab,但從程序員的邏輯 ,似乎不正確和不可能沒有黑客代碼。 話雖這麼說,通過谷歌我看到這一點:

當你調用從功能的腳本,該腳本使用函數的工作空間。 和本地函數一樣,嵌套函數也有自己的工作空間。但是,這些工作空間在兩個重要方面是獨一無二的: 嵌套函數可以訪問和修改包含它們的函數的工作空間中的變量。 嵌套函數中的所有變量或包含它們的函數都必須明確定義。也就是說,除非這些變量已經存在於函數工作區中,否則不能調用將值賦給變量的函數或腳本。

Base and Function Workspace

不知道這是否可以幫助你在所有的,但它可能會澄清一些點