首页 > 解决方案 > 开关/案例 Matlab。什么是 Python 等价物?

问题描述

我需要帮助将此 switch 语句从 Matlab 转换为与 Python 等效的语句。有没有像 if 语句那样简单的方法?

switch nmax
    case 0
        Tk( 1, : ) = ones( 1, length( x ) )/sqrt(N);
    case 1
        Tk( 2, : ) = (w ./ w1).*ones( 1, length( x ) )/sqrt(N);
    otherwise
        Tk( 1, : ) = ones( 1, length( x ) )/sqrt(N);
        Tk( 2, : ) = (w ./ w1).*Tk( 1, : );

        for m = 3:nmax
            ni=m-1;
            w2_A = N^2-ni^2;
            w2_B = (2*ni+1)*(2*ni-1);
            w2   = ni*sqrt(w2_A/w2_B);
            Tk(m,:) = w./w2.*Tk(m-1,:) - w1/w2*Tk(m-2,:);
        
            w1 = w2;
            T = Tk(m,:);
            for k=0:ni
                Tk(m,:) =  Tk(m,:) - sum(T.*Tk(k+1,:))*Tk(k+1,:);
            end
            h=sqrt(sum(Tk(m,:).^2));
            Tk(m,:) = Tk(m,:)/h;
        end

标签: pythonmatlab

解决方案


Python 没有 switch 语句,所以你必须使用 if/else

if nmax == 0: # this is equal to your case 0
    # do something
elif nmax == 1: # this is equal to your case 1
    # do something
else: # this is equal to your otherwise case
    # do something

推荐阅读