3

我是 R 新手,以前使用过 MATLAB。我正在将 MATLAB 脚本转换为在 R 下运行。到目前为止一切顺利,除了现在绘制输出图。

MATLAB

这是绘制图形的matlab代码,使用imagesc

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

在哪里:

velocity: 1 x 50 矩阵

time: 1 x 10 矩阵

myplot: 10 x 50 矩阵

Imagesc的解释

更多细节可以在这里找到

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 可以在这里找到

问题:

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

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

这是没有clims 部分的 Matlab 和 Rimagesc函数的结果:http: //i.imgur.com/DzDjrzu.png[-35, 0]

如您所见,它们是相同的。

这是所需的结果,包括 Matlab[-35, 0]部分:http: //i.imgur.com/Qbx6jNI.png

左边的 Matlab 和右边的 R。左边的 Matlab 图像是我想要生成的,这都是由于clims [-35, 0]脚本的 Matlab 版本上的一个过程。

4

2 回答 2

3

我认为您可以获得与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)

在此处输入图像描述

filled.contour(z2)

在此处输入图像描述

于 2013-06-05T12:42:43.870 回答
1

当我阅读问题和链接材料以及通过 Google 找到的一些其他材料时,您需要 R 中的imageaxis函数的组合容量。其他一些材料说imagesc实际上只是重新标记了轴注释。(并且它具有一些您似乎不需要的额外颜色缩放能力。)从文件中读取图像可能需要一些额外的包。有一个grImport对 pdf 具有有用功能的包。还有一些专门针对特定格式的软件包,例如。tiffrtiff。如果你有一个模式大小的矩阵要绘制,你应该提供dput(mat). 在没有示例和具体说明的情况下,可以在示例部分的中间提供此示例的改编?image

> image(t(volcano)[ncol(volcano):1,])   # the default axes lebeling

 image(t(volcano)[ncol(volcano):1,], axes=FALSE)
 axis(1, at=seq(0,1,.1), labels= seq(0,100,10) )
 axis(2, at=seq(0,1,.1), labels= rev( seq(0,100,10)) )

在此处输入图像描述

于 2013-06-05T10:57:09.283 回答