matlab - 为什么使用 switch 命令时他的函数不返回解决方案?

标签 matlab

我计划使用 switch 命令来使用具有不同 ODE 方法的多个代码块。根据用户输入的“差异”内容,代码将运行特定的代码块。关于为什么当我在命令窗口中输入 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'; %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 is a character equal to '1'


切换数字大小写:

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

返回:

diff is a number equal to 1

关于matlab - 为什么使用 switch 命令时他的函数不返回解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66978321/

相关文章:

php - Matlab 定时器函数中的 urlread 错误

Matlab:打开和关闭 try/catch 以进行调试

matlab - 基于两个向量 MATLAB 构造此矩阵

database - 使用 matlab 连接到远程 postgreSQL 数据库

与跨行和列执行的多个 fft (1D) 相比,Matlab fft2 (2D) 给出了交换值

R 类似于 matlab/GNU Octave 中的 str() 函数

file - 列出给定正则表达式/一组扩展名的目录中的所有文件(Matlab)

c++ - Hex-rays、MATLAB、MEX、转换 uintptr_t 失败

c++ - MATLAB Coder hello world 从头到尾

matlab - MATLAB 是否执行尾调用优化?