aprildays 发表于 2008-3-2 09:25

One or more output arguments not assigned during call to *** 出错求助

我这个程序到底错在哪里,好几天了就是改不好:@Q,谁能帮我看看,我将感激不尽啊

求C(r22,z)在r22=5.5 ,z=[0
25]内C(r22,z)的值,
画(z,C)的图

Matlab程序
M文件 shuzhijifen.m
function y=shuzhijifen(z)
function f=f(r)
ua=0.003;
us=2;
g=0.68;
uss=us.*(1-g);
z0=1./(ua+uss);
Reff=0.493;
D=1./(3*(ua+uss));
zb=2.*D.*(1+Reff)./(1-Reff);
ueff=(3.*ua.*(ua+uss)).*0.5;
r1=((z-z0).^2+r.^2).^0.5;
r2=((z+z0+2.*zb).^2+r.^2).^0.5;
utt=ua+(1-g).*us;
r22=5.5;
R=2;
I0=exp(-2*(r22.^2+r.^2)./R.^2+4.*r.*r22/R.^2).*BESSELI(0,4.*r.*r22/R.^2);
Idz=(1/((4*pi)*4*pi*D)).*((exp(-ueff*r1))./r1-(exp(-ueff.*r2))./r2)+(3/(4.*pi)).*(1./(3.*utt.*4.*pi.*D)).*((z-z0).*(ueff+r1.^-1).*(exp(-ueff.*r1))./(r1.^2)-(z+z0+zb).*(ueff+r2.^-1).*exp(-ueff.*r2)./(r2.^2));
f=Idz.*I0.*2.*3.14.*r;
end
y=quadl(@f,3.5,5.5)
end
保存后运行
clear all
kk=linspace(0,25);
y=zeros(size(kk));
for ii=1:length(kk)
y(ii)=shuzhijifen(kk(ii));
end
plot(kk,y)

运行结果
??? One or more output arguments not assigned during call to'shuzhijifen'.

Error in ==> J:\入射光束半径\test.m
On line 5
==>y(ii)=shuzhijifen(kk(ii));

[ 本帖最后由 eight 于 2008-3-2 10:01 编辑 ]

eight 发表于 2008-3-2 10:01

原帖由 aprildays 于 2008-3-2 09:25 发表 http://www.chinavib.com/forum/images/common/back.gif
我这个程序到底错在哪里,好几天了就是改不好:@Q,谁能帮我看看,我将感激不尽啊

求C(r22,z)在r22=5.5 ,z=[0
25]内C(r22,z)的值,
画(z,C)的图

Matlab程序
M文件 shuzhijifen.m
function y=shuzhijifen(z)
f ...
请到置顶帖中找答案(热点话题讨论贴中有个常见错误整理贴)

另外,发帖前,请认认真真阅读一遍所有的置顶帖

sigma665 发表于 2008-3-2 10:55

回复 楼主 的帖子

function y=shuzhijifen(z)
function f=f(r)

一个m文件里不好这样写

eight 发表于 2008-3-2 11:03

原帖由 sigma665 于 2008-3-2 10:55 发表 http://www.chinavib.com/forum/images/common/back.gif
function y=shuzhijifen(z)
function f=f(r)

一个m文件里不好这样写
嗯,估计贴错了,第二行应该是多余的吧

aprildays 发表于 2008-3-2 11:53

回复 3楼 的帖子

那如何写啊,帮忙指正,谢谢

aprildays 发表于 2008-3-2 11:54

回复 2楼 的帖子

我的权限看不了那个帖子啊,郁闷

sigma665 发表于 2008-3-2 11:57

回复 5楼 的帖子

function y=shuzhijifen(z r)

eight 发表于 2008-3-2 11:59

原帖由 aprildays 于 2008-3-2 11:54 发表 http://www.chinavib.com/forum/images/common/back.gif
我的权限看不了那个帖子啊,郁闷
权限问题看 Matlab学习(发贴)方法(经验)贴索引3楼。建议多看看置顶的会员守则。置顶区的帖子,能看到的先看,你就会发现不能看的帖子如何看了

[ 本帖最后由 eight 于 2008-3-2 12:01 编辑 ]

sigma665 发表于 2008-3-2 12:24

function y=shuzhijifen(z)
function f=f(r)
ua=0.003;
us=2;
g=0.68;
uss=us.*(1-g);
z0=1./(ua+uss);
Reff=0.493;
D=1./(3*(ua+uss));
zb=2.*D.*(1+Reff)./(1-Reff);
ueff=(3.*ua.*(ua+uss)).*0.5;
r1=((z-z0).^2+r.^2).^0.5;
r2=((z+z0+2.*zb).^2+r.^2).^0.5;
utt=ua+(1-g).*us;
r22=5.5;
R=2;
I0=exp(-2*(r22.^2+r.^2)./R.^2+4.*r.*r22/R.^2).*besseli(0,4.*r.*r22/R.^2);
Idz=(1/((4*pi)*4*pi*D)).*((exp(-ueff*r1))./r1-(exp(-ueff.*r2))./r2)+(3/(4.*pi)).*(1./(3.*utt.*4.*pi.*D)).*((z-z0).*(ueff+r1.^-1).*(exp(-ueff.*r1))./(r1.^2)-(z+z0+zb).*(ueff+r2.^-1).*exp(-ueff.*r2)./(r2.^2));
f=Idz.*I0.*2.*3.14.*r;
end
y=quadl(@f,3.5,5.5);
end>> clear all
kk=linspace(0,25);
y=zeros(size(kk));
for ii=1:length(kk)
y(ii)=shuzhijifen(kk(ii));
end
plot(kk,y)

可以运行,我的是2007b版本,没有错误


原来可以有2个function的,又学了点

[ 本帖最后由 sigma665 于 2008-3-2 12:27 编辑 ]

aprildays 发表于 2008-3-2 12:28

非常感谢啊,我换个版本试试

eight 发表于 2008-3-2 12:52

原帖由 sigma665 于 2008-3-2 12:24 发表 http://www.chinavib.com/forum/images/common/back.gif
function y=shuzhijifen(z)
function f=f(r)
ua=0.003;
us=2;
g=0.68;
uss=us.*(1-g);
z0=1./(ua+uss);
Reff=0.493;
D=1./(3*(ua+uss));
zb=2.*D.*(1+Reff)./(1-Reff);
ueff=(3.*ua.*(ua+uss)).*0.5;
r1= ...

两个function在同一个m文件中是没有问题的,不过楼主的写法有点问题,因为第一个function没有函数体

另外,估计运行一次是不会有问题的,楼主出现的错误是多次运行造成的,我在常见错误整理贴那里专门介绍了这个错误的
页: [1]
查看完整版本: One or more output arguments not assigned during call to *** 出错求助