matlab eval用法:一般下指令时,通常以其指令名称及需要之参数在指令窗下或在档案中直接下,但有些时候我们希望指令也是一种变数的型式,使指令内容也能依档案之内容而变化。 換言之,先將指令化為文字串,但然依文字串之內容轉為指令去執行。换言之,先将指令化为文字串,但然依文字串之内容转为指令去执行。 MATLAB提供一個eval函數具有轉換的功能,其格式如下: MATLAB提供一个eval函数具有转换的功能,其格式如下:

eval(指令相關敘述) eval(指令相关叙述)

例如:以下面程式求某一連續正整數累進之總和例如:以下面程式求某一连续正整数累进之总和


% evalsum.m for demonstration % evalsum.m for demonstration
% Find the sum of cumulative sum(1:n) % Find the sum of cumulative sum(1:n)
tsum=zeros(1,10);xsum=0; tsum=zeros(1,10);xsum=0;
for i=1:10, for i=1:10,
xsum=xsum+eval(['sum(1:',int2str(i),')']); xsum=xsum+eval(['sum(1:',int2str(i),')']);
tsum(i)=xsum; tsum(i)=xsum;
end end
1:10 1:10
tsum tsum



執行後:执行后:


>> evalsum >> evalsum
ans = 1 2 3 4 5 6 7 8 9 10 ans = 1 2 3 4 5 6 7 8 9 10
tsum = 1 4 10 20 35 56 84 120 165 220 tsum = 1 4 10 20 35 56 84 120 165 220



式中之eval函數是將sum(1:1)、sum(1:2),…sum(1:10)逐一計算後累加。式中之eval函数是将sum(1:1)、sum(1:2),…sum(1:10)逐一计算后累加。 由於其中sum之參數逐一變化,故必須用數值改變為字串後(int2str),再用eval函數轉為指令執行之。由于其中sum之参数逐一变化,故必须用数值改变为字串后(int2str),再用eval函数转为指令执行之。