如何解决将Matlab转换为Python,重新缩放问题
我正在尝试将以下代码从MATLAB转换为Python:
x = [0:n/2-1,-n/2:-1];
[Y,X] = meshgrid(x,x);
S = (X.^2 + Y.^2)*(2/n)^2;
这是我目前实施的:
x = [np.arange(0,256/2-1),np.arange(-256/2,-1)]
[Y,X] = np.meshgrid(x,x)
S = (X**2 + Y**2)*(2/256)**2
如果我像这样使用它,矩阵的形状为(254,254),但是必须为(256,256)
我还尝试将第一行更改为:
x = [np.arange(0,256/2),0)]
这样我的矩阵大小合适,但是我不认为这是正确的实现,因为生成的图像看起来不正确。
非常感谢您。
解决方法
问题出在以下一行:
x = [np.arange(0,256/2-1),np.arange(-256/2,-1)]
x的最后一个元素是-2,当python初始化一个数组时,它将排除您在第二个参数中指定的值,在这种情况下为-1。最重要的是,x的初始化方式与MATLAB中的向量不同,它将生成一个包含两个元素的列表,第一个索引中包含127个元素的数组。还请注意,python索引从0开始,MATLAB索引从1开始。
len([np.arange(0,-1)]) # 2
len([np.arange(0,-1)][0]) # 127
如果将第一行更改为:
x = np.append(np.arange(0,256/2),0))
x然后将匹配MATLAB中的向量,子序列将是正确的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。