设计教室
设计欣赏|图形图像|媒体动画|机械电子|CI设计|设计文献|PhotoShop|Corel3Dmax|Flash|AutoCad|设计视频
首页 > 设计教室 > 机械电子 > MATLAB > 正文

Matlab 串演算函数


8.6 串演算函数
8.6.1 eval

【 * 例 8.6.1 -1 】计算“表达式”串,产生向量值。
clear,t=pi;cem='[t/2,t*2,sin(t)]';y=eval(cem)
y =
1.5708 6.2832 0.0000

【 * 例 8.6.1 -2 】计算“语句”串,创建变量。
clear,t=pi;eval('theta=t/2,y=sin(theta)');who
theta =
1.5708
y =
1
Your variables are:
t theta y

【 * 例 8.6.1 -3 】计算“替代”串。
A=ones(2,1);B=ones(1,3);c=eval('B*A','A*B'),errmessage=lasterr
c =
1 1 1
1 1 1
errmessage =
Error using ==> *
Inner matrix dimensions must agree.

【 * 例 8.6.1 -4 】计算“合成”串。
CEM={'cos','sin','tan'};
for k=1:3
theta=pi*k/12;
y(1,k)=eval([CEM{1},'(',num2str(theta),')']);
end
y
y =
0.9659 0.8660 0.7071


8.6.2 feval

【例 8.6.2 -1 】 feval 和 eval 运行区别之一: feval 的 FN 绝对不能是表达式。
x=pi/4;Ve=eval('1+sin(x)')
Ve =
1.7071

Vf=feval('1+sin(x)',x)
??? Cannot find function '1+sin(x)'.

【 * 例 8.6.2 -2 】 feval 和 eval 调用区别: feval 的 FN 只接受函数名。本例两种方法以后者为好。
randn('seed',1);A=rand(2,2);
[ue,de,ve]=eval('svd(A)');
disp('Results by eval');disp([ue,de,ve]);disp(blanks(1))
[uf,df,vf]=feval('svd',A);
disp('Results by feval');disp([uf,df,vf])
Results by eval
0.6180 0.7862 0.5516 0 0.4616 0.8871
0.7862 -0.6180 0 0.3038 0.8871 -0.4616
Results by feval
0.6180 0.7862 0.5516 0 0.4616 0.8871
0.7862 -0.6180 0 0.3038 0.8871 -0.4616


8.6.3 内联函数
8.6.3.3 内联函数创建和应用示例

【 * 例 8.6.3 .3-1 】演示:内联函数的第一种创建格式;使内联函数适于“数组运算”。
clear,F1=inline('sin(rho)/rho') % 第一种格式创建内联函数
F1 =
Inline function:
F1(rho) = sin(rho)/rho
f1=F1(2) % 内联函数的一种使用方法
f1 =
0.4546

FF1=vectorize(F1) % 产生适于“数组运算”的内联函数
xx=[0.5,1,1.5,2];ff1=FF1(xx)
FF1 =
Inline function:
FF1(rho) = sin(rho)./rho
ff1 =
0.9589 0.8415 0.6650 0.4546

【 * 例 8.6.3 .3-2 】演示:第一种内联函数创建格式的缺陷;含向量的多宗量输入的赋值。
G1=inline('a*exp(x(1))*cos(x(2))'),G1(2,[-1,pi/3])
G1 =
Inline function:
G1(a) = a*exp(x(1))*cos(x(2))
??? Error using ==> inline/subsref
Too many inputs to inline function

上一篇: MATLAB教程: 多项式的表达方式及其操作
下一篇:Matlab 可视化数学分析界面

评论  点击查看
 
设计频道推荐
设计热点文章