python和matlab语法区别,matlab与python 语言区别总结

  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.sizesize(a)shape(a) or a.shapesize(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.Ta'a.conj().transpose() or a.conj().Ta * ba.dot(b)a .* ba * ba./ba/ba.^3a**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)=0a[a<0.5]=0a .* (a>0.5)a * (a>0.5)a(:) = 3a[:] = 3y=xy = x.copy()y=x(2,:)y = x[1,:].copy()y=x(:)y = x.flatten()1:10arange(1.,11.) or r_[1.:11.] or r_[1:10:10j]0:9arange(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 & blogical_and(a,b)a blogical_or(a,b)bitand(a,b)a & bbitor(a,b)a binv(a)linalg.inv(a)pinv(a)linalg.pinv(a)rank(a)linalg.matrix_rank(a)a\blinalg.solve(a,b) if a is square; linalg.lstsq(a,b) otherwiseb/aSolve a.T x.T = b.T instead[U,S,V]=svd(a)U, S, Vh = linalg.svd(a), V = Vh.Tchol(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)conjgradscipy.sparse.linalg.cgfft(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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: