将MATLAB的“imagesc”函数转换为使用R的'matlab'库中的R''imagesc'

时间:2013-06-05 10:19:33

标签: r matlab

我是R的新手,之前使用过MATLAB。我正在转换一个MATLAB脚本在R下运行。到目前为止,除了现在绘制输出图之外还好。

MATLAB

以下是使用imagesc

绘制图表的matlab代码

imagesc(velocity,time,myplot,[-35, 0]);

其中:

velocity:1 x 50矩阵

time:1 x 10矩阵

myplot:10 x 50矩阵

Imagesc

的说明

更多详情can be found here

  

imagesc(x,y,C)将C显示为图像,并使用向量x和y指定x轴和y轴的边界。如果x(1)> x(2)或y(1)> y(2),图像分别左右或上下翻转。如果x和y是标量,则图像将转换为指定位置(x,y),以使图像的左上角从(x,y)开始。

- [R

R的imagesc which can be found here

版本

问题:

如何在Matlab clims部分中将数据值重现为colormap值,在此处找到:http://i.imgur.com/eVy6V8N.png,这是Matlab示例的[-35, 0]部分。

它将特定范围之外的数据值映射到相同的颜色限制,有效地充当图像上噪声的过滤器。

以下是没有imagesc攀登部分的Matlab和R [-35, 0]函数的结果:http://i.imgur.com/DzDjrzu.png

正如你所看到的,它们完全相同。

这是期望的结果,其中包括:http://i.imgur.com/Qbx6jNI.png

的Matlab [-35, 0]部分

左边的Matlab和右边的R.左边的Matlab图像是我想要生成的,而这完全归功于脚本的Matlab版本上的一个进程clims [-35, 0]

2 个答案:

答案 0 :(得分:2)

我认为您可以通过预处理数据获得与clims相同的效果,以便将范围之外的值压缩到范围限制。

z = matrix(rnorm(10*10, sd=3), 10)

z2 <- z
z2[z2 > 3] <- 3
z2[z2 < -5] <- -5

# or simply
z2 = scales::squish(z, c(-5, 3))

filled.contour(z)

enter image description here

filled.contour(z2)

enter image description here

答案 1 :(得分:1)

当我阅读问题以及链接材料和Google发现的其他材料时,您需要R中imageaxis函数的组合容量。其他一些材料说{ {1}}实际上只重新关联轴注释。 (并且它有一些额外的颜色缩放容量,你似乎没有请求。)从文件中读取图像可能需要一些额外的包。有一个imagesc包,其中包含pdf的有用功能。还有专门用于特定格式的包,例如。 grImporttiff。如果您要绘制模式大小的矩阵,则应提供rtiff。在没有示例的情况下,特定方向可以在dput(mat)的示例部分的中间提供此示例的修改。

?image

enter image description here