2013-04-10 87 views
1

我想有一個文件功能,並與少的代碼調用該函數,例如:如何把一個函數和它的調用放在一個文件中?

function foo() 
    ... 
end 

foo() 

我想保存這樣的代碼到文件(一個文件)命名爲「everything.m」然後在Matlab/Octave控制檯中輸入「everything」,我的函數foo將被定義爲AND調用。

+1

出了什麼問題兩個文件?或者你想在一個文件中有很多功能? – Dan 2013-04-10 09:57:18

+2

丹是正確的,你可以在一個文件中保存多個功能。但請記住,您不能混合使用腳本和功能。所以在你的情況下,爲了調用foo(),你可能需要編寫另一個函數,否則matlab編譯器會報錯。 – entropiece 2013-04-10 09:59:52

+0

@Dan,我想在一個文件中加入許多函數,並加上對其中一個函數的調用。 – greenoldman 2013-04-10 10:19:49

回答

1

在Matlab中,您不能混合使用腳本和函數。所以在你的情況下,爲了調用foo()你需要編寫另一個函數,否則matlab編譯器會報錯。

所以everything.m應該有一個叫做everything功能,在這裏你可以撥打foo()

也有同樣的問題在這裏

MATLAB script code and function code in the same file?

0

我想你可以在腳本中編寫代碼,然後用相同的函數名保存它。例如,如果你的函數是foo,那麼當你保存文件時,它的名字必須是:foo.m。從命令行調用foo執行該函數。如果只想在沒有輸入參數的情況下調用該函數,則必須在關鍵字「function」和「end」之間定義所需的所有變量。此外,只有當您的當前文件夾是保存該功能的文件夾時,才能成功調用該功能。如果您從另一個目錄調用該函數,則會出現錯誤。爲了讓這個功能「全局」工作,你應該把它添加到「matlab路徑」中。希望這可以幫助你一點。

2

常見的方式做這樣的事情是有一個劇本叫everything.m

% everything.m 
foo(); 

和一個文件要能夠使用每個功能:

% foo.m 
function foo() 
    ... 
end 

執行everything.m然後調用您想要調用的所有函數(以及您在此階段可能想要執行的任何其他任務)。具有Matlab路徑上的所有功能,意味着它們是「定義的」(可從Matlab命令提示符或其他函數內部訪問)。這是「Matlab的方式」 :)

注意,有可能有每個文件多個功能,

% bar.m 

function bar() 
    otherFunction(); % WORKS OK 
end 

function otherFunction() 
    ... 
end 

只有最上面的功能將在Matlab命令提示符下可見:

>> bar 
>> % no error 
>> 
>> otherFunction 
??? Undefined function or variable 'otherFunction'. 
相關問題