声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2117|回复: 10

[编程技巧] One or more output arguments not assigned during call to *** 出错求助

[复制链接]
发表于 2008-3-2 09:25 | 显示全部楼层 |阅读模式

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

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

x
我这个程序到底错在哪里,好几天了就是改不好:@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 编辑 ]

求C.doc

27.5 KB, 下载次数: 6

更详细的介绍

回复
分享到:

使用道具 举报

发表于 2008-3-2 10:01 | 显示全部楼层
原帖由 aprildays 于 2008-3-2 09:25 发表
我这个程序到底错在哪里,好几天了就是改不好:@Q,谁能帮我看看,我将感激不尽啊

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

Matlab程序
M文件 shuzhijifen.m
function y=shuzhijifen(z)
f ...

请到置顶帖中找答案(热点话题讨论贴中有个常见错误整理贴)

另外,发帖前,请认认真真阅读一遍所有的置顶帖
发表于 2008-3-2 10:55 | 显示全部楼层

回复 楼主 的帖子

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

一个m文件里不好这样写
发表于 2008-3-2 11:03 | 显示全部楼层
原帖由 sigma665 于 2008-3-2 10:55 发表
function y=shuzhijifen(z)
function f=f(r)

一个m文件里不好这样写

嗯,估计贴错了,第二行应该是多余的吧
 楼主| 发表于 2008-3-2 11:53 | 显示全部楼层

回复 3楼 的帖子

那如何写啊,帮忙指正,谢谢
 楼主| 发表于 2008-3-2 11:54 | 显示全部楼层

回复 2楼 的帖子

我的权限看不了那个帖子啊,郁闷
发表于 2008-3-2 11:57 | 显示全部楼层

回复 5楼 的帖子

function y=shuzhijifen(z r)
发表于 2008-3-2 11:59 | 显示全部楼层
原帖由 aprildays 于 2008-3-2 11:54 发表
我的权限看不了那个帖子啊,郁闷

权限问题看 Matlab学习(发贴)方法(经验)贴索引  3楼。建议多看看置顶的会员守则。置顶区的帖子,能看到的先看,你就会发现不能看的帖子如何看了

[ 本帖最后由 eight 于 2008-3-2 12:01 编辑 ]
发表于 2008-3-2 12:24 | 显示全部楼层
  1. function y=shuzhijifen(z)
  2. function f=f(r)
  3. ua=0.003;
  4. us=2;
  5. g=0.68;
  6. uss=us.*(1-g);
  7. z0=1./(ua+uss);
  8. Reff=0.493;
  9. D=1./(3*(ua+uss));
  10. zb=2.*D.*(1+Reff)./(1-Reff);
  11. ueff=(3.*ua.*(ua+uss)).*0.5;
  12. r1=((z-z0).^2+r.^2).^0.5;
  13. r2=((z+z0+2.*zb).^2+r.^2).^0.5;
  14. utt=ua+(1-g).*us;
  15. r22=5.5;
  16. R=2;
  17. I0=exp(-2*(r22.^2+r.^2)./R.^2+4.*r.*r22/R.^2).*besseli(0,4.*r.*r22/R.^2);
  18. 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));
  19. f=Idz.*I0.*2.*3.14.*r;
  20. end
  21. y=quadl(@f,3.5,5.5);
  22. 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 编辑 ]
untitled.jpg
 楼主| 发表于 2008-3-2 12:28 | 显示全部楼层
非常感谢啊,我换个版本试试
发表于 2008-3-2 12:52 | 显示全部楼层
原帖由 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= ...


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

另外,估计运行一次是不会有问题的,楼主出现的错误是多次运行造成的,我在常见错误整理贴那里专门介绍了这个错误的
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-18 10:44 , Processed in 0.074381 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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