2017-07-07 88 views
0

從我對matlab的理解中,如果你想定義一個函數並在你的「主文件」中使用它,你需要將函數寫入一個單獨的文件中並調用它在你的「主文件」的開頭用addpath('...\myfunction.m')在一個單獨的函數文件中調用一個函數-matlab

現在讓我們假設我在一個文件f1.m,我在main.m使用定義一個函數f1,如果我要定義一個函數f2(在另一個文件),需要調用f1,可我在f2.m文件中使用addpath()...\f1.m?或者在f2中撥打f1的最佳方式是什麼?

回答

0

您應該創建一個在開始時運行的startup.m文件。位於您當前的目錄中。這應該包括你需要添加的所有路徑。

所以,你的M檔看起來像:

startup 
f1 
f2 
0

做到這一點的最好辦法是具有相同的文件夾功能,或者需要通過文件夾來添加文件夾。 因此,如果您將f1.m,f2.m,f3.m置於不同的文件夾,則必須爲每個功能調用addpath。 如果你有一個文件夾「myfunctions」,所有你需要做的是addpath('...\myfunctions\')

如果你有一個文件夾命名爲「myfunctions」與你同一個文件夾的主要腳本的功能,你只需要將該文件夾添加到路徑。 例如

%Main script 
addpath('myfunctions') 
x = -0.5 + rand(100,1); 
y = -0.5 + rand(100,1); 
[a,b] = f1(x,y); 

裏面 'myfunctions' 你有f1f2

function [a,b] = f1(x,y) 
a = x + y; 
b = f2(a); 
end 

_

function b = f2(inp) 
b = inp<0; 
end 

你不能用一個文件中使用addpath,它必須是一個文件夾

+0

當我這樣做時,我得到一個語法錯誤,告訴:函數名f1被MATLAB知道其文件名:'myfunctions' – Arthurim

0

將所有文件保存在matlab打開的文件夾中ed,而且你不需要加入路徑來明確告訴matlab在被告目錄中搜索文件

相關問題