首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将MATLAB转换为爬虫和对称的Python代码

无法将MATLAB转换为爬虫和对称的Python代码
EN

Stack Overflow用户
提问于 2016-02-28 05:34:07
回答 1查看 111关注 0票数 0

MATLAB代码:

代码语言:javascript
复制
n = 2048;
d = 1;
order = 2048;
nn = [-(n/2):(n/2-1)]';
h = zeros(size(nn),'single');
h(n/2+1) = 1 / 4;
odd = mod(nn,2) == 1;
h(odd) = -1 ./ (pi * nn(odd)).^2;
f_kernel = abs(fft(h))*2;
filt = f_kernel(1:order/2+1)';
w = 2*pi*(0:size(filt,2)-1)/order;
filt(w>pi*d) = 0;                     
filt = [filt , filt(end-1:-1:2)]; 
filt = repmat(filt',[1 1024]);

Python代码:

代码语言:javascript
复制
import numpy as np
import numpy.matlib
from numpy.matlib import repmat
d = 1
filt_length = 2048
nn = np.linspace(-1024,1023,2048)
nn = np.transpose(nn)
h = np.zeros((2048))
h[1024] = 0.25
odd = (nn%2)
for i in range(0,2048) :
    if odd[i] == 1 :
    h[i] = -1/((np.pi*nn[i])**2)       

f_kernel = abs(fft(h))*2
filt = np.transpose(f_kernel[0:1024])
w = (np.pi)*np.linspace(0,1,1025)

但是,我无法将MATLAB代码的最后3行转换为Python。有什么建议吗?MATLAB代码的最后一步创建了一个大小为2048的斜坡过滤器(在1024步中从0到1,在另外1024步中从1到0)。最后一种爬行动物的大小为filt (2048,1024)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-28 11:24:07

如果我在我的计算机上,我会启动Octave和IPython会话,并开始逐行复制代码。我会用更小的尺寸来观察结果。我会特别注意形状。因为我的Matlab是生锈的,所以这样做比在我的脑子里更容易。更可靠。

np.arangelinspace更容易使用。对于一维数组来说,transpose是不必要的。np.repeatnp.tile可能会执行repmat's工作。我不记得repmat到底做了什么。起初,我会复制循环,但当代码正常工作时,我会尝试替换它们。fft可能需要scipy

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35679118

复制
相关文章

相似问题

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