函式控制代碼在matlab使用過程中經常涉及到, 個人小小的彙總一下,有不足和錯誤之處還望大家多多包涵和指點補充
函式控制代碼的定義具體參見官方文件這裡就不多加敘述了
很多matlab內建函式使用時都需要涉及到函式控制代碼,像integral,fzero,fsolve等函式,這裡以integral為例
個人目前掌握的建立主要三種方式
一、使用function函式建立自定義函式,在指令碼檔案使用@呼叫
例:
s=integral(@(x)fun(x),0,2)
function y=fun(x)
y=x.^2;
end
可得
s =2.6667
二、使用@匿名函式
例
fun=@(x) x.^2;
s=integral(fun,0,2)
可得
s =2.6667
三、使用syms(定義變數)和matlabfunction()將syms變數轉換為函式控制代碼)兩個函式結合使用
例
syms x
y=x^2;
fun=matlabfunction(y);
s=integral(fun,0,2)
可得
s =2.6667
以上三種方法在求解的函式相對簡單時可以互換,即如以上三個例子均是求x平方在0到2上的積分,但有時最好採用其中一種方法
一、當有其他引數需要輸入時,最好使用第一種方法
例
i=1;
s=zeros(1,4);
for a=1:2:7
s(i)=integral(@(x)fun(x,a),0,2);
i=i+1;
endfunction y=fun(x,a)
y=x.^2+a;
end
即可求得一組積分結果
s =4.6667 8.6667 12.6667 16.6667
二、當需要函式內部需要先運算時,
例,需要先運算向量a與其轉置相乘
syms x
a=[1,x,x^2];
y=a*a';
fun=matlabfunction(y);
s=integral(fun,0,2)
可得
s =11.0667
此時若使用前兩種方法,則因integral的求解方法先給x賦值,再運算,可能出現未定義與函式控制代碼型別相對應的運算』運算維度不符等問題
Matlab中的函式控制代碼
本系列文章由 yhl leo 是matlab中的控制代碼函式的標誌符,即間接的函式呼叫方法。主要有兩種語法 handle functionname 返回乙個特別的matlab函式控制代碼,它提供了一種間接訪問函式的方式,也被成為函式的函式 function functions 是一種標準的matla...
MATLAB函式控制代碼 單元陣列和結構
函式控制代碼 單元陣列和結構 函式控制代碼 包含有引用函式時所有的資訊,優點 將函式控制代碼作為呼叫中的參量傳遞到另乙個函式 可以儲存到資料結構或檔案中 函式控制代碼運算子 有兩種函式控制代碼 1 命名函式控制代碼 建立例如 f sin 呼叫例如 f pi 4 或者 sin pi 4 2 匿名函式控...
matlab學習筆記13 3建立函式控制代碼
參考文獻 可以為已命名函式和匿名函式建立函式控制代碼。可以將多個函式控制代碼儲存在陣列中,儲存並載入它們,方法與對任何其他變數一樣。函式控制代碼是一種儲存指向函式的關聯關係的 matlab 資料型別。間接呼叫函式使在呼叫該函式時無需考慮呼叫位置。函式控制代碼的典型用法包括 將乙個函式傳遞到另乙個函式...