關於部落格
  • 122904

    累積人氣

  • 31

    今日人氣

    0

    追蹤人氣

FUNCTION - 函數與子函數

1. function <function_name>

範例:
function aaa01
a=1
b=2
a+b


執行結果

2. function <function_name>(<vars>)

範例:
function aaa02(a,b)
a+b

執行結果

3. function <out> = <function_name>(<vars>)

範例:
function out=aaa03(a,b)
out=a+b;

執行結果


我把不設 function 的 M檔案稱為"命令稿".
基本上功能與不設函數形式的命令稿功能一樣, 純粹執行該命令稿中的指令. 不過他與命令稿最大的不同點在於, 函數內部的變數與外部的變數無關.

4.子函數
函數之中是還可以有函數的, 稱之為subfunction(子函數). 使用方式是將子函數的敘述接在函數後面.

範例:
function aaa_s
a=1;
b=2;
c=3;
y=f(a,b);
disp(y+c);

function y=f(a,b)
y=a+b;

執行結果
上面做了一件事情, 就是計算 a+b+c. f 是一個把兩個變數相加的函數並用 y 回傳函數值. 最後主函數 aaa_s 用 disp 印出 y+c 的數值. 此外, 函數中的子函數是不能再外部使用的. 以這個範例而言, 你在命令列打上 f(1,2) 是沒有作用的. 子函數只能讓他所在的主函數使用.

5.單行輸入-INLINE

Method:
inline(方程式,變數1, 變數2, ...)

特點:
這個函數形式可以作為變數直接帶入程式中. 在M檔案形式的函數中不需要使用指定算子, @, 也不需要使用 feval 來取得函數運算值.

Example: 將 g 設為函數 g(t)=t^2

g=inline('t^2','t');

測試:將 2 帶入看看
結果的確是 2^2=4. 若希望 g 可以對陣列做個別運算, 一樣要照以下方式做.

g=inline('t.^2','t'); %注意有個點

測試:將 [ 2 3 ] 帶入
繪圖:

1.用 plot 函數測試, 詳細使用方式參閱: PLOT-二維線圖, 連結
前提要先把 g 作成可對陣列做個別運算比較方便.

X=-1:0.1:1; %將 X 設為 -1 到 1 等差為 0.1 陣列
plot(X,g(X));

2.用 fplot 測試, 詳細使用方式參閱: FPLOT繪圖, 連結

fplot(g,[-1 1]);

*.練習
1. 請用函數完成以下作業, 其中有一個主函數與個子函數
*. 主函數必須有輸出
*. 主函數內容:
--當輸入變數為 1, 畫出 f 在 [-1,1] 上圖形並輸出 f(0.5)
--當輸入變數為 2, 畫出 f+g 在 [-1,1] 上圖形並輸出 f(0.25)+g(0.75)
--當輸入變數為 3, 畫出 f*g 在 [-1,1] 上圖形並輸出 0
其中


See also: plot, fplot, m-file
相簿設定
標籤設定
相簿狀態