首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将matlab代码转换为python (scipy)

将matlab代码转换为python (scipy)
EN

Stack Overflow用户
提问于 2013-04-16 06:55:23
回答 1查看 2K关注 0票数 1

我试图将matlab代码翻译成python:

代码语言:javascript
复制
T = length(z);
lambda = 10;
I = speye(T)
D2 = spdiags(ones(T-2,1)*[1 -2 1],[0:2],T-2,T);
z_stat = (I-inv(I + lambda^2*D2'*D2))*z;

我现在得到的是:

代码语言:javascript
复制
T = len(signal)
lam = 10;
I  = np.identity(T)
D2 = scipy.sparse.spdiags(np.ones((T-2,1),dtype=np.int)*[1,-2,1],(range(0,3)),T-2,T);

现在我发现了这个错误

“scipy.sparse.sp...ge(0,3),T-2,T)”ValueError:对角数(298)不匹配偏移数(3) args元组:(‘对角线数(298)不匹配偏移数(3),

当查看文档时,matlab函数和python函数非常相似。虽然我可能错过了一个不同的地方。我现在的问题是:我做错了什么?

编辑:Z是一个长度为300的数组

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-16 08:41:35

如果将筛选器数据转到spdiags,那么在两个包中都会得到相同维度的答案:

代码语言:javascript
复制
# numpy/scipy
filt = [1,-2,1]* np.ones((1,T-2),dtype=np.int).T
D2 = scipy.sparse.spdiags(data.T, (range(0,3)),T-2,T)
np.shape(D2)
>>> (298, 300)

% matlab check
D2 = spdiags(ones(T-2,1)*[1 -2 1],[0:2],T-2,T)
size(D2)
ans =
  298   300
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16030620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档