已知有矩阵nu 和 Q,应该怎么写程序才能得到如图所示的矩阵 ek ?
之前实在matlab上做的,现在想转到numpy上但不知道程序怎么写(就是个简单的循环但是不知道在numpy是什么格式)
自己写的numpy报错:
ek=np.zeros([6,4]);
q=np.array([2.588 2.964 4.029 1.4]);
nu=np.array([[1,0,1,0],[1,1,2,0],[1,1,1,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]]);
Q=np.array([0.848,0.54,1.2,1.224,0.901,1.4]);
Q_trans=np.transpose(Q);
for i in range(6):
ek[:,1]= np.multiply(nu[:,1]*Q_trans)
附原来matlab上写的(运行顺利)
ek=zeros(6,4);
q=[2.588 2.964 4.029 1.4];
nu = [1 0 1 0 ; 1 1 2 0 ; 1 1 1 0 ; 0 1 0 0 ; 0 0 1 0 ; 0 0 0 1];
for i = 1:6
ek(i,:) = nu(i,:)*Q(i)./q;
end
如果可以的话,我能给各位发matlab的程序,然后大神帮我翻译成numpy的格式吗
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
>>> import numpy as np
>>> nu = np.array([[1,0,1,0],[1,1,2,0],[1,1,1,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]])
>>> Q = np.array([0.848,0.54,1.2,1.224,0.901,1.4])
>>> q = np.dot(Q, nu)
>>> q
array([2.588, 2.964, 4.029, 1.4 ])
>>> ek = np.multiply(Q.reshape(6,1),nu)/q
>>> ek
array([[0.32766615, 0. , 0.21047406, 0. ],
[0.20865533, 0.18218623, 0.26805659, 0. ],
[0.46367852, 0.4048583 , 0.29784066, 0. ],
[0. , 0.41295547, 0. , 0. ],
[0. , 0. , 0.22362869, 0. ],
[0. , 0. , 0. , 1. ]])