簡體   English   中英

Matlab / Octave - 開始使用函數時遇到麻煩,是否有一個函數main等價?

[英]Matlab / Octave - trouble getting started with functions, is there a function main equivalent?

我正在嘗試開始使用Matlab / Octave,並且很難確定如何將程序組織成函數。 目前我正在嘗試編寫一個簡單的程序,將兩個數字相加並顯示結果,並通過函數完成添加。 我本以為這會起作用:

% test.m

close all;
clear all;

num1 = 2;
num2 = 2;

result = myAdd(num1, num2);

disp(result);          % this should display 4 ??

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function retval = myAdd(var1, var2)
  retval = var1 + var2;
end

使用Octave 4.0.0運行上面的代碼,我收到以下錯誤:

error: 'myAdd' undefined near line 7 column 10
error: called from
    test at line 7 column 8

我已嘗試將函數放在第一位,將測試部分放在第二位,並將函數放在一個單獨的文件中,並在同一目錄中調用my.dd函數的main.m文件,都會導致錯誤。

所以這是我的問題:

- Matlab / Octave有一個主要的等價?

- 口譯人員如何知道從哪里開始? 它是否會自動轉到程序的第一行,或者是否有某個函數名稱可以用來啟動該函數,因為函數main()在C / C ++中?

- 在一個規模很大的Python程序中,我通常的做法是按如下方式組織事情:

# some_python_program.py

import abc
import xyz

###################################################################################################
def main():

    # stuff to get program started here

# end main

###################################################################################################
def function1():

    # specific function here

# end function

###################################################################################################
def function2():

    # specific function here

# end function

###################################################################################################
if __name__ == "__main__":
    main()

有沒有辦法在Matlab / Octave中做等效的?

如果有人可以提供一個關於主要等價物的方向和/或如何在Matlab / Octave中組織功能,請告知,謝謝。

如果你來自像python這樣的語言,Matlab / Octave可能會有點混亂。 為了定義一個函數(不使用匿名函數),您需要創建一個具有該函數名稱的單獨文件,然后可以使用命令行調用該文件。

例如,您想創建一個名為myadd的函數。 您應該創建一個名為myadd.m的文件,其內容將是:

function out = myadd(a,b)
    out = a+b;
end

然后,只要您的文件在您的路徑上(將其保存到MATLAB文件夾或將其放在當前工作目錄中),您可以從命令窗口調用它,如下所示:

>> myadd(5,6)

ans =

     11

每個文件(名稱與文件名匹配的文件)只能公開使用一個函數。 但是,如果您計划僅使用該函數,則仍可以為每個文件定義多個函數。 例如,如果您有一個名為foo.m的文件,則可以執行以下操作:

function out = foo(a,b)
    out = fun(a,b);
end

function out = fun(a,b)
    out = a * b;
end

這將允許您從命令窗口調用foo(5,6) ,但fun(5,6)將導致錯誤: Undefined function or variable 'fun'

閱讀有關本地函數嵌套函數的更多信息。

希望這有用!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM