Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.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 为什么';t此函数在使用switch命令时返回解决方案?_Matlab - Fatal编程技术网

Matlab 为什么';t此函数在使用switch命令时返回解决方案?

Matlab 为什么';t此函数在使用switch命令时返回解决方案?,matlab,Matlab,我计划使用switch命令使用具有不同ODE方法的多个代码块。根据用户作为“diff”输入的内容,代码将运行特定的代码块。当我在命令窗口中输入ODE(@(x,y)x^2,1,2,4,7,1)时,这个函数为什么不返回任何内容?我尝试在第一行重新分配输出变量,但没有效果 function [x1,y1] = ODE(f,x0,y0,xn,h,diff) %h = step size switch diff case '1' h=(y0-x0)/xn;

我计划使用switch命令使用具有不同ODE方法的多个代码块。根据用户作为“diff”输入的内容,代码将运行特定的代码块。当我在命令窗口中输入
ODE(@(x,y)x^2,1,2,4,7,1)
时,这个函数为什么不返回任何内容?我尝试在第一行重新分配输出变量,但没有效果

function [x1,y1] = ODE(f,x0,y0,xn,h,diff)

%h = step size

switch diff
    case '1'
            h=(y0-x0)/xn; 
            y1=zeros(1,xn+1);
            x1=x0:h:y0;
            y1(1)=x0;
            for j=1:xn
                k1=feval(f,x1(j),y1(j));
                k2=feval(f,x1(j+1),y1(j)+h*k1);
                y1(j+1)=y1(j)+h*(h(1)+(h/2)*(k1+k2));
            end
            r=[x1',y1'];
            return        

end


将行从
case'1'
更改为
case 1
可能会奏效。或者,您可以使用
ODE(@(x,y)x^2,1,2,4,7,'1')
格式的字符输入调用该函数

字符的开关盒: 返回:

diff是一个等于“1”的字符


数字开关盒: 返回:

diff是一个等于1的数字

diff = '1'; %Character input%

switch diff
    case 1     
        disp("diff is a number equal to 1");
    case '1'
        disp("diff is a character equal to '1'") 
end
diff = 1; %Numerical input%

switch diff
    case 1     
        disp("diff is a number equal to 1");
    case '1'
        disp("diff is a character equal to '1'") 
end