python和matlab语法区别,matlab与python 语言区别总结
本文主要介绍了Python中Matlab函数(Numpy)的对应关系,具有很好的参考价值。希望对你有帮助。如有错误或不足之处,请不吝赐教。
目录
Matlab函数对应(numpy)numpy和Matlab 1之间的运算。常用操作(参考NUMPY官方描述)2。线性变换(参考NUMPY官方描述)
Matlab函数对应关系(Numpy)
首先给出了官网链接,详细讲解了如何在Python下使用Numpy在Matlab中实现相同的函数功能。
用Python写代码的时候,博主想用Python实现Matlab中某个函数的功能(比如Repmat函数),但是用语句的时候
从numpy.matlib导入repmat
A=repmat(B,1,2)
调用工具包时,虽然功能可以正常实现,但PyCharm下会报出警告:
从1.19.0开始,不推荐从numpy.matlib导入。matrix子类不是表示矩阵或处理线性代数的推荐方法(参见https://docs . scipy . org/doc/numpy/user/numpy-for-MATLAB-users . html)。请调整您的代码以使用常规ndarray。
然后查阅资料发现,从1.19.0版本开始,numpy不再推荐使用numpy.matlib实现相应的功能。
所以你可以按照官网上的说明实施更换。
这里有一个片段:
其他的可以在官网找到。
Numpy与Matlab互转操作
在日常使用中,matlab作为机器学习和深度学习的模型训练工具,而python则在线实现模型落地。因为matlab和numpy之间不可避免的有些运算需要相互转换。
1、常用操作(参考numpy官方说明)
MATLABnumpy解释helpfundinfo (func)或help (func)或func?(在Ipython中)从func的函数中获取帮助请参阅注释帮助查找函数类型funcsource(func)或func的定义?马鞭(inIpython)检查函数源代码a ba和b逻辑运算和运算a ba或b逻辑运算或运算1*i,1*j,1i,1j1j复数EPSNP。spacing(1)1和最小浮点数Ode45Scipy之间的距离。整合。求解_ IVP (f)求解同阶微分方程-库塔4,ODE15S SCIPY。整合。SOLVE _ IVP (f,method= BDF )求解变阶微分方程
2、线性变换(参考numpy官方说明)
MATLABNumPyndims(a)ndim(a)或a.ndimnumel(a)siz
e(a) or a.size
| size(a) | shape(a) or a.shape |
| size(a,n) | a.shape[n-1] |
| [ 1 2 3; 4 5 6 ] | array([[1.,2.,3.], [4.,5.,6.]]) |
| [ a b; c d ] | vstack([hstack([a,b]), hstack([c,d])]) or bmat('a b; c d') |
| a(end) | a[-1] |
| a(2,5) | a[1,4] |
| a(2,:) | a[1] or a[1,:] |
| a(1:5,:) | a[0:5] or a[:5] or a[0:5,:] |
| a(end-4:end,:) | a[-5:] |
| a(1:3,5:9) | a[0:3][:,4:9] |
| a([2,4,5],[1,3]) | a[ix_([1,3,4],[0,2])] |
| a(3:2:21,:) | a[ 2:21:2,:] |
| a(1:2:end,:) | a[ ::2,:] |
| a(end:-1:1,:) or flipud(a) | a[ ::-1,:] |
| a([1:end 1],:) | a[r_[:len(a),0]] |
| a.' | a.transpose() or a.T |
| a' | a.conj().transpose() or a.conj().T |
| a * b | a.dot(b) |
| a .* b | a * b |
| a./b | a/b |
| a.^3 | a**3 |
| (a>0.5) | (a>0.5) |
| find(a>0.5) | nonzero(a>0.5) |
| a(:,find(v>0.5)) | a[:,nonzero(v>0.5)[0]] |
| a(:,find(v>0.5)) | a[:,v.T>0.5] |
| a(a<0.5)=0 | a[a<0.5]=0 |
| a .* (a>0.5) | a * (a>0.5) |
| a(:) = 3 | a[:] = 3 |
| y=x | y = x.copy() |
| y=x(2,:) | y = x[1,:].copy() |
| y=x(:) | y = x.flatten() |
| 1:10 | arange(1.,11.) or r_[1.:11.] or r_[1:10:10j] |
| 0:9 | arange(10.) or r_[:10.] or r_[:9:10j] |
| [1:10]' | arange(1.,11.)[:, newaxis] |
| zeros(3,4) | zeros((3,4)) |
| zeros(3,4,5) | zeros((3,4,5)) |
| ones(3,4) | ones((3,4)) |
| eye(3) | eye(3) |
| diag(a) | diag(a) |
| diag(a,0) | diag(a,0) |
| rand(3,4) | random.rand(3,4) |
| linspace(1,3,4) | linspace(1,3,4) |
| [x,y]=meshgrid(0:8,0:5) | mgrid[0:9.,0:6.] or meshgrid(r_[0:9.],r_[0:6.] |
| ogrid[0:9.,0:6.] or ix_(r_[0:9.],r_[0:6.] | |
| [x,y]=meshgrid([1,2,4],[2,4,5]) | meshgrid([1,2,4],[2,4,5]) |
| ix_([1,2,4],[2,4,5]) | |
| repmat(a, m, n) | tile(a, (m, n)) |
| [a b] | concatenate((a,b),1) or hstack((a,b)) or column_stack((a,b)) |
| [a; b] | concatenate((a,b)) or vstack((a,b)) or r_[a,b] |
| max(max(a)) | a.max() |
| max(a) | a.max(0) |
| max(a,[],2) | a.max(1) |
| max(a,b) | maximum(a, b) |
| norm(v) | sqrt(dot(v,v)) or np.linalg.norm(v) |
| a & b | logical_and(a,b) |
| a b | logical_or(a,b) |
| bitand(a,b) | a & b |
| bitor(a,b) | a b |
| inv(a) | linalg.inv(a) |
| pinv(a) | linalg.pinv(a) |
| rank(a) | linalg.matrix_rank(a) |
| a\b | linalg.solve(a,b) if a is square; linalg.lstsq(a,b) otherwise |
| b/a | Solve a.T x.T = b.T instead |
| [U,S,V]=svd(a) | U, S, Vh = linalg.svd(a), V = Vh.T |
| chol(a) | linalg.cholesky(a).T |
| [V,D]=eig(a) | D,V = linalg.eig(a) |
| [V,D]=eig(a,b) | V,D = np.linalg.eig(a,b) |
| [V,D]=eigs(a,k) |
| [Q,R,P]=qr(a,0) | Q,R = scipy.linalg.qr(a) |
| [L,U,P]=lu(a) | L,U = scipy.linalg.lu(a) or LU,P=scipy.linalg.lu_factor(a) |
| conjgrad | scipy.sparse.linalg.cg |
| fft(a) | fft(a) |
| ifft(a) | ifft(a) |
| sort(a) | sort(a) or a.sort() |
| [b,I] = sortrows(a,i) | I = argsort(a[:,i]), b=a[I,:] |
| regress(y,X) | linalg.lstsq(X,y) |
| decimate(x, q) | scipy.signal.resample(x, len(x)/q) |
| unique(a) | unique(a) |
| squeeze(a) | a.squeeze() |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。