【问题标题】:Convert MATLAB code in Python在 Python 中转换 MATLAB 代码
【发布时间】:2018-07-26 11:05:13
【问题描述】:

我在 MATLAB 中有这段代码,我正在尝试在 Python 中转换它。

M=zeros(1,N);
i=1;
while i<=N
  ind=mod(p*(i-1)+1,N);
if ind==0
  ind=N;
end
while M(ind)~=0
  ind=ind+1;
end
M(ind)=i;
i=i+1;
ind=ind+1;
end
display(M);
M1=zeros(m,2/n_lay*n_wc);
for i=1:m
  M1(i,:)=M(2/n_lay*n_wc*(i-1)+1:2/n_lay*n_wc*i);
end    

我不知道如何转换 for 循环,到目前为止我所拥有的是下面的代码,我不知道如何转换行 "M1(i,:) = M( 2/n_layn_wc*(i-1)+1:2/n_layn_wci)*”这是我从 Python “无效语法”得到的问题。

import numpy, scipy, matplotlib
N = 24
p = 2
n_lay = 2
n_wc=1
M=zeros(1,N)
i=1;
while i<=N:
    ind=mod(p*(i-1)+1,N)
if ind==0 :
    ind=N
end
while M(ind)!=0:
    ind=ind+1
end
M(ind)=i
i=i+1
ind=ind+1
end
display(M)
M1=zeros(m,2/n_lay*n_wc)
for i in range (1,m):
    M1(i,:) = M(2/n_lay*n_wc*(i-1)+1:2/n_lay*n_wc*i)
end

【问题讨论】:

  • ??!?!?那个代码同时是MATLAB和python??
  • 是的,我在 MatLAB 中有初始代码,我将所有代码都更改为 python,但是我的 for 行有问题。
  • 那么你应该澄清“如何将Matlab(x:y)转换为python”之类的问题。另外,M1是矩阵吗?
  • 你的错误来源可能是1:2,括号应该是M附近索引的方括号。

标签: python matlab code-conversion


【解决方案1】:

转换后的代码中有很多语法错误和其他错误。所有数组都应从圆括号转换为方括号。虽然这不起作用,但您的代码应该看起来像这样:

import numpy, scipy, matplotlib
N = 24
p = 2
n_lay = 2
n_wc=1
M=[]
i=1;
while i<=N:
    ind=(p*(i-1)+1)%N
if ind==0 :
    ind=N

while M[ind]!=0:
    ind=ind+1

M[ind]=i
i=i+1
ind=ind+1


M1=[]
for i in range (1,M):
    M1[i,:] = M[2/n_lay*n_wc*(i-1)+1:2/n_lay*n_wc*i]

另外,如果你想更新添加元素到一个数组,你应该使用“array.append(element)”。

【讨论】:

  • 我在运行这段代码时出错,它是“TypeError: can only concatenate list (not "int") to list
  • 其中一个括号有问题。但是在第 8 行创建了一个无限循环,您可能需要修复它。
猜你喜欢
  • 2012-07-25
  • 1970-01-01
  • 2014-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-30
  • 1970-01-01
相关资源
最近更新 更多