我正在尝试将matlab代码转换为python。下面是我编写的python代码
import numpy as np
import numpy.matlib as nm
import matplotlib.pyplot as plt
N = 1000; # time points
M = 20; # channels
nTrials = 50; # number of trials
t = np.linspace(0,6*np.pi,N);
img=(nm.repmat(np.sin(t),M,1))
plt.imshow(img);
plt.colorbar()
plt.show()
输出如下所示
MATLAB代码
N = 1000; % time points
M = 20; % channels
nTrials = 50; % number of trials
% time vector (radian units)
t = linspace(0,6*pi,N);
img=repmat( sin(t),M,1 )
imagesc(img)
matlab中的输出如下所示
或者,我尝试对简单的样本数据MATLAB做同样的事情。
C = [0 2 4 6; 8 10 12 14; 16 18 20 22];
imagesc(C)
colorbar
PYTHON
C =np.array([0, 2 ,4 ,6, 8, 10, 12, 14, 16, 18, 20, 22])
C=np.reshape(C,(3,4))
plt.imshow(C);
plt.colorbar()
plt.show()
两者中的图像输出是相同的
我不明白为什么在sin wave中图像被压缩
发布于 2019-06-03 01:07:40
Matlab自动缩放y轴以与x匹配。这就是为什么即使x范围比y范围大50倍,您也能看到接近平方的图像。
要在matplotlib上实现类似的效果,请尝试将y范围设置为类似于x,例如设置M=800。
或者,如果您不想更改M,您仍然可以使用matplotlib缩放y范围:
plt.imshow(img)
plt.axis('tight')
plt.colorbar()
plt.show()
请注意,在这种情况下,y轴的范围保持不变。
https://stackoverflow.com/questions/56415562
复制相似问题