关于matlab转python代码的基础规则, 参见: NumPy for MATLAB users
这里列出我在matlab转python代码过程中, 涉及到的其他matlab函数, 这些函数在"NumPy for MATLAB users"中可能不存在.
如果你觉得这篇博客,对你有帮助, 欢迎收藏订阅!
| matlab | python | note |
|---|---|---|
| d = bi2de(b,p,flg) | d = bi2de(b,p,left_msb) | flg='left-msb'时, left_msb=True; flg='right-msb'时, left_msb=False. 参见: bi2de |
| CC = bwconncomp(BW,conn) | CC = bwconncomp(BW,conn) | 参见: matlab函数(bwconncomp)的python实现 |
| Y = circshift(A, K) | Y = circshift(A, K) | 参见: circshift |
| w = conv(u,v,shape) | w = numpy.convolve(u,v, shape) | |
| [f,x] = ecdf(y) | f, x = ecdf(y) | 参见: ecdf |
| b = fir1(n, Wn) | b = scipy.signal.firwin(n+1, Wn) | |
| y = pskmod(x,M,ini_phase) | y = pskmod(x,M,ini_phase) | 参见: pskmod |
import numpy as np
def bi2de(b: np.ndarray, p: int = 2, left_msb = False):
if left_msb == True:
b = b[::-1]
if b.ndim == 1:
d = 0
for i, bi in enumerate(b):
d += bi * (p**i)
else:
d = np.zeros(b.shape[-1])
for i, bi in enumerate(b):
d += bi * (p**i)
return d
circshift
import numpy as np
def circshift(A, K):
return np.hstack((A[-K:], A[:-K]))
ecdf
与matlab中的ecdf功能不同, matlab中deecdf返回的f(累计概率)为线性递增, 这里的ecdf返回的x为线性递增.
import numpy as np from statsmodels.distributions.empirical_distribution import ECDF def ecdf(y): ecdf0 = ECDF(y) x = np.linspace(np.min(y), np.max(y), len(y)+1) f = ecdf0(x) return f, xpskmod
import numpy as np
def pskmod(x: np.ndarray, M: int, ini_phase: float = 0):
theta = 2*np.pi*x/M
y = np.exp(1j*(theta + ini_phase))
return y



