1. 程式人生 > >MATLAB中feval與eval的區別

MATLAB中feval與eval的區別

包含 express bsp val atl 處理 expr 如果 hand

feval函數有兩種調用形式
1、[y1, y2, ...] = feval(fhandle, x1, ..., xn)
2、[y1, y2, ...] = feval(fname, x1, ..., xn)
形式1中fhandle為函數的句柄,形式2中fname為函數名,“x1, ..., xn”為對應函數的參數,“y1, y2, ...”為函數的返回值
如要計算sin(2),當然可以直接用命令y=sin(2);
利用feval,可以這麽做:
1) 句柄形式如下:
>> [email protected];
>> y=feval(h,2);
(也可以直接寫成y=feval(@sin,2);
2) 函數名形式:
>> y=feval(‘sin‘,2);

eval函數的功能是將字符串轉換為matlab可執行語句。
[output1,...,outputN] = eval(expression)
expression為包含matlab有效表達式的字符串,“output1,...,outputN”為對應表達式的返回值。
如輸入
>> a=‘b=magic(4)‘;
>> eval(a)
b =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1

也就是說,執行eval(a)相當於執行b=magic(4)。

eval還廣泛用於人機交互,因為matlab的gui中,get命令得到的str格式的字符串,通常,會通過str2num將字符串轉換為數字,供後續處理。而如果讀入的str字符串是cos,sin之類的指令,那麽就需要結合eval函數,將字符串轉換為指令。

MATLAB中feval與eval的區別