python - 开关/案例 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
解决方案
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