Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matlab中输出过多的问题_Matlab - Fatal编程技术网

matlab中输出过多的问题

matlab中输出过多的问题,matlab,Matlab,我正在为辛普森规则编写一个Matlab程序,当程序到达left_simpson=simpson(a,c,(e1)/2,level,level_max)时,我不断得到一个关于许多输出的错误设置tinfleft_simpson到simpson(a,c,(e1)/2,电平,电平最大值)有什么问题 函数辛普森(a、b、e1、电平、电平最大值) 级别=级别+1; h=b-a; c=(a+b)/2; 一个辛普森=h*(f(a)+4*f(c)+f(b))/6; d=(a+c)/2; e=(c+b)/2; 二辛

我正在为辛普森规则编写一个Matlab程序,当程序到达
left_simpson=simpson(a,c,(e1)/2,level,level_max)时,我不断得到一个关于许多输出的错误设置tinf
left_simpson
simpson(a,c,(e1)/2,电平,电平最大值)有什么问题

函数辛普森(a、b、e1、电平、电平最大值)
级别=级别+1;
h=b-a;
c=(a+b)/2;
一个辛普森=h*(f(a)+4*f(c)+f(b))/6;
d=(a+c)/2;
e=(c+b)/2;
二辛普森=h*(f(a)+4*f(d)+2*f(c)+4*f(e))/2;
如果等级>=最高等级
disp('h')
辛普森结果=两个辛普森;
disp('达到最大级别')
disp(辛普森大学结果);
如果abs(两个辛普森-一个辛普森)<15*e1
辛普森结果=两个辛普森+(两个辛普森-一个辛普森)/15;
其他的
左辛普森=辛普森(a,c,(e1)/2,电平,电平最大值);
右辛普森=辛普森(c,b,(e1)/2,电平,电平最大值);
辛普森结果=左辛普森+右辛普森;
结束
结束

代码的第一行函数语句没有声明Simpson返回的内容。我不知道Matlab如何处理这样的声明。我认为您应该重写Simpson以显式返回一个或多个值。看看Matlab文档,了解如何做到这一点


一旦您声明了Simpson返回的内容,那么您就可以避免“输出太多”的问题。

您的函数语句,即代码的第一行,不会声明Simpson返回的内容。我不知道Matlab如何处理这样的声明。我认为您应该重写Simpson以显式返回一个或多个值。看看Matlab文档,了解如何做到这一点


一旦您声明了Simpson返回的内容,您可能就可以避免“输出过多”问题。

密切相关:密切相关:如果函数没有使用输出参数声明,它将不会输出任何内容(除非它打开图形、打印到命令行、保存数据或写入句柄对象)感谢@Jonas的澄清,我编写Matlab已经很久了,如果我知道的话,我已经忘记了在我从未编写代码的情况下会发生什么。如果函数没有用输出参数声明,它将不会输出任何东西(除非它打开图形、打印到命令行、保存数据或写入句柄对象)感谢@Jonas的澄清,我编写Matlab已经太久了,如果我知道的话,我已经忘记了在我从未编写代码的情况下会发生什么。
function Simpson(a,b,e1,level, level_max)


level = level + 1;

h = b - a;

c = (a+b)/2;

one_simpson = h*(f(a) + 4*f(c) + f(b))/6;

d = (a+c)/2;

e = (c+b)/2;

two_simpson = h*(f(a) + 4*f(d) + 2*f(c) + 4*f(e))/2;

if level >= level_max

    disp('h')

    simpson_result = two_simpson;

    disp('maximum levels reached')

    disp(simpson_result);

    if abs(two_simpson - one_simpson) < 15*e1

        simpson_result = two_simpson + (two_simpson - one_simpson)/15;

    else 
        left_simpson = Simpson(a,c,(e1)/2,level, level_max);

        right_simpson = Simpson(c,b,(e1)/2,level, level_max);

        simpson_result = left_simpson + right_simpson;

    end

end