python中的numpy.sum()和matlab中的sum()在输出上的区别。

我正在将MATLAB代码转换为Python。

这是我在python中的代码。

import numpy as np
import math

n=150
L=1
inter=L/n
y=np.linspace(inter/2,L-inter/2,n).transpose()
E=(210000000000)*np.ones(n)
Rho=7800*np.ones(n)
PI=math.pi
A=np.exp( 5+2*y*(np.sin(2*PI*y/L)) )*0.000001

在这之前都很好,没有任何数值上的差异,也没有任何问题 直到我不得不执行这段MATLAB代码。

Mass=sum(Rho*inter.*A)

我试着用 np.sum(Rho*inter*A) 而只是 Rho*inter*A

第一个案例我得到了一个答案 1.0626206716847877 但MATLAB返回一个150元素的数组。

在scond的情况下,我得到了一个 ndarray 像我想要的,但值是不一样的,我在MATLAB中得到的。

我在MATLAB中得到的值。matlab的值粘贴栏

我在python中得到的值。python values pastebin

我做错了什么?

解决方案:

(Rho[:,None]*inter*A).sum(axis=0) 

匹配你的MATLAB pastebin。

或者使用 einsum 来整理轴。

np.einsum('i,j->j', Rho,inter*A)

这只是减少。

Rho.sum() * inter*A

这真的是你在MATLAB里要做的事情吗?

如果您展示一下用于创建的实际MATLAB代码,可能会有所帮助 Rho, A 等。

Mass=sum(Rho*inter.*A)

规模有多大 RhoA 在MATLAB中? 一个可能是[1×150],但另一个? 是 Rho 也有[1×150],或[150×150]。 〔150×150〕。* 是矩阵乘法,就像 @ 在numpy中,但 .* 是元素方面。

numpy 编码 y, RhoA 都有形状(150,)。 上的转置。y 什么也不做。 Rho*inter*A 是元素乘法,也会产生一个(150,)。

给TA打赏
共{{data.count}}人
人已打赏
未分类

Xamarin.Forms: 当顶部有对象(如一个标签和另一个图像)时,捕捉点击按钮的最佳方法。

2022-9-11 7:31:38

未分类

'.join(searchfor), na=False) In my column VALUE, I have values like "AAAA", "BBBB", "ABAB", "BABA", "CAAB" Now I want to use my function to ...

2022-9-11 7:42:35

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索