V=V( idx)在matlab,在MATLAB代码中,f似乎总是正的,但在Python代码中,f也得到负值...

如何将following MATLAB代码转换为Python?Here is my solution,但结果并不完全相同。例如,f在MATLAB代码中似乎总是正的,但是在我的Python代码中,f也会得到负值。

有什么办法修理这个程序吗?

我最关心的是这些:

MATLAB软件:for k = 1 : nx

j = k+2;

Python:

^{pr2}$

MATLAB软件:[V,D] = eig(A, B);

DD = diag(D);

keep_idxs = find( ~isinf(DD) );

D = diag( DD(keep_idxs) );

V = V(:, keep_idxs);

[lambda, idx] = min(diag(D));

f = V(:,idx);

Python:w,vr = scipy.linalg.decomp.eig(A,B)

w = w.real

vr = vr.real

w = w[2:-1-2]

lambda_ = w.min()

idx = w.argmin()

f = vr[:,idx]

MATLAB软件:f = f(3:end-2);

[nf, nf_idx] = max(abs(f)); % L_infty norm

n2 = f(nf_idx); % normalize sign away, too

f = f ./ n2;

Python:f = f[2:-1-1]

nf = max(np.absolute(f))

nf_idx = np.absolute(f).argmax()

nf_idx = np.ma.argmax(f)

n2 = f[nf_idx]

f = f/n2

MATLAB软件:xx = -kappa:h:kappa;

Python:xx = np.arange(-kappa, kappa+h, h)

它们是等价的吗?如果是,为什么它们不能产生完全相同的结果呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值