我有我的代碼的matlab文件,我想在這個文件中定義一個新的函數,我不想爲這個函數添加新文件,因爲這個文件是我的代碼, Webots中的控制代理和控制器文件必須是單個文件。 函數必須先定義文件中的第一個代碼或最後一個代碼或...?在matlab中定義函數而不使用新函數
回答
如果你的功能是非常小的,你可以將其定義爲anonymous function
或內聯函數也可能工作... – bla 2013-02-28 08:41:25
不,我的功能不是很小 – 2013-02-28 08:41:36
我想使用eval是你的情況的解決方案
把你的功能在一個字符串變量。
% script
subfun = 'do something with input parameter param, and assign to output variable'
param = xxx;
output = 0;
eval(subfun);
% Then access the output here
下面是一個例子
% Script
subfun = 'output=param^2;output=output^2;'
param = 5;
output = 0;
eval(subfun);
disp(output);
我不要以爲這是一個非常好的建議,根據問題和評論來看,這是一個初學Matlab的人。'eval'有它的地方,但那個地方不是試圖編寫包含本地函數定義的腳本文件。按照@ H.Muster的評論的主旨,OP會更好。 – 2013-02-28 10:05:46
@HighPerformanceMark如果所需的功能非常大,並且需要多行,即使使用匿名函數,也需要eval的幫助。據我所知,matlab沒有lambda。甚至內聯函數只是eval的一個包裝。 – 2013-02-28 10:54:55
不能定義腳本中的一個函數,但你可以定義一個函數m文件中的局部功能......因此,假設你的腳本看起來是這樣的:
blah blah %// This is your main code
%// Here you want to add another function, for example:
function y = foo(x)
y = x + 2;
如果你試圖做的是如上圖所示,你會得到以下錯誤:
Function definitions are not permitted at the prompt or in scripts.
但是,如果簡單地改變你的主要腳本轉換功能,你就可以定義局部函數:
function mainfunc %// Main function name to your choosing
blah blah %// This is your main code
function y = foo(x)
y = x + 2;
因爲你mainfunc
不接受也不返回任何參數,可以像普通的腳本一樣運行它。另外請注意,建議主函數和m文件共享相同的名稱。
編輯:Shai在評論中提到,儘管這裏有一個警告:雖然腳本可以訪問主工作區中的變量,但函數有自己的範圍。記住這一點。儘管如此,仍然可以使用命令load
,save
,evalin
和assignin
命令來操作工作空間變量。
- 1. MATLAB回調函數:未定義函數?
- 2. 在MATLAB中創建自定義函數
- 3. Matlab`localfunctions`函數未定義
- 4. matlab函數變量定義
- 5. JavaScript - 定義函數而不調用它?
- 6. Matlab - 用戶定義的函數作爲函數的參數
- 7. 重新定義的函數,而另一個函數
- 8. 如何在CoffeeScript中新定義的函數上調用函數
- 9. 如何使用我定義的新函數中定義的函數?
- 10. 在MATLAB中查找特徵值而不使用eig函數
- 11. R中的函數(x):寫一個「函數」而不定義一個函數?
- 12. matlab函數定義中的錯誤
- 13. 在Matlab中使用自定義'FileName'發佈函數
- 14. 使用DEC2BIN()函數在MATLAB
- 15. 如何在用戶定義函數中使用AQL函數?
- 16. 在函數中使用函數「誰」在MATLAB中
- 17. ReferenceError:即使定義了函數,也不定義函數
- 18. 輸入參數未定義 - MATLAB函數/子函數
- 19. 定義函數名稱而不是lambda
- 20. PHP定義函數而不執行
- 21. 自定義函數在R'ddply'函數中不起作用
- 22. 使用定義的函數而不是匿名函數作爲回調
- 23. 如何在VBA中定義的自定義函數中使用excel函數?
- 24. 在matlab中調用函數
- 25. 在matlab中調用函數
- 26. 在Matlab中使用不同數量的參數調用函數
- 27. 在自定義函數中使用data.frame?
- 28. 使用string.replace在類中定義函數
- 29. 在自定義函數中使用set_index
- 30. 在assetmanager中使用自定義函數
該文件是腳本還是函數? – 2013-02-28 08:30:47
見http://www.mathworks.de/de/help/matlab/matlab_prog/local-functions.html – 2013-02-28 08:31:05
這個文件是一個腳本文件 – 2013-02-28 08:31:29