yangyibo7941 发表于 2007-5-10 15:35

求助Too many output arguments

我编程序
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

xjzuo 发表于 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要先赋值.

yangyibo7941 发表于 2007-5-10 16:12

我的epsilon是在另一个M文件里通过计算得到的,我是想通过调用它来实现,可是调不出来

xjzuo 发表于 2007-5-10 16:17

贴出来.
问题一定要先讲完整.

yangyibo7941 发表于 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

yangyibo7941 发表于 2007-5-10 16:49

为什么我上面的两个程序分着都能运行计算结果,放在一起却出错,怎么调用,谁能帮忙指点一下么,非常感谢

yangyibo7941 发表于 2007-5-10 16:51

怎么把第二个程序的计算结果让第一个程序调用出来,因为第二个程序的计算结果是随temp1的变化而变化的

eight 发表于 2007-5-10 17:13

原帖由 yangyibo7941 于 2007-5-10 16:23 发表 http://forum.vibunion.com/forum/images/common/back.gif
下面是我的epsilon的求解过程,按照书上的说法把这个程序所在的M文件放到private文件夹下了,想通过上面的程序把下面这个程序调用出来最终计算出temp2,可是不知道怎么调用
function epsilon(temp1)
C=0.53;...


function 要设置返回值,建议写成 function epsilon = myEpsilon(temp1)

yangyibo7941 发表于 2007-5-10 17:18

不太明白,为什么要设置返回值?按照您所说的改了一下,还是不能调用,咋回事?

xjzuo 发表于 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
%%%==================================================%%%

yangyibo7941 发表于 2007-5-14 15:36

回复 #11 xjzuo 的帖子

按您说的,弄了,可是调用的时候还是老提示被调用的函数中所求的结果未定义啊,

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)/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)


怎么回事?谁帮忙指点一下,不胜感激啊

eight 发表于 2007-5-14 15:55

原帖由 yangyibo7941 于 2007-5-14 15:40 发表 http://www.chinavib.com/forum/images/common/back.gif
我的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 基础书,理解 函数及其输入输出参数 等问题

yangyibo7941 发表于 2007-5-14 16:13

好的,谢谢高手指点,我是新手刚学matlab,以后还请多帮助!

yangyibo7941 发表于 2007-5-15 16:10

在子程序里算出的结果怎么在命令窗口中赋给新的变量并进行计算啊
页: [1] 2
查看完整版本: 求助Too many output arguments