声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2307|回复: 7

[编程技巧] matlab求助:arrayfun函数inline type is not currently implemented.

[复制链接]
发表于 2008-9-23 10:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
  1. clear all
  2. syms s1 s2 zz lamda bata c a w;%variance and parameter
  3. z=50:300;
  4. k=2*pi/lamda;
  5. rho=(0.545*c^2*k^2*zz)^(3/5);
  6. f1=k^2/(zz^2)*s1*s2;
  7. f2=exp(j*k/(2*zz)*(s1^2-s2^2))*exp(-1/rho^2*(s1^2+s2^2))*besseli(0,2*s1*s2/rho^2);
  8. f3=besselj(0,bata*s1)*besselj(0,bata*s2);
  9. f4=exp(-(s1-a)^2/w^2)*exp(-(s2-a)^2/w^2);
  10. f=f1*f2*f3*f4;%integrand
  11. f=subs(f,{lamda,bata,c,a,w},{1550*10^-9,300,10^-14,0.03,0.03});
  12. fstr=char(vectorize(inline(f)));% character string
  13. fstr=sprintf('dblquad(inline(%s),0.03,1,0.03,1)',fstr);
  14. fun=inline(fstr,'s1','s2','zz');
  15. Z=arrayfun(@(zz)fun,z);
  16. plot(z,abs(Z))
复制代码


  1. 下面是出现的问题:

  2. ??? Error using ==> arrayfun
  3. inline type is not currently implemented.

  4. Error in ==> axialintensity at 16
  5. Z=arrayfun(@(zz)fun,z);
复制代码
恳请指教,谢谢!

[ 本帖最后由 sigma665 于 2008-9-23 10:54 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-9-23 10:53 | 显示全部楼层
doc arrayfun
看看其用法
发表于 2008-9-24 09:01 | 显示全部楼层
看了半天,不会
发表于 2008-9-24 11:23 | 显示全部楼层
不是arrayfun的问题。而是你的这个inline函数fun本身构造的就不对。
 楼主| 发表于 2008-9-24 15:19 | 显示全部楼层

回复 板凳 sigma665 的帖子

clear all
syms s1 s2 zz lamda bata c a w;%变量和参数
z=50:300;
k=2*pi/lamda;
rho=(0.545*c^2*k^2*zz)^(-3/5);
f1=k^2/(zz^2)*s1*s2;
f2=exp(j*k/(2*zz)*(s1^2-s2^2))*exp(-1/rho^2*(s1^2+s2^2))*besseli(0,2*s1*s2/rho^2);
f3=besselj(0,bata*s1)*besselj(0,bata*s2);
f4=exp(-(s1-a)^2/w^2)*exp(-(s2-a)^2/w^2);
f=f1*f2*f3*f4;%这是被积函数的符号表达式,当然可以换一个比较简单的函数。变量为是s1
s2  还有参数 zz,目的是对s1和s2积分,做出积分值与zz的曲线。


f=subs(f,{lamda,bata,c,a,w},{1550*10^-9,300,10^-14,0.03,0.03});% 代入参数值

fstr=char(vectorize(inline(f)));% 为了适用dblquad ,将被函数变为字符表达式
fstr=sprintf('dblquad(inline(%s),0.03,1,0.03,1)',fstr);  
fun=inline(fstr,'s1','s2','zz');
Z=arrayfun(@(zz)fun,z);
plot(z,abs(Z))

[ 本帖最后由 soberprogress 于 2008-9-24 15:25 编辑 ]
发表于 2010-12-12 22:46 | 显示全部楼层
本帖最后由 Happy99 于 2010-12-12 22:46 编辑
不清楚这个意思!?

"inline type is not currently implemented."的意思, 不是说arrayfun不适用inline type的型态?
发表于 2010-12-13 11:22 | 显示全部楼层
inline用的不对
这个应该可以用匿名函数来写的,对现在的版本来说,可以用quad2d来求积分
 楼主| 发表于 2010-12-29 22:03 | 显示全部楼层
thanks!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-21 16:37 , Processed in 0.056182 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表