Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matlab中imagesc\imshow像素之间的平滑,如matplotlib imshow_Matlab_Matplotlib_Plot - Fatal编程技术网

matlab中imagesc\imshow像素之间的平滑,如matplotlib imshow

matlab中imagesc\imshow像素之间的平滑,如matplotlib imshow,matlab,matplotlib,plot,Matlab,Matplotlib,Plot,当我在python中使用matplotlib的imshow()来表示一个小矩阵时,它会在像素之间产生某种程度的平滑。使用imshow或imagesc时,有没有办法在Matlab中实现这一点 例如,使用matplotlib这是标识矩阵的输出imshow(eye(3)): 在matlab中,imagesc(眼睛(3)): 我能想到的一个解决方案是使用一些滤波器进行外推和平滑,但这与单像素级别无关。我也试过,但都不满意。Myaa在应用之后使用了所有GUI,因此我无法放大或缩小,而导出图会使我将图形

当我在python中使用matplotlib的
imshow()
来表示一个小矩阵时,它会在像素之间产生某种程度的平滑。使用
imshow
imagesc
时,有没有办法在Matlab中实现这一点

例如,使用matplotlib这是标识矩阵的输出
imshow(eye(3))

在matlab中,
imagesc(眼睛(3))


我能想到的一个解决方案是使用一些滤波器进行外推和平滑,但这与单像素级别无关。我也试过,但都不满意。Myaa在应用之后使用了所有GUI,因此我无法放大或缩小,而导出图会使我将图形保存到一个文件中,然后对该文件进行操作,这太麻烦了。那么,有没有一种方法可以告诉matlab的图形引擎(java或其他什么)在保持图形GUI良好可用性的同时进行平滑处理?

这是由于默认插值设置为“双线性”。我认为“无”是一个更直观的默认值。可以使用以下命令更改默认插值方法(例如插值=无):

有关自定义Matplotlib的更多信息,请访问

下面的代码将概述所有插值方法:

methods = [None, 'none', 'nearest', 'bilinear', 'bicubic', 'spline16', 'spline36', 'hanning', 'hamming', \
           'hermite', 'kaiser', 'quadric', 'catrom', 'gaussian', 'bessel', 'mitchell', 'sinc', 'lanczos']

grid = np.random.rand(4,4)

fig, ax = plt.subplots(3,6,figsize=(12,6), subplot_kw={'xticks': [], 'yticks': []})
fig.subplots_adjust(hspace=0.3, wspace=0.05)

ax = ax.ravel()

for n, interp in enumerate(methods):
    ax[n].imshow(grid, interpolation=interp)
    ax[n].set_title(interp)

在imshow命令中添加interpolation='none',否则这是一个非常好的答案。你说得对,我已经完善了我的初始答案,谢谢你指出这一点。不过,默认的rcParam仍然可以设置为“无”。我认为大多数图形软件都假设(显然包括Matlab)最近邻为默认值,这使得Lama的惊讶可以理解。对不起,@Lama不是在问如何在Matlab中进行平滑处理,而是问如何从matplotlib中删除它?实际上我是在问。。。答案很好,全部(+1),但我确实希望在matlab中具有相同的插值效果(例如,不需要插值3x3矩阵)@Lama,很抱歉造成混淆,我误解了。对我来说,插值一个单位矩阵听起来有点奇怪,但总的来说,这当然是一个公平的问题。在Matlab中有一个imresize函数,它允许双线性插值。比如:outgrid=imresize(ingrid、scalefactor、“双线性”)。但您需要计算Matplotlib“动态”执行的所需输出大小。
methods = [None, 'none', 'nearest', 'bilinear', 'bicubic', 'spline16', 'spline36', 'hanning', 'hamming', \
           'hermite', 'kaiser', 'quadric', 'catrom', 'gaussian', 'bessel', 'mitchell', 'sinc', 'lanczos']

grid = np.random.rand(4,4)

fig, ax = plt.subplots(3,6,figsize=(12,6), subplot_kw={'xticks': [], 'yticks': []})
fig.subplots_adjust(hspace=0.3, wspace=0.05)

ax = ax.ravel()

for n, interp in enumerate(methods):
    ax[n].imshow(grid, interpolation=interp)
    ax[n].set_title(interp)