2011-03-22 99 views
3

可能重複:
In MATLAB, can I have a script and a function definition in the same file?MATLAB腳本代碼和函數代碼在同一個文件中?

我可以在同一個文件MATLAB腳本代碼和功能碼?

%% SAVED IN FILE myfunc.m (otherwise fail) 
function [out1] = myfunc(x) 
out1 = sqrt(1 + (cos(x))^2); 
end 

%% 
%OTHER CRAP 
y = 1:10 
% use myfunc 

它似乎沒有工作,即使有end關鍵字那裏。這種類型的東西是否允許,或者我是否總是需要在其自己正確命名的文件中使用EACH功能?

我確定我看到幾年前在同一個文件中使用這些函數的函數和代碼。

+0

它不是一個重複的問題,這個問題會有所不同,實際上比我在這裏問的要多得多。 – bobobobo 2011-03-22 16:37:37

+0

雖然其他問題沒有被很好地編寫/格式化,但兩個問題都提出了相同的問題:如果可以在同一文件中組合腳本和函數定義。 – gnovice 2011-03-22 16:48:23

+0

是這麼近,一個不是這個 – bobobobo 2011-03-22 17:19:35

回答

9

如果m代碼中有一個函數,所有代碼都必須用函數封裝。 入口點函數的名稱應與文件名匹配。如果你仔細想想,這是有道理的,因爲它有利於代碼的重用。

你可以試試這個:

文件名:myScript.m

function [] = myScript() 
y = 1:10; 
out1 = myfunc(y); 
end 

function [out1] = myfunc(x) 
out1 = sqrt(1 + (cos(x))^2); 
end 

然後你就可以按下F5,或從MATLAB命令提示符下鍵入myScript的

+1

入口點函數_應該匹配文件名,但語言不強制執行它。如果不同,Matlab將使用文件名作爲函數的名稱,忽略「函數」行。這是mlint中的一個警告。 – 2011-03-22 18:09:58

+0

謝謝,我替換必須與應。 – rossb83 2011-03-22 20:11:59

3

rossb83's answer是正確的,只是要知道,你應該知道functions can have subfunctions

 
function sum = function myMath(a, b) 
    foo = a + b; 
    bar = mySubFunc(foo); 
end 

function bar = mySubFunc(foo) 
    bar = foo^2; 
end 
+0

存儲在'myMath.m'中。所以你說除了「主」功能以外的其他功能被認爲是子功能 – bobobobo 2011-03-22 17:23:28

相關問題