发布企业信息

Matlab 串演算函数

作者:未知  信息来源:未知  2006-1-26

字体大小:  网友评论  进入论坛  

6 串演算函数8。1 eval【 * 例 8。cem=‘[t/2,t*2,sin(t)]‘。y=eval(cem)y =1。...


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.

G2=inline('a*exp(x(1))*cos(x(2))','a','x'),G2(2,[-1,pi/3])
G2 =
Inline function:
G2(a,x) = a*exp(x(1))*cos(x(2))
ans =
0.3679

【 * 例 8.6.3 .3-3 】演示:产生向量输入、向量输出的内联函数;这种向量函数的调用方法。
Y2=inline('[x(1)^2;3*x(1)*sin(x(2))]')
argnames(Y2) % 观察内联函数的输入宗量
Y2 =
Inline function:
Y2(x) = [x(1)^2;3*x(1)*sin(x(2))]
ans =
'x'
x=[4,pi/6]; % 向量输入的赋值
y2=Y2(x) % 获得向量输出
y2 =
16.0000
6.0000

【 * 例 8.6.3 .3-4 】演示:最简练格式创建内联函数;内联函数可被 feval 指令调用。
Z2=inline('P1*x*sin(x^2+P2)',2) % 必须是大写字母 P
Z2 =
Inline function:
Z2(x,P1,P2) = P1*x*sin(x^2+P2)
z2=Z2(2,2,3) % 直接计算内联函数
fz2=feval(Z2,2,2,3) % 注意:这里,应写 Z2 ,不能写成 'Z2' 。
z2 =
2.6279
fz2 =
2.6279

分页:
Google


推荐图文

广告

机械热点图文

  • 数控车床加工编程典型实例分析2
  • 内螺纹车削加工——数控车床编程实例42
  • 子程序编程方法-数控车床编程实例36
  • 塑料模具动画演示

机械风云人物

Copyright © 2004 51base.com Inc. All rights reserved.

无忧基地 版权所有│粤ICP备06098418号│XHTML | CSS

客服:+86-755-2212 2202 工作时间:周1~5 10点~16点

感谢中国网络提供带宽支持

《网络营销技巧》