声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 9349|回复: 21

[编程技巧] 求助Too many output arguments

[复制链接]
发表于 2007-5-10 15:35 | 显示全部楼层 |阅读模式

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

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

x
我编程序
function temp2(temp1)
temp1=1250
a=1/((temp1+273)^3)
l=11.52             %定宽压力机前辊道长度,单位m
v=2                 %辊道上速度,单位m/s
h=0.23469
delta_t=l/(v*3600)
b=(delta_t)/h
temp2=1/((a+epsilon*b)^(1/3))-273
运行出现下面的情况,什么意思?
??? Error using ==> epsilon
Too many output arguments.

Error in ==> temp2 at 10
temp2=1/((a+epsilon*b)^(1/3))-273
Error in ==> mingling1 at 3
temp2
回复
分享到:

使用道具 举报

发表于 2007-5-10 16:09 | 显示全部楼层
%%% 修改:
function temp2
temp1=1250
a=1/((temp1+273)^3)
l=11.52             %定宽压力机前辊道长度,单位m
v=2                 %辊道上速度,单位m/s
h=0.23469
delta_t=l/(v*3600)
b=(delta_t)/h
temp2=1/((a+epsilon*b)^(1/3))-273
%%%%%%%%%%%%%%%%%%%
另:你的epsilon要先赋值.

评分

1

查看全部评分

 楼主| 发表于 2007-5-10 16:12 | 显示全部楼层
我的epsilon是在另一个M文件里通过计算得到的,我是想通过调用它来实现,可是调不出来
发表于 2007-5-10 16:17 | 显示全部楼层
贴出来.
问题一定要先讲完整.
 楼主| 发表于 2007-5-10 16:23 | 显示全部楼层
下面是我的epsilon的求解过程,按照书上的说法把这个程序所在的M文件放到private文件夹下了,想通过上面的程序把下面这个程序调用出来最终计算出temp2,可是不知道怎么调用
function epsilon(temp1)
C=0.53;        %单位为kJ/(kg*K)
sigma=20.496;
gamma=7.84*10^3;
epsilon1=(temp1-273)*(0.125*(temp1-273)/1000-0.38)/1000+1.1;    %求辐射率epsilon1
epsilon=(6*epsilon1*sigma)/(10^8*gamma*C)      %求综合辐射系数epsilon
 楼主| 发表于 2007-5-10 16:49 | 显示全部楼层
为什么我上面的两个程序分着都能运行计算结果,放在一起却出错,怎么调用,谁能帮忙指点一下么,非常感谢
 楼主| 发表于 2007-5-10 16:51 | 显示全部楼层
怎么把第二个程序的计算结果让第一个程序调用出来,因为第二个程序的计算结果是随temp1的变化而变化的
发表于 2007-5-10 17:13 | 显示全部楼层
原帖由 yangyibo7941 于 2007-5-10 16:23 发表
下面是我的epsilon的求解过程,按照书上的说法把这个程序所在的M文件放到private文件夹下了,想通过上面的程序把下面这个程序调用出来最终计算出temp2,可是不知道怎么调用
function epsilon(temp1)
C=0.53;  ...



function 要设置返回值,建议写成 function epsilon = myEpsilon(temp1)
 楼主| 发表于 2007-5-10 17:18 | 显示全部楼层
不太明白,为什么要设置返回值?按照您所说的改了一下,还是不能调用,咋回事?
发表于 2007-5-10 23:56 | 显示全部楼层
你的这个程序有很多种修改方法, 我随便举一种吧:
---------存为 mytemp2.m,调用即可.
另: 你可能需要多看看基本的编程技巧,希望以后这种问题能自己解决.
%%%=====================================%%%
function mytemp2
temp1=1250;
a=1/((temp1+273)^3);
l=11.52;             %定宽压力机前辊道长度,单位m
v=2;                 %辊道上速度,单位m/s
h=0.23469;
delta_t=l/(v*3600);
b=(delta_t)/h;
temp2=1/((a+epsilon*b)^(1/3))-273
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y=epsilon()
temp1=1250;
C=0.53;        %单位为kJ/(kg*K)
sigma=20.496;
gamma=7.84*10^3;
epsilon1=(temp1-273)*(0.125*(temp1-273)/1000-0.38)/1000+1.1; %求辐射率epsilon1
y=(6*epsilon1*sigma)/(10^8*gamma*C); %求综合辐射系数epsilon
%%%==================================================%%%

评分

1

查看全部评分

 楼主| 发表于 2007-5-14 15:36 | 显示全部楼层

回复 #11 xjzuo 的帖子

按您说的,弄了,可是调用的时候还是老提示被调用的函数中所求的结果未定义啊,
 楼主| 发表于 2007-5-14 15:40 | 显示全部楼层
我的m文件
%该程序用来求解综合辐射系数epsilon
function myepsilon
temp1=1250;
C=0.53;        %单位为kJ/(kg*K)
sigma=20.496;
gamma=7.84*10^3;
epsilon1=(temp1-273)*(0.125*(temp1-273)/1000-0.38)/1000+1.1;    %求辐射率epsilon1
y=(6*epsilon1*sigma)/(10^8*gamma*C)      %求综合辐射系数epsilon


%该程序用于求解定宽压力机前测温仪处的温度
function temp2(y)
temp1=1250;
a=1/((temp1+273)^3);
l=11.52;             %定宽压力机前辊道长度,单位m
v=2;                 %辊道上速度,单位m/s
h=0.23469;
delta_t=l/(v*3600)
b=(delta_t)/h
temp2=1/((a+y*b)^(1/3))-273;
temp2



下面是脚本文件的内容,用来调用上面两个m文件
%该程序是一个命令文件,用来求解温度
epsilon
temp2(y)


运行后出现如下结果

>> mingling1

y =

  2.5099e-010

??? Undefined function or variable "y".

Error in ==> mingling1 at 3
temp2(y)


怎么回事?谁帮忙指点一下,不胜感激啊
发表于 2007-5-14 15:55 | 显示全部楼层
原帖由 yangyibo7941 于 2007-5-14 15:40 发表
我的m文件
%该程序用来求解综合辐射系数epsilon
function myepsilon
temp1=1250;
C=0.53;        %单位为kJ/(kg*K)
sigma=20.496;
gamma=7.84*10^3;
epsilon1=(temp1-273)*(0.125*(temp1-273)/1000-0.38 ...


1. function y = myepsilon
2. 函数名和变量名不要设成一样
3. 脚本文件:y = myepsilon;
                   temp2(y)

建议多看看 置顶贴:聚宝盆 中提到的精华贴 和 matlab 基础书,理解 函数及其输入输出参数 等问题

评分

1

查看全部评分

 楼主| 发表于 2007-5-14 16:13 | 显示全部楼层
好的,谢谢高手指点,我是新手刚学matlab,以后还请多帮助!
 楼主| 发表于 2007-5-15 16:10 | 显示全部楼层
在子程序里算出的结果怎么在命令窗口中赋给新的变量并进行计算啊
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-17 11:00 , Processed in 0.070871 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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